# ArchiTools — QA Checklist (Phase 3 Features) > Test all features implemented in Phase 3 (sessions 2026-02-27 through 2026-02-28). > Open each URL on http://10.10.10.166:3000 and check every item. > Mark with [x] when verified, note bugs inline. --- ## 1. Registratura `/registratura` ### 1.1 Core Registry (Tab "Registru") - [ ] Create new entry — form loads, all fields visible - [ ] Registration number auto-generated correctly (no duplicates) - [ ] Direction toggle (Intrat/Ieșit) works - [ ] Dynamic document types in dropdown (Cerere, Adresă, Aviz, Apel telefonic, Videoconferință, etc.) - [ ] "Tip nou" inline input creates a new document type + Tag Manager tag - [ ] Sender/Recipient autocomplete searches Address Book contacts - [ ] "Creează contact" button appears when typed name doesn't match - [ ] Quick contact creation popup works (Name, Phone, Email) - [ ] Responsabil (Assignee) field with autocomplete - [ ] Backdating support: "Data document" field accepts past dates, registrationDate shows in table if different - [ ] Thread parent selector: can search and link to another entry - [ ] Thread view (GitBranch icon) shows parent → current → children tree - [ ] File attachment upload with loading indicator ("Se încarcă X fișiere...") - [ ] Submit button disabled + spinner during upload/save (no double-click) - [ ] "Actualizează" button feedback (spinner when saving edits) - [ ] Filters work: direction, status, document type, search - [ ] Close entry: resolution selector (Finalizat/Aprobat tacit/Respins/Retras/Altele) - [ ] Closure banner shows resolution badge ### 1.2 Recipient Registration Fields (Ieșit only) - [ ] "Nr. înregistrare destinatar" and "Data înregistrare destinatar" visible only for Ieșit entries - [ ] Fields save correctly ### 1.3 Document Expiry - [ ] Expiry date field visible and saves - [ ] Expiry alert days field visible and saves ### 1.4 Legal Deadlines (Tab "Termene legale") - [ ] Deadline dashboard loads with stats cards - [ ] 6 stat cards visible (total, active, resolved, overdue, tacit, chain) - [ ] Add deadline wizard: category → type → date preview (3 steps) - [ ] 16+ deadline types across 5 categories load correctly - [ ] Deadline card shows expandable audit log ("Istoric modificări") - [ ] Resolve deadline works - [ ] Alert banners show in registry tab when deadlines are overdue/approaching - [ ] Alert count badge on tab header --- ## 2. Tag Manager `/tag-manager` ### 2.1 Core Tags - [ ] Tag list loads (project, phase, activity, document-type, custom) - [ ] Create tag with all fields (label, category, color, scope, company) - [ ] Mandatory validation: project tags require projectCode + companyId - [ ] Edit tag works - [ ] Delete tag works - [ ] US/SDT project seeds present (US-001...US-010, SDT-001...SDT-010) ### 2.2 ManicTime Sync Panel - [ ] ManicTime sync panel visible below stats - [ ] "Verifică conexiunea" button works (expect error in dev if no file mounted) - [ ] Stats grid shows 4 cards (ArchiTools tags, ManicTime tags, new, modified) - [ ] Import button shows confirmation dialog - [ ] Export button shows confirmation dialog - [ ] Full sync button shows confirmation dialog - [ ] Success/error messages display correctly - [ ] On production: verify Tags.txt file path resolves (requires SMB mount) --- ## 3. IT Inventory `/it-inventory` ### 3.1 Inventory Tab - [ ] Equipment list loads - [ ] Dynamic equipment types (Server, Switch, UPS, Patch Panel, + custom) - [ ] "Tip nou" inline input creates new equipment type - [ ] Status includes "Închiriat" (rented) with purple pulse animation - [ ] Filter by type, status, company works - [ ] Search filter works - [ ] Rack position fields (U position, size) show only for RACK_MOUNTABLE_TYPES ### 3.2 Rack 42U Tab - [ ] Rack visualization renders with 42 slots - [ ] U1 at bottom, U42 at top - [ ] Color-coded status slots (active=green, maintenance=amber, decommissioned=red, rented=purple) - [ ] Tooltips on hover showing equipment details - [ ] Empty slots shown correctly --- ## 4. Address Book `/address-book` ### 4.1 Dynamic Types - [ ] Contact type dropdown shows default types + custom types - [ ] Can add new type via "Tip nou" input - [ ] Custom types persist and appear for future contacts ### 4.2 vCard Export - [ ] Download icon on contact card hover → .vcf file downloads - [ ] vCard contains correct data (name, phone, email, company) ### 4.3 Registratura Reverse Lookup - [ ] Detail view (FileText icon) shows Registratura entries where contact is sender/recipient --- ## 5. Password Vault `/password-vault` ### 5.1 Core - [ ] CRUD credentials works - [ ] Email field visible and saves - [ ] URLs rendered as clickable links (open in new tab) - [ ] Password strength meter updates live (slabă/medie/puternică/foarte puternică) - [ ] Company scope selector works ### 5.2 Encryption - [ ] Passwords stored encrypted (check via direct DB query if possible) - [ ] Passwords decrypt correctly for display - [ ] Legacy plaintext passwords auto-detected on read --- ## 6. Prompt Generator `/prompt-generator` ### 6.1 Search & Filters - [ ] Search bar visible above templates - [ ] Searching by template name works - [ ] Searching by description works - [ ] Searching by tags works - [ ] Category dropdown filters correctly - [ ] Target type dropdown (text/image) filters correctly - [ ] Quick "Imagine" toggle button filters to image templates only - [ ] Empty state shows when no results match - [ ] Clearing search shows all templates ### 6.2 Image Templates (4 new) - [ ] "Midjourney — Randare Exterior Arhitectural" template loads and composes - [ ] "Stable Diffusion — Design Interior" template loads and composes - [ ] "Midjourney — Infografic Arhitectural" template loads and composes - [ ] "Stable Diffusion — Textură Material Arhitectural" template loads and composes - [ ] All 4 have targetAiType = "image" - [ ] Total template count = 18 ### 6.3 Compose & History - [ ] Select template → compose view shows variables - [ ] Fill variables → output preview updates - [ ] Copy to clipboard works - [ ] History tab shows past compositions --- ## 7. AI Chat `/ai-chat` ### 7.1 Session Management - [ ] "Conversație nouă" creates a session - [ ] Session appears in sidebar - [ ] Click session in sidebar to switch - [ ] Delete session works (trash icon on hover) - [ ] Session title shows date by default ### 7.2 Provider Status - [ ] Provider badge visible in header (shows "Demo" if no API key) - [ ] Badge shows WifiOff icon when demo mode - [ ] Badge shows Wifi icon + green when API configured - [ ] Settings button toggles config banner - [ ] Config banner shows: Provider, Model, Max tokens, Stare - [ ] Amber warning when not configured (env var instructions) ### 7.3 Chat Flow - [ ] Type message + Enter sends - [ ] User message appears right-aligned (primary color) - [ ] Send button disabled while empty - [ ] Input disabled + "Se generează..." placeholder while sending - [ ] Loading spinner replaces Send button while sending - [ ] "Se generează răspunsul..." indicator in messages area while waiting - [ ] Bot icon on assistant messages - [ ] Timestamps shown on messages (HH:MM format) - [ ] Demo mode: response comes from /api/ai-chat (should return demo text) - [ ] Error messages show gracefully (connection errors, API errors) ### 7.4 Project Linking (Tag Manager Integration) - [ ] "Proiect" button visible in chat header when session active - [ ] Click shows dropdown with project tags from Tag Manager - [ ] Project tags show color dot + project code + label - [ ] Selecting a project links it to session - [ ] Project name badge appears in header after linking - [ ] X button on badge removes project link - [ ] Project name shows under session title in sidebar - [ ] Linked project context injected in system prompt (verify in API logs) ### 7.5 API Route - [ ] GET /api/ai-chat returns provider config JSON - [ ] POST /api/ai-chat with demo provider returns demo response - [ ] POST with configured provider (if API key set) returns real AI response - [ ] System prompt includes Romanian arch office context --- ## 8. Hot Desk `/hot-desk` - [ ] Room layout shows with window (left) and door (right) - [ ] 4 desks visible - [ ] Week-ahead calendar works - [ ] Reserve desk works - [ ] Cancel reservation works --- ## 9. Email Signature `/email-signature` - [ ] Address toggle works for all 3 companies (BTG, US, SDT) - [ ] Live preview renders correctly - [ ] Copy/download works --- ## 10. Dashboard `/` - [ ] KPI cards (6) show real data - [ ] Activity feed shows last 20 items - [ ] Module grid links work - [ ] External tools links work --- ## 11. Cross-Cutting ### 11.1 Auth - [ ] Login via Authentik works (auth.beletage.ro) - [ ] User name/email shown in header - [ ] Logout works ### 11.2 Performance - [ ] Registratura page loads in < 3 seconds (was 2+ minutes before N+1 fix) - [ ] No excessive network requests in DevTools (should be ~1 per namespace, not N+1) - [ ] Lightweight mode strips base64 from list loading ### 11.3 Theme - [ ] Light/dark toggle works - [ ] Company logos switch variants correctly - [ ] All modules readable in both themes ### 11.4 Navigation - [ ] All 14 modules reachable from sidebar - [ ] Logo mini-game: BTG→US→SDT combo triggers confetti - [ ] "ArchiTools" text links to dashboard --- ## Bug Report Template ``` ### BUG: [Short description] **Module:** [module name] **URL:** [full URL] **Steps:** 1. ... 2. ... 3. ... **Expected:** ... **Actual:** ... **Screenshot:** [if applicable] **Severity:** Critical / High / Medium / Low ``` --- ## Notes - Test on production (10.10.10.166:3000 or tools.beletage.ro) after Portainer redeploy - Test in both Chrome and Firefox - Test in both light and dark mode - ManicTime sync requires SMB mount on Docker host — may fail in dev - AI Chat requires env vars (AI_PROVIDER, AI_API_KEY) for real responses — demo mode otherwise - Password Vault encryption requires ENCRYPTION_SECRET env var