Files
ArchiTools/SESSION-LOG.md
T

285 lines
17 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ArchiTools — Session Log
> Newest sessions first. Each AI session appends an entry at the top.
---
## Session — 2026-02-27 (GitHub Copilot - Gemini 3.1 Pro)
### Completed
- **Etapa 2: Autentificare (Authentik / Active Directory)**
- Instalat `next-auth` pentru gestionarea sesiunilor în Next.js.
- Configurat provider-ul OIDC pentru Authentik (`src/app/api/auth/[...nextauth]/route.ts`).
- Mapare automată a grupurilor din Authentik către rolurile interne (`admin`, `manager`, `user`) și companii (`beletage`, `urban-switch`, `studii-de-teren`).
- Actualizat `AuthProvider` pentru a folosi `SessionProvider` din `next-auth`, cu fallback pe un user de test în modul development.
- Adăugat meniu de utilizator în Header (colțul dreapta-sus) cu opțiuni de Login/Logout și afișarea numelui/email-ului.
- Adăugat variabilele de mediu necesare în `.env` (`AUTHENTIK_CLIENT_ID`, `AUTHENTIK_CLIENT_SECRET`, `AUTHENTIK_ISSUER`).
- **Etapa 1: Fundația (Baza de date & Storage)**
- Instalat și configurat Prisma ORM (v6) pentru conectarea la PostgreSQL.
- Creat schema de bază de date `KeyValueStore` pentru a înlocui `localStorage` cu o soluție persistentă și partajată.
- Rulat prima migrare (`npx prisma db push`) pe serverul de producție (`10.10.10.166:5432`).
- Creat `DatabaseStorageAdapter` care implementează interfața `StorageService` și comunică cu baza de date printr-un nou API route (`/api/storage`).
- Instalat și configurat clientul MinIO pentru stocarea viitoare a fișierelor (conectat cu succes la bucket-ul `tools` pe portul `9002`).
- Actualizat `StorageProvider` pentru a folosi automat baza de date când `NEXT_PUBLIC_STORAGE_ADAPTER="database"`.
- Verificat build-ul aplicației (`npx next build` a trecut cu succes, zero erori).
### Notes
- Toate cele 14 module beneficiază acum instantaneu de persistență reală în baza de date PostgreSQL, fără a fi necesară rescrierea logicii lor interne.
- Autentificarea este pregătită. Urmează configurarea aplicației în interfața de admin Authentik.
---
## Session — 2026-02-26 (GitHub Copilot - Gemini 3.1 Pro)
### Completed
- **Phase 3: Replanificare Detaliată (Ideation & Requirements)**
- Added a new Phase 3 in `ROADMAP.md` to track detailed requirements before implementation.
- Shifted subsequent phases (Quality & Testing became Phase 4, etc.).
- Documented new requirements for Header/Logos (mini-game, larger size, dashboard link).
- Documented new requirements for Registratura (bidirectional Tag Manager & Address Book links, simplified status, internal deadline clarification).
- Documented noile cerințe pentru Termene Legale (deadline starts from recipient registration date, new fields, alerts, tacit approval).
- Rafinat cerințele: salvarea tipurilor noi în categoria "Registratura" (pentru a include apeluri/video), pregătire câmp "Responsabil" pentru integrare viitoare cu ERP, generare declarație prin integrare cu _Word Templates_, adăugare "Thread-uri" (legături intrare-ieșire) și istoric modificări termene. - Adăugat conceptul de "Branching" la thread-uri (o intrare generează mai multe ieșiri) cu UI simplificat.
- Adăugat secțiunea 3.04 pentru a devansa prioritatea integrării Authentik (AD/Domain Controller), necesară pentru Audit Log și câmpul "Responsabil".
- Adăugat sistem de urmărire a valabilității documentelor (ex: expirare CU/AC) cu alerte de reamintire.
- Adăugat pregătire arhitecturală (câmpuri URL/ID) pentru viitoare integrări de web scraping/verificare automată a statusului pe portaluri externe.
- Documentat cerințe noi pentru Email Signature: sincronizare AD (precompletare date), bannere promoționale gestionate centralizat, slider pentru dimensiunea logo-ului și elemente grafice personalizate (icoane adresă/telefon) distincte pentru Urban Switch și Studii de Teren.
- Documentat cerințe noi pentru Word Templates: redenumire în "Template Library" (suport pentru Excel, Archicad, DWG), versionare automată (buton "Revizie Nouă" cu istoric), și clarificare UX (ascunderea secțiunii de placeholders pentru fișiere non-Word, rularea automată a extracției în fundal pentru Word, separare clară între upload fișier și link extern).
- Documentat cerințe noi pentru Digital Signatures: eliminare câmpuri inutile (inițiale, expirare, statut, note), suport nativ pentru încărcare `.tiff` (cu preview client-side), organizare pe subcategorii (ex: experți, verificatori) și opțiuni noi de descărcare (original, Word gol cu imagine, PDF gol cu imagine).
- Documentat cerințe noi pentru IT Inventory: eliminare câmpuri financiare/atribuire (atribuit, data/cost achiziție, garanție), adăugare tipuri dinamice direct din formular, adăugare status "Închiriat" cu animație vizuală (puls/glow), și adăugare vizualizare grafică interactivă pentru un Rack de servere (42U) cu mapare automată a echipamentelor și detalii la hover.
- Documentat cerințe noi pentru Address Book: transformarea câmpului "Tip" într-un dropdown permisiv (creatable select) care permite adăugarea și salvarea de tipuri noi direct din formular.
- Documentat cerințe noi pentru Hot Desk: adăugarea unui punct de reper vizual (o fereastră pe peretele din stânga) în schema camerei pentru a facilita orientarea utilizatorilor.
- Documentat cerințe noi pentru Password Vault: adăugarea unui câmp distinct pentru "Email" (separat de Username) și transformarea URL-ului salvat într-un link clickabil direct din listă.
- Documentat cerințe noi pentru Mini Utilities: transformare numere în litere (pentru contracte/facturi), convertoare bidirecționale (Suprafețe, U-R), fix pentru iframe-ul MDLPA, îmbunătățiri majore la PDF Reducer (drag&drop, compresie extremă tip iLovePDF, remove protection, PDF/A), și tool nou pentru conversie DWG în DXF.
- Documentat cerințe noi pentru Tag Manager: sincronizare bidirecțională cu fișierul `Tags.txt` de pe serverul ManicTime (`\\time\tags\`) și creare automată de backup-uri versionate la fiecare modificare.
- Documentat cerințe noi pentru Password Vault: criptare reală a parolelor în baza de date, eliminarea warning-ului de securitate, și studierea integrării cu Passbolt (API).
- Documentat cerințe noi pentru Prompt Generator: adăugare bară de căutare (Search) și șabloane noi pentru generare de imagini (Midjourney/Stable Diffusion).
- Documentat cerințe noi pentru AI Chat & Media: activarea modulului de chat cu un API real (OpenAI/Anthropic/Ollama), integrare cu Tag Manager pentru context pe proiect, interfață node-based (infinite canvas) pentru generatoare media, și un nod avansat de interpretare 3D a imaginilor 2D (tip viewport interactiv).
- Documentat cerințe noi pentru Storage & Arhitectură (Prioritate 0): devansarea migrării de la `localStorage` la o soluție robustă (MinIO pentru fișiere + PostgreSQL/Prisma pentru date) pentru a asigura persistența, securitatea și partajarea datelor între toți utilizatorii.
### Notes
- No code changes made. Only documentation updated.
- Faza 3 (Ideation & Requirements) este complet documentată. Urmează planificarea concretă a execuției.
---
## Session — 2026-02-19 (GitHub Copilot - Claude Sonnet 4.6) [continued 2]
### Completed
- **Task 1.12: Registratura — Linked-Entry Selector Search** ✅
- Added search input (by number, subject, sender) to `registry-entry-form.tsx`
- Removed `.slice(0, 20)` cap — all entries now searchable
- Chip labels now show truncated subject alongside entry number
- Commit: `cd4b0de`
- **Task 1.13: Word XML — Remove POT/CUT Auto-Calculation** ✅
- Removed `computeMetrics` from `XmlGeneratorConfig` type, `generateCategoryXml`, `generateAllCategories`, `downloadZipAll`, `useXmlConfig`, `XmlSettings`, `WordXmlModule`
- Removed POT/CUT auto-injection logic entirely; fields can still be added manually
- Removed unused `Switch` import from `xml-settings.tsx`
- Commit: `eaca24a`
### Notes
- Phase 1 (13 tasks) now fully complete ✅
- Next: **Phase 2** — Hot Desk module (new module from scratch)
---
### Completed
- **Task 1.11: Dashboard — Activity Feed + KPI Panels** ✅
- Created `src/modules/dashboard/hooks/use-dashboard-data.ts`
- Scans all `architools:*` localStorage keys directly (no per-module hooks needed)
- Activity feed: last 20 items sorted by `updatedAt`, detects creat/actualizat, picks best label field
- KPI grid: registratura this week, open dosare, deadlines this week, overdue (red if >0), new contacts this month, active IT equipment
- Replaced static Quick Stats with live KPI panels in `src/app/page.tsx`
- Relative timestamps in Romanian via `Intl.RelativeTimeFormat`
- Build passes zero errors
### Commits
- (this session) feat(dashboard): activity feed and KPI panels
### Notes
- Build verified: `npx next build` → ✓ Compiled successfully
- Next task: **1.12** — Registratura linked-entry selector fix
---
## Session — 2026-02-19 (GitHub Copilot - Claude Sonnet 4.6)
### Completed
- **Task 1.09: Address Book — vCard Export + Registratura Reverse Lookup** ✅
- Created `src/modules/address-book/services/vcard-export.ts` — generates vCard 3.0 with all contact fields
- Download icon button on card hover → triggers `.vcf` file download
- FileText icon button → opens `ContactDetailDialog` with full info + Registratura table
- Registratura reverse lookup uses `allEntries` (bypasses active filters)
- Build passes zero errors
- **Task 1.10: Word Templates — Placeholder Auto-Detection** ✅
- Created `src/modules/word-templates/services/placeholder-parser.ts`
- Reads `.docx` (ZIP) via JSZip, scans all `word/*.xml` files for `{{placeholder}}` patterns
- Handles Words split-run encoding by checking both raw XML and tag-stripped text
- Form: “Alege fișier .docx” button (local file picker, CORS-free) auto-populates placeholders field
- Form: Wand icon next to URL field tries URL-based fetch detection
- Spinner during parsing, error message if detection fails
- Build passes zero errors
### Commits
- `da33dc9` feat(address-book): vCard export and Registratura reverse lookup
- `67fd888` docs: mark task 1.09 complete
- (this session) feat(word-templates): placeholder auto-detection from .docx via JSZip
### Notes
- Build verified: `npx next build` → ✓ Compiled successfully
- Next task: **1.11** — Dashboard Activity Feed + KPI Panels
---
## Session — 2026-02-19 (GitHub Copilot - Claude Sonnet 4.6) [earlier]
### Completed
- **Task 1.09: Address Book — vCard Export + Registratura Reverse Lookup** ✅
- Created `src/modules/address-book/services/vcard-export.ts` — generates vCard 3.0 (`.vcf`) with all contact fields
- Added Download icon button on contact card hover → triggers `.vcf` file download
- Added FileText (detail) icon button → opens `ContactDetailDialog`
- `ContactDetailDialog` shows full contact info, contact persons, notes, and scrollable Registratura table
- Registratura reverse lookup uses `allEntries` (bypasses active filters) and matches `senderContactId` or `recipientContactId`
- Build passes zero errors
### Commits
- `da33dc9` feat(address-book): vCard export and Registratura reverse lookup
### Notes
- Build verified: `npx next build` → ✓ Compiled successfully
- Push pending — see below
- Next task: **1.10** — Word Templates Placeholder Auto-Detection
---
## Session — 2026-02-19 (GitHub Copilot - Haiku 4.5)
### Completed
- **Task 1.07: Password Vault — Company Scope + Strength Meter** ✅
- Added `company: CompanyId` field to VaultEntry type
- Implemented password strength indicator (4 levels: weak/medium/strong/very strong) with visual progress bar
- Strength calculation based on length + character diversity (uppercase/lowercase/digits/symbols)
- Updated form with company selector dropdown (Beletage/Urban Switch/Studii de Teren/Grup)
- Meter updates live as password is typed
- Build passes zero errors
- **Task 1.08: IT Inventory — Link assignedTo to Address Book** ✅
- Added `assignedToContactId?: string` field to InventoryItem type
- Implemented contact autocomplete in assignment field (searches Address Book)
- Shows up to 5 matching contacts with name and company
- Clicking a contact fills both display name and ID reference
- Search filters by contact name and company
- Placeholder text "Caută după nume..." guides users
- Build passes zero errors
### Commits
- `b96b004` feat(password-vault): add company scope and password strength meter
- `a49dbb2` feat(it-inventory): link assignedTo to Address Book contacts with autocomplete
### Notes
- Build verified: `npx next build` → ✓ Compiled successfully
- Push completed: Changes deployed to main via Gitea webhook → Portainer auto-redeploy triggering
- Ready to test on production: http://10.10.10.166:3000/password-vault and http://10.10.10.166:3000/it-inventory
---
## Session — 2026-02-18 (GitHub Copilot - Haiku 4.5)
### Completed
- **Task 1.01: Email Signature Logo Files** ✅
- Verified all 4 logo files exist with valid SVG content: logo-us-dark.svg, logo-us-light.svg, logo-sdt-dark.svg, logo-sdt-light.svg
- No action needed — logos are already present and valid
- **Task 1.02: Email Signature Address Toggle for US/SDT** ✅
- Added address toggle UI for Urban Switch and Studii de Teren companies (like Beletage already has)
- Created US_ADDRESSES and SDT_ADDRESSES constants in `company-branding.ts`
- Updated `signature-configurator.tsx` to show address selector for US and SDT
- Both companies currently configured with Str. Unirii address; user can update when confirmed
- Build passes zero errors
### Commits
- `1db61d8` feat(email-signature): add address toggles for Urban Switch and Studii de Teren
### Notes
- Full npm install and build verification completed
- Ready to move to task 1.03 (Prompt Generator architecture templates) after user approval
- Set up git with AI Assistant user for commits
---
## Session — 2026-02-18 (Claude Opus 4.6)
### Completed
- **Registratura Legal Deadline Tracking** — Full implementation:
- 9 new files: working-days.ts (Romanian holidays + Orthodox Easter), deadline-catalog.ts (16 deadline types), deadline-service.ts, use-deadline-filters.ts, deadline-card.tsx, deadline-add-dialog.tsx, deadline-resolve-dialog.tsx, deadline-table.tsx, deadline-dashboard.tsx
- 6 modified files: types.ts, use-registry.ts, registratura-module.tsx (tabbed), registry-entry-form.tsx (inline deadlines), registry-table.tsx (clock badge), index.ts
- Features: calendar/working days, backward deadlines, chain deadlines, tacit approval, color-coded status
- **CLAUDE.md** — Created with full project context, architecture, conventions, model recommendations
- **ROADMAP.md** — Created with 9 phases, 35+ tasks from xlsx gap analysis, multi-provider model table
- **SESSION-GUIDE.md** — Created with start/resume prompts, git workflow, file update rules
### Commits
- `bb01268` feat(registratura): add legal deadline tracking system (Termene Legale)
- `d6a5852` docs: add ROADMAP.md with detailed future task plan
- `b1df15b` docs: rewrite ROADMAP.md with complete xlsx gap analysis + multi-model recommendations
- (this session) docs: add SESSION-GUIDE.md + SESSION-LOG.md
### Notes
- Build passes with zero errors
- Dev server on localhost:3000 shows tabs correctly
- Production at 10.10.10.166:3000 requires Portainer redeploy after push
- The `app_modules_overview.xlsx` is in the repo root but not committed (it's a reference file)
- No tasks from ROADMAP.md Phase 1+ have been started yet — next session should begin with task 1.01
### Completed
- **Registratura Legal Deadline Tracking** — Full implementation:
- 9 new files: working-days.ts (Romanian holidays + Orthodox Easter), deadline-catalog.ts (16 deadline types), deadline-service.ts, use-deadline-filters.ts, deadline-card.tsx, deadline-add-dialog.tsx, deadline-resolve-dialog.tsx, deadline-table.tsx, deadline-dashboard.tsx
- 6 modified files: types.ts, use-registry.ts, registratura-module.tsx (tabbed), registry-entry-form.tsx (inline deadlines), registry-table.tsx (clock badge), index.ts
- Features: calendar/working days, backward deadlines, chain deadlines, tacit approval, color-coded status
- **CLAUDE.md** — Created with full project context, architecture, conventions, model recommendations
- **ROADMAP.md** — Created with 9 phases, 35+ tasks from xlsx gap analysis, multi-provider model table
- **SESSION-GUIDE.md** — Created with start/resume prompts, git workflow, file update rules
### Commits
- `bb01268` feat(registratura): add legal deadline tracking system (Termene Legale)
- `d6a5852` docs: add ROADMAP.md with detailed future task plan
- `b1df15b` docs: rewrite ROADMAP.md with complete xlsx gap analysis + multi-model recommendations
- (this session) docs: add SESSION-GUIDE.md + SESSION-LOG.md
### Notes
- Build passes with zero errors
- Dev server on localhost:3000 shows tabs correctly
- Production at 10.10.10.166:3000 requires Portainer redeploy after push
- The `app_modules_overview.xlsx` is in the repo root but not committed (it's a reference file)
- No tasks from ROADMAP.md Phase 1+ have been started yet — next session should begin with task 1.01
---