docs: QA checklist + full documentation update for Phase 3 completion
- 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
This commit is contained in:
@@ -96,22 +96,22 @@ legacy/ # Original HTML tools for reference
|
||||
|
||||
## Implemented Modules (14/14 — zero placeholders)
|
||||
|
||||
| # | Module | Route | Key Features |
|
||||
| --- | ---------------------- | --------------------- | --------------------------------------------------------------------------------------------------- |
|
||||
| 1 | **Dashboard** | `/` | KPI cards (6), activity feed (last 20), module grid, external tools |
|
||||
| 2 | **Email Signature** | `/email-signature` | Multi-company branding, address toggle, live preview, zoom/copy/download |
|
||||
| 3 | **Word XML Generator** | `/word-xml` | Category-based XML gen, simple/advanced mode, ZIP export |
|
||||
| 4 | **Registratura** | `/registratura` | CRUD registry, stats, filters, **legal deadline tracking** |
|
||||
| 5 | **Tag Manager** | `/tag-manager` | CRUD tags, category/scope/color, US/SDT seeds, mandatory categories |
|
||||
| 6 | **IT Inventory** | `/it-inventory` | Equipment tracking, Address Book contact link, type/status/company filters |
|
||||
| 7 | **Address Book** | `/address-book` | CRUD contacts, card grid, vCard export, Registratura reverse lookup, **dynamic types** |
|
||||
| 8 | **Password Vault** | `/password-vault` | CRUD credentials, email field, clickable URLs, strength meter, company scope |
|
||||
| 9 | **Mini Utilities** | `/mini-utilities` | Text case, char counter, percentage, area converter, U→R, artifact cleaner, MDLPA, PDF reducer, OCR |
|
||||
| 10 | **Prompt Generator** | `/prompt-generator` | Template-driven prompt builder, 14 builtin templates |
|
||||
| 11 | **Digital Signatures** | `/digital-signatures` | CRUD assets, drag-and-drop file upload, tag chips |
|
||||
| 12 | **Word Templates** | `/word-templates` | Template library, 8 categories, version tracking, .docx placeholder auto-detection |
|
||||
| 13 | **AI Chat** | `/ai-chat` | Session-based chat UI, demo mode (no API keys yet) |
|
||||
| 14 | **Hot Desk** | `/hot-desk` | 4 desks, week-ahead calendar, room layout (window+door), reserve/cancel |
|
||||
| # | Module | Route | Version | Key Features |
|
||||
| --- | ---------------------- | --------------------- | ------- | --------------------------------------------------------------------------------------------------- |
|
||||
| 1 | **Dashboard** | `/` | 0.1.0 | KPI cards (6), activity feed (last 20), module grid, external tools |
|
||||
| 2 | **Email Signature** | `/email-signature` | 0.1.0 | Multi-company branding, address toggle (BTG/US/SDT), live preview, zoom/copy/download |
|
||||
| 3 | **Word XML Generator** | `/word-xml` | 0.1.0 | Category-based XML gen, simple/advanced mode, ZIP export |
|
||||
| 4 | **Registratura** | `/registratura` | 0.2.0 | CRUD registry, dynamic doc types, bidirectional Address Book, threads, backdating, **legal deadline tracking**, recipient registration, document expiry |
|
||||
| 5 | **Tag Manager** | `/tag-manager` | 0.2.0 | CRUD tags, category/scope/color, US/SDT seeds, mandatory categories, **ManicTime bidirectional sync** |
|
||||
| 6 | **IT Inventory** | `/it-inventory` | 0.2.0 | Dynamic equipment types, rented status (purple pulse), **42U rack visualization**, type/status/company filters |
|
||||
| 7 | **Address Book** | `/address-book` | 0.1.0 | CRUD contacts, card grid, vCard export, Registratura reverse lookup, **dynamic types (creatable)** |
|
||||
| 8 | **Password Vault** | `/password-vault` | 0.2.0 | CRUD credentials, email field, clickable URLs, strength meter, company scope, **AES-256-GCM encryption** |
|
||||
| 9 | **Mini Utilities** | `/mini-utilities` | 0.1.0 | Text case, char counter, percentage, area converter, U→R, artifact cleaner, MDLPA, PDF reducer, OCR |
|
||||
| 10 | **Prompt Generator** | `/prompt-generator` | 0.2.0 | Template-driven prompt builder, **18 templates** (14 text + 4 image), search bar, target type filter |
|
||||
| 11 | **Digital Signatures** | `/digital-signatures` | 0.1.0 | CRUD assets, drag-and-drop file upload, tag chips |
|
||||
| 12 | **Word Templates** | `/word-templates` | 0.1.0 | Template library, 8 categories, version tracking, .docx placeholder auto-detection |
|
||||
| 13 | **AI Chat** | `/ai-chat` | 0.2.0 | Multi-provider (OpenAI/Claude/Ollama/demo), **project linking via Tag Manager**, provider status badge |
|
||||
| 14 | **Hot Desk** | `/hot-desk` | 0.1.0 | 4 desks, week-ahead calendar, room layout (window+door), reserve/cancel |
|
||||
|
||||
### Registratura — Legal Deadline Tracking (Termene Legale)
|
||||
|
||||
@@ -245,13 +245,15 @@ src/modules/<name>/
|
||||
|
||||
## Current Integrations
|
||||
|
||||
| Feature | Status | Notes |
|
||||
| ------------------- | ---------------------- | ------------------------------------------------------- |
|
||||
| **Authentik SSO** | ✅ Active | NextAuth v4 + OIDC, group→role/company mapping |
|
||||
| **PostgreSQL** | ✅ Active | Prisma ORM, `KeyValueStore` model, `/api/storage` route |
|
||||
| **MinIO** | Client configured | 10.10.10.166:9002, bucket `tools`, adapter pending |
|
||||
| **AI Chat API** | UI complete, demo mode | No API keys yet; supports Claude/GPT/Ollama |
|
||||
| **N8N automations** | Webhook URL configured | For notifications, backups, workflows |
|
||||
| Feature | Status | Notes |
|
||||
| ------------------- | ---------------------- | --------------------------------------------------------------- |
|
||||
| **Authentik SSO** | ✅ Active | NextAuth v4 + OIDC, group→role/company mapping |
|
||||
| **PostgreSQL** | ✅ Active | Prisma ORM, `KeyValueStore` model, `/api/storage` route |
|
||||
| **MinIO** | Client configured | 10.10.10.166:9002, bucket `tools`, adapter pending |
|
||||
| **AI Chat API** | ✅ Multi-provider | `/api/ai-chat` — OpenAI/Claude/Ollama/demo; needs API key env |
|
||||
| **Vault Encryption**| ✅ Active | AES-256-GCM server-side, `/api/vault`, ENCRYPTION_SECRET env |
|
||||
| **ManicTime Sync** | ✅ Implemented | `/api/manictime` — bidirectional Tags.txt sync, needs SMB mount |
|
||||
| **N8N automations** | Webhook URL configured | For notifications, backups, workflows |
|
||||
|
||||
---
|
||||
|
||||
|
||||
+302
@@ -0,0 +1,302 @@
|
||||
# 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
|
||||
+29
-37
@@ -28,24 +28,26 @@
|
||||
|
||||
---
|
||||
|
||||
## Current Module Status vs. XLSX Spec
|
||||
## Current Module Status (after Phase 3 completion)
|
||||
|
||||
| # | Module | Core Done | Gaps Remaining | New Features Needed |
|
||||
| --- | ------------------ | ----------- | -------------------------------------------------------------------------------- | ------------------------------------------- |
|
||||
| 1 | Registratura | YES | Linked-entry selector capped at 20 | Workflow automation, email integration, OCR |
|
||||
| 2 | Email Signature | YES | US/SDT logo files may be missing from `/public/logos/`; US/SDT no address toggle | AD sync, branding packs |
|
||||
| 3 | Word XML | YES | POT/CUT toggle exists (spec says remove) | Schema validator, visual mapper |
|
||||
| 4 | Digital Signatures | YES | No file upload (URL only); tags not editable in form | Permission layers, document insertion |
|
||||
| 5 | Password Vault | YES | Unencrypted storage; no strength meter; no company scope | Hardware key, rotation reminders |
|
||||
| 6 | IT Inventory | YES | assignedTo not linked to contacts; no maintenance log | Network scan import |
|
||||
| 7 | Address Book | YES | No vCard export; no reverse Registratura lookup | Email sync, deduplication |
|
||||
| 8 | Prompt Generator | YES | Missing architecture viz templates (sketch→render, photorealism) | Prompt scoring |
|
||||
| 9 | Word Templates | YES | No clause library; placeholders manual only; no Word generation | Diff compare, document generator |
|
||||
| 10 | Tag Manager | YES | No US/SDT project seeds; no mandatory-category enforcement | Server tag sync, smart suggestions |
|
||||
| 11 | Mini Utilities | PARTIAL | Missing: U→R value, AI artifact cleaner, MDLPA validator, PDF reducer, OCR | More converters |
|
||||
| 12 | Dashboard | BASIC | No activity feed, no notifications, no KPI panels | Custom dashboards per role |
|
||||
| 13 | AI Chat | DEMO ONLY | No API integration, no key config, no streaming | Conversation templates |
|
||||
| 14 | Hot Desk | NOT STARTED | Entire module missing | — |
|
||||
| # | Module | Version | Status | Remaining Gaps | Future Enhancements |
|
||||
| --- | ------------------ | ------- | -------- | ----------------------------------------------------- | ------------------------------------------- |
|
||||
| 1 | Registratura | 0.2.0 | COMPLETE | — | Workflow automation, email integration, OCR |
|
||||
| 2 | Email Signature | 0.1.0 | COMPLETE | US/SDT addresses may need update | AD sync, branding packs, promo banners |
|
||||
| 3 | Word XML | 0.1.0 | COMPLETE | — | Schema validator, visual mapper |
|
||||
| 4 | Digital Signatures | 0.1.0 | COMPLETE | — | Permission layers, document insertion |
|
||||
| 5 | Password Vault | 0.2.0 | COMPLETE | — | Hardware key, rotation reminders, Passbolt |
|
||||
| 6 | IT Inventory | 0.2.0 | COMPLETE | — | Network scan import |
|
||||
| 7 | Address Book | 0.1.0 | COMPLETE | — | Email sync, deduplication |
|
||||
| 8 | Prompt Generator | 0.2.0 | COMPLETE | — | Prompt scoring, more image templates |
|
||||
| 9 | Word Templates | 0.1.0 | COMPLETE | No clause library; no Word generation | Diff compare, document generator |
|
||||
| 10 | Tag Manager | 0.2.0 | COMPLETE | ManicTime needs SMB mount on Docker host | Smart suggestions |
|
||||
| 11 | Mini Utilities | 0.1.0 | COMPLETE | — | More converters, DWG→DXF |
|
||||
| 12 | Dashboard | 0.1.0 | COMPLETE | — | Custom dashboards per role |
|
||||
| 13 | AI Chat | 0.2.0 | COMPLETE | Needs API key env vars for real AI | Streaming, model selector, conversation templates |
|
||||
| 14 | Hot Desk | 0.1.0 | COMPLETE | — | — |
|
||||
|
||||
**Phases 1–3 COMPLETE (all 42 tasks).** Next: Phase 4 (Quality & Testing).
|
||||
|
||||
---
|
||||
|
||||
@@ -426,6 +428,7 @@
|
||||
- **Docker:** env vars AI_PROVIDER, AI_API_KEY, AI_MODEL, AI_BASE_URL, AI_MAX_TOKENS
|
||||
|
||||
**Neimplementat (wishlist):**
|
||||
|
||||
- Node-based Canvas (infinite canvas) — necesită bibliotecă React Flow, complexitate mare
|
||||
- Nod Interpretare 3D — necesită Three.js, model ML, out of scope curent
|
||||
|
||||
@@ -491,31 +494,20 @@ npm install -D vitest @testing-library/react @testing-library/jest-dom jsdom @vi
|
||||
|
||||
---
|
||||
|
||||
## PHASE 5 — AI Chat Integration
|
||||
## PHASE 5 — AI Chat Enhancements
|
||||
|
||||
> Make Module 13 functional.
|
||||
> Remaining AI Chat features not covered by task 3.15.
|
||||
|
||||
### 5.01 `[HEAVY]` AI Chat — Real API Integration
|
||||
### 5.01 `[STANDARD]` AI Chat — Response Streaming
|
||||
|
||||
**What:** Replace demo mode with actual AI provider calls:
|
||||
**What:** Add streaming via ReadableStream for real-time token display (currently waits for full response).
|
||||
**Note:** Basic multi-provider API integration already done in 3.15 (`/api/ai-chat`).
|
||||
**Remaining:**
|
||||
|
||||
- Create `/api/ai/chat` server-side route (API keys never exposed to browser)
|
||||
- Provider abstraction: Anthropic Claude, OpenAI GPT, Ollama (local)
|
||||
- Response streaming via ReadableStream
|
||||
- Model selector in the UI
|
||||
- ReadableStream SSE response
|
||||
- Model selector dropdown in UI
|
||||
- Token usage display
|
||||
|
||||
**Env vars:**
|
||||
|
||||
```
|
||||
ANTHROPIC_API_KEY=sk-ant-...
|
||||
OPENAI_API_KEY=sk-...
|
||||
OLLAMA_BASE_URL=http://10.10.10.166:11434
|
||||
AI_DEFAULT_PROVIDER=anthropic
|
||||
AI_DEFAULT_MODEL=claude-sonnet-4-6-20261001
|
||||
```
|
||||
|
||||
**User action needed:** Provide API keys when ready.
|
||||
- Provider switching without restart
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ Replace `{GITEA}` with whichever base works for you:
|
||||
| ROADMAP.md | `{GITEA}/gitadmin/ArchiTools/raw/branch/main/ROADMAP.md` |
|
||||
| SESSION-LOG.md | `{GITEA}/gitadmin/ArchiTools/raw/branch/main/SESSION-LOG.md` |
|
||||
| SESSION-GUIDE.md | `{GITEA}/gitadmin/ArchiTools/raw/branch/main/SESSION-GUIDE.md` |
|
||||
| QA-CHECKLIST.md | `{GITEA}/gitadmin/ArchiTools/raw/branch/main/QA-CHECKLIST.md` |
|
||||
|
||||
**Production app:** http://10.10.10.166:3000
|
||||
|
||||
@@ -111,6 +112,37 @@ Don't change anything unrelated. Update SESSION-LOG.md.
|
||||
|
||||
---
|
||||
|
||||
## PROMPT 4B: QA Bug Fix Session (post-Phase 3)
|
||||
|
||||
```
|
||||
I'm working on ArchiTools.
|
||||
Repository: https://git.beletage.ro/gitadmin/ArchiTools.git (branch: main)
|
||||
|
||||
Read these files from the repo:
|
||||
- CLAUDE.md (project context, stack, architecture)
|
||||
- QA-CHECKLIST.md (testing checklist — look for items marked with bugs)
|
||||
- SESSION-LOG.md (previous sessions for context)
|
||||
|
||||
Pull latest, npm install.
|
||||
|
||||
I tested the app and found bugs. Here is my bug list:
|
||||
|
||||
[PASTE YOUR BUG LIST HERE]
|
||||
|
||||
For each bug:
|
||||
1. Investigate root cause
|
||||
2. Fix it
|
||||
3. Run `npx next build` — must pass
|
||||
4. Commit with descriptive message
|
||||
|
||||
After fixing all bugs:
|
||||
- Push to main
|
||||
- Update SESSION-LOG.md with bug fix details
|
||||
- Notify me for re-testing
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## PROMPT 5: Code Review (no changes)
|
||||
|
||||
```
|
||||
|
||||
@@ -4,6 +4,72 @@
|
||||
|
||||
---
|
||||
|
||||
## Session — 2026-02-28 (GitHub Copilot - Claude Opus 4.6)
|
||||
|
||||
### Context
|
||||
|
||||
Final Phase 3 implementation (tasks 3.03, 3.13, 3.15) + QA preparation + documentation update.
|
||||
|
||||
### Completed
|
||||
|
||||
- **Task 3.03 ✅ Registratura — Termene Legale Îmbunătățiri:**
|
||||
- Deadline audit log (DeadlineAuditEntry) on create/resolve
|
||||
- Expandable "Istoric modificări" on deadline cards
|
||||
- Recipient registration fields (nr + date, ieșit only)
|
||||
- Document expiry tracking (expiryDate + expiryAlertDays)
|
||||
- Web scraping prep fields (externalStatusUrl, externalTrackingId)
|
||||
- 6 stat cards + amber/red alert banners
|
||||
- Alert count badge on tab header
|
||||
- New deadline type: prelungire-cu (15 calendar days, tacit approval)
|
||||
- Commit: `99fbddd`
|
||||
|
||||
- **Task 3.13 ✅ Tag Manager — ManicTime Sync:**
|
||||
- `manictime-service.ts`: Parser/serializer for Tags.txt format, line classifier, sync planner
|
||||
- `/api/manictime` route: GET (read + sync plan), POST (pull/push/both), Prisma integration
|
||||
- `manictime-sync-panel.tsx`: Connection check, stats grid, import/export/full sync buttons with confirmation
|
||||
- Docker: MANICTIME_TAGS_PATH env var, `/mnt/manictime` volume mount
|
||||
- Tag Manager v0.2.0
|
||||
- Commit: `11b35c7`
|
||||
|
||||
- **Task 3.15 ✅ AI Tools — Extindere și Integrare:**
|
||||
- Prompt Generator v0.2.0: search bar + target type filter + 4 new image templates (18 total)
|
||||
- `/api/ai-chat` route: multi-provider (OpenAI/Claude/Ollama/demo), Romanian arch office system prompt
|
||||
- `use-chat.ts`: sendMessage() with real API, sending state, providerConfig, updateSession()
|
||||
- AI Chat UI: provider badge (Wifi/WifiOff), Bot icon, spinner, config banner
|
||||
- AI Chat + Tag Manager: project selector via useTags('project'), session linking
|
||||
- Docker: AI_PROVIDER, AI_API_KEY, AI_MODEL, AI_BASE_URL, AI_MAX_TOKENS env vars
|
||||
- AI Chat v0.2.0, Prompt Generator v0.2.0
|
||||
- Commit: `d34c722`
|
||||
|
||||
- **QA Preparation:**
|
||||
- Created `QA-CHECKLIST.md` — comprehensive testing checklist for all Phase 3 features (~120 items)
|
||||
- Covers: Registratura, Tag Manager, IT Inventory, Address Book, Password Vault, Prompt Generator, AI Chat, Hot Desk, Email Signature, Dashboard, cross-cutting (auth, performance, theme)
|
||||
|
||||
- **Documentation Update:**
|
||||
- CLAUDE.md: updated module table (versions, new features), updated integrations table (AI Chat, Vault encryption, ManicTime)
|
||||
- ROADMAP.md: updated status table (all 14 modules COMPLETE), marked 3.03/3.13/3.15 done, updated Phase 5 to reflect 3.15 overlap
|
||||
- SESSION-LOG.md: this entry
|
||||
- SESSION-GUIDE.md: added QA/Bug Fix session prompt
|
||||
|
||||
### Commits
|
||||
|
||||
- `99fbddd` feat(3.03): Registratura Termene Legale improvements
|
||||
- `11b35c7` feat(3.13): Tag Manager ManicTime bidirectional sync
|
||||
- `d34c722` feat(3.15): AI Tools — extindere si integrare
|
||||
- `a25cc40` docs: update ROADMAP.md — mark 3.15 complete
|
||||
- (this session) docs: QA checklist + full documentation update
|
||||
|
||||
### Phase Status
|
||||
|
||||
- **Phase 1:** 13/13 ✅
|
||||
- **Phase 2:** 1/1 ✅ (Hot Desk)
|
||||
- **Phase 3:** 15/15 ✅ (all requirements implemented)
|
||||
- **Phase 6:** 1/4 done (Authentik SSO)
|
||||
- **Phase 7:** 3/4 done (PostgreSQL + Prisma + MinIO client)
|
||||
- **Next:** User QA testing → bug fixes → Phase 4 (Quality & Testing)
|
||||
|
||||
---
|
||||
|
||||
## Session — 2026-02-27 late night #2 (GitHub Copilot - Claude Opus 4.6)
|
||||
|
||||
### Context
|
||||
|
||||
@@ -332,7 +332,11 @@ export function AiChatModule() {
|
||||
className="flex-1"
|
||||
/>
|
||||
<Button onClick={handleSend} disabled={!input.trim() || sending}>
|
||||
{sending ? <Loader2 className="h-4 w-4 animate-spin" /> : <Send className="h-4 w-4" />}
|
||||
{sending ? (
|
||||
<Loader2 className="h-4 w-4 animate-spin" />
|
||||
) : (
|
||||
<Send className="h-4 w-4" />
|
||||
)}
|
||||
</Button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,17 +1,18 @@
|
||||
import type { ModuleConfig } from '@/core/module-registry/types';
|
||||
import type { ModuleConfig } from "@/core/module-registry/types";
|
||||
|
||||
export const aiChatConfig: ModuleConfig = {
|
||||
id: 'ai-chat',
|
||||
name: 'Chat AI',
|
||||
description: 'Interfață de conversație cu modele AI (OpenAI, Claude, Ollama) pentru asistență profesională',
|
||||
icon: 'message-square',
|
||||
route: '/ai-chat',
|
||||
category: 'ai',
|
||||
featureFlag: 'module.ai-chat',
|
||||
visibility: 'all',
|
||||
version: '0.2.0',
|
||||
id: "ai-chat",
|
||||
name: "Chat AI",
|
||||
description:
|
||||
"Interfață de conversație cu modele AI (OpenAI, Claude, Ollama) pentru asistență profesională",
|
||||
icon: "message-square",
|
||||
route: "/ai-chat",
|
||||
category: "ai",
|
||||
featureFlag: "module.ai-chat",
|
||||
visibility: "all",
|
||||
version: "0.2.0",
|
||||
dependencies: [],
|
||||
storageNamespace: 'ai-chat',
|
||||
storageNamespace: "ai-chat",
|
||||
navOrder: 51,
|
||||
tags: ['chat', 'ai', 'conversație', 'openai', 'claude', 'ollama'],
|
||||
tags: ["chat", "ai", "conversație", "openai", "claude", "ollama"],
|
||||
};
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
export { aiChatConfig } from './config';
|
||||
export { AiChatModule } from './components/ai-chat-module';
|
||||
export type { ChatMessage, ChatRole, ChatSession, AiProviderConfig } from './types';
|
||||
export { aiChatConfig } from "./config";
|
||||
export { AiChatModule } from "./components/ai-chat-module";
|
||||
export type {
|
||||
ChatMessage,
|
||||
ChatRole,
|
||||
ChatSession,
|
||||
AiProviderConfig,
|
||||
} from "./types";
|
||||
|
||||
@@ -1,17 +1,26 @@
|
||||
import type { ModuleConfig } from '@/core/module-registry/types';
|
||||
import type { ModuleConfig } from "@/core/module-registry/types";
|
||||
|
||||
export const promptGeneratorConfig: ModuleConfig = {
|
||||
id: 'prompt-generator',
|
||||
name: 'Generator Prompturi',
|
||||
description: 'Generator structurat de prompturi pe bază de șabloane parametrizate, cu căutare și filtrare pe domenii profesionale și tipuri AI',
|
||||
icon: 'sparkles',
|
||||
route: '/prompt-generator',
|
||||
category: 'ai',
|
||||
featureFlag: 'module.prompt-generator',
|
||||
visibility: 'all',
|
||||
version: '0.2.0',
|
||||
id: "prompt-generator",
|
||||
name: "Generator Prompturi",
|
||||
description:
|
||||
"Generator structurat de prompturi pe bază de șabloane parametrizate, cu căutare și filtrare pe domenii profesionale și tipuri AI",
|
||||
icon: "sparkles",
|
||||
route: "/prompt-generator",
|
||||
category: "ai",
|
||||
featureFlag: "module.prompt-generator",
|
||||
visibility: "all",
|
||||
version: "0.2.0",
|
||||
dependencies: [],
|
||||
storageNamespace: 'prompt-generator',
|
||||
storageNamespace: "prompt-generator",
|
||||
navOrder: 50,
|
||||
tags: ['prompt', 'ai', 'generator', 'șabloane', 'midjourney', 'stable-diffusion', 'imagine'],
|
||||
tags: [
|
||||
"prompt",
|
||||
"ai",
|
||||
"generator",
|
||||
"șabloane",
|
||||
"midjourney",
|
||||
"stable-diffusion",
|
||||
"imagine",
|
||||
],
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user