25338ea4d8
- QA-CHECKLIST.md: ~120 test items covering all Phase 3 features - CLAUDE.md: modules table with versions, integrations (AI Chat, Vault, ManicTime) - ROADMAP.md: status table updated (all 14 COMPLETE), Phase 5 updated - SESSION-LOG.md: session entry for 2026-02-28 - SESSION-GUIDE.md: added QA Bug Fix prompt (4B), QA-CHECKLIST raw URL
303 lines
9.9 KiB
Markdown
303 lines
9.9 KiB
Markdown
# 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
|