fix(email-signature): correct addresses, add Albac, fix logo sizing, update US/SDT colors from logos, fix hydration error
- Fix all 3 address constants: Christescu (nr. 12, 400416), Unirii (nr. 3 sc. 3 ap. 26, 400432), Albac (nr. 2 ap. 1, 400459) - Add 3rd address option (Albac) to all company address selectors - Default address changed to Christescu for all companies - Update US brand colors to logo blue (#345476), SDT to logo teal (#0182A1) - Fix slashAccent for US/SDT (was pointing to logo files instead of slash assets) - Add logoDimensions to CompanyBranding type for per-company logo sizing - Set US logo to 140x24 and SDT to 71x24 (matching SVG aspect ratios) - Fix sidebar hydration error: remove unused useTheme() hook call - Update color palettes in configurator to match logo-derived colors Tasks: 1.01 (verified), 1.02 (address toggle + fixes)
This commit is contained in:
95
ROADMAP.md
95
ROADMAP.md
@@ -18,11 +18,11 @@
|
||||
|
||||
## AI Model Recommendations
|
||||
|
||||
| Tag | Claude | OpenAI | Google | Best For |
|
||||
|---|---|---|---|---|
|
||||
| `[HEAVY]` | Opus 4.6 | GPT-5.3-Codex | Gemini 3 Pro | Complex multi-file features, business logic, architecture, new modules |
|
||||
| `[STANDARD]` | Sonnet 4.6 | GPT-5.2 | Gemini 3 Flash | Refactoring, moderate features, UI work, tests, documentation |
|
||||
| `[LIGHT]` | Haiku 4.5 | GPT-4o-mini | Gemini 2.5 Flash | Quick fixes, small edits, config changes, build debugging |
|
||||
| Tag | Claude | OpenAI | Google | Best For |
|
||||
| ------------ | ---------- | ------------- | ---------------- | ---------------------------------------------------------------------- |
|
||||
| `[HEAVY]` | Opus 4.6 | GPT-5.3-Codex | Gemini 3 Pro | Complex multi-file features, business logic, architecture, new modules |
|
||||
| `[STANDARD]` | Sonnet 4.6 | GPT-5.2 | Gemini 3 Flash | Refactoring, moderate features, UI work, tests, documentation |
|
||||
| `[LIGHT]` | Haiku 4.5 | GPT-4o-mini | Gemini 2.5 Flash | Quick fixes, small edits, config changes, build debugging |
|
||||
|
||||
**Default recommendation: Sonnet 4.6** — it matches Opus-class performance at Sonnet pricing ($3/$15 per M tokens). Use Opus only for tasks marked `[HEAVY]`. Use Haiku for tasks marked `[LIGHT]`.
|
||||
|
||||
@@ -30,22 +30,22 @@
|
||||
|
||||
## Current Module Status vs. XLSX Spec
|
||||
|
||||
| # | 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 | 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 | — |
|
||||
|
||||
---
|
||||
|
||||
@@ -75,6 +75,7 @@
|
||||
### 1.03 `[STANDARD]` Prompt Generator — Architecture Visualization Templates
|
||||
|
||||
**What:** Add 6+ new builtin templates per xlsx spec:
|
||||
|
||||
1. Architectural rendering prompt (basic massing to detailed)
|
||||
2. Sketch → professional render prompt
|
||||
3. Visualization refinement prompt (photorealism fine-tuning)
|
||||
@@ -94,11 +95,13 @@
|
||||
### 1.04 `[STANDARD]` Tag Manager — US/SDT Project Seeds + Mandatory Categories
|
||||
|
||||
**What:**
|
||||
|
||||
1. Add Urban Switch and Studii de Teren project numbering to seed data (US-001, SDT-001 format)
|
||||
2. Enforce mandatory 1st category (project) and 2nd category (phase) when creating tags — show validation error if missing
|
||||
3. Import the full tag structure from `legacy/manicprojects/current manic time Tags.txt` in proper 1st→5th category hierarchy
|
||||
|
||||
**Files to modify:**
|
||||
|
||||
- `src/modules/tag-manager/services/seed-data.ts` — Add US/SDT projects
|
||||
- `src/modules/tag-manager/components/tag-create-form.tsx` — Add mandatory validation
|
||||
|
||||
@@ -107,6 +110,7 @@
|
||||
### 1.05 `[STANDARD]` Mini Utilities — Add Missing Tools
|
||||
|
||||
**What:** Add the 5 missing tools from xlsx:
|
||||
|
||||
1. **U-value → R-value converter** (R = 1/U, with material thickness input)
|
||||
2. **AI artifact cleaner** (strip markdown formatting, fix encoding, remove prompt artifacts from pasted text)
|
||||
3. **MDLPA date locale validator** (validate Romanian administrative dates against legal calendar)
|
||||
@@ -121,10 +125,12 @@
|
||||
### 1.06 `[STANDARD]` Digital Signatures — File Upload + Tag Editing
|
||||
|
||||
**What:**
|
||||
|
||||
1. Add drag-and-drop / file picker for uploading signature/stamp images (convert to base64 on upload, like Registratura attachments)
|
||||
2. Add tag input field to the asset form (tags field exists in type but form doesn't render it)
|
||||
|
||||
**Files to modify:**
|
||||
|
||||
- `src/modules/digital-signatures/components/` — asset form component
|
||||
|
||||
---
|
||||
@@ -132,11 +138,13 @@
|
||||
### 1.07 `[LIGHT]` Password Vault — Company Scope + Strength Meter
|
||||
|
||||
**What:**
|
||||
|
||||
1. Add `company` field to credential type and form (scope passwords to a company)
|
||||
2. Add password strength indicator (visual bar: weak/medium/strong based on length + character diversity)
|
||||
3. Rename `encryptedPassword` → `password` in the type (it's not encrypted, the name is misleading)
|
||||
|
||||
**Files to modify:**
|
||||
|
||||
- `src/modules/password-vault/types.ts`
|
||||
- `src/modules/password-vault/components/` — form and list components
|
||||
|
||||
@@ -146,6 +154,7 @@
|
||||
|
||||
**What:** Change `assignedTo` from free text to an autocomplete that links to Address Book contacts (same pattern as Registratura sender/recipient).
|
||||
**Files to modify:**
|
||||
|
||||
- `src/modules/it-inventory/components/` — equipment form
|
||||
- `src/modules/it-inventory/types.ts` — Add `assignedToContactId?: string`
|
||||
|
||||
@@ -154,12 +163,14 @@
|
||||
### 1.09 `[STANDARD]` Address Book — vCard Export + Registratura Reverse Lookup
|
||||
|
||||
**What:**
|
||||
|
||||
1. Add "Export vCard" button per contact (generate `.vcf` file download)
|
||||
2. Add a section showing Registratura entries where this contact appears as sender or recipient
|
||||
|
||||
**Files to modify:**
|
||||
|
||||
- `src/modules/address-book/components/` — contact card/detail view
|
||||
**Files to create:**
|
||||
**Files to create:**
|
||||
- `src/modules/address-book/services/vcard-export.ts`
|
||||
|
||||
---
|
||||
@@ -168,8 +179,9 @@
|
||||
|
||||
**What:** When a template file URL points to a `.docx`, parse it client-side to extract `{{placeholder}}` patterns and auto-populate the `placeholders[]` field. Use JSZip (already installed) to read the docx XML.
|
||||
**Files to modify:**
|
||||
|
||||
- `src/modules/word-templates/components/` — template form
|
||||
**Files to create:**
|
||||
**Files to create:**
|
||||
- `src/modules/word-templates/services/placeholder-parser.ts`
|
||||
|
||||
---
|
||||
@@ -177,6 +189,7 @@
|
||||
### 1.11 `[STANDARD]` Dashboard — Activity Feed + KPI Panels
|
||||
|
||||
**What:**
|
||||
|
||||
1. Add an activity feed showing recent actions across modules (last 20 creates/updates/deletes from localStorage timestamps)
|
||||
2. Add KPI cards: entries this week, deadlines this week, overdue count, contacts added this month
|
||||
3. Wire the `DashboardWidget` type that already exists in `types.ts`
|
||||
@@ -207,6 +220,7 @@
|
||||
### 2.01 `[HEAVY]` Hot Desk Module — Full Implementation
|
||||
|
||||
**What:** Build Module 14 from scratch per xlsx spec:
|
||||
|
||||
- 4 desks in a shared room
|
||||
- Users reserve desks 1 week ahead
|
||||
- Calendar view showing desk availability per day
|
||||
@@ -215,6 +229,7 @@
|
||||
- Visual room layout showing which desks are booked
|
||||
|
||||
**Module structure:**
|
||||
|
||||
```
|
||||
src/modules/hot-desk/
|
||||
├── components/
|
||||
@@ -232,6 +247,7 @@ src/modules/hot-desk/
|
||||
```
|
||||
|
||||
**Files to also create/modify:**
|
||||
|
||||
- `src/app/(modules)/hot-desk/page.tsx` — Route
|
||||
- `src/config/modules.ts` — Register module
|
||||
- `src/config/navigation.ts` — Add sidebar entry
|
||||
@@ -248,9 +264,11 @@ src/modules/hot-desk/
|
||||
### 3.01 `[STANDARD]` Install Testing Framework (Vitest)
|
||||
|
||||
**What:** Install and configure Vitest with React Testing Library.
|
||||
|
||||
```bash
|
||||
npm install -D vitest @testing-library/react @testing-library/jest-dom jsdom @vitest/coverage-v8
|
||||
```
|
||||
|
||||
**Files to create:** `vitest.config.ts`, `src/test-setup.ts`
|
||||
**Files to modify:** `package.json` (add test scripts)
|
||||
|
||||
@@ -259,6 +277,7 @@ npm install -D vitest @testing-library/react @testing-library/jest-dom jsdom @vi
|
||||
### 3.02 `[STANDARD]` Unit Tests — Critical Services
|
||||
|
||||
**What:** Write tests for the most critical business logic:
|
||||
|
||||
1. `working-days.test.ts` — Orthodox Easter 2024-2030, addWorkingDays, backward deadlines
|
||||
2. `deadline-service.test.ts` — Due date computation, tacit approval, chain resolution
|
||||
3. `registry-service.test.ts` — Number generation, overdue calculation
|
||||
@@ -272,6 +291,7 @@ npm install -D vitest @testing-library/react @testing-library/jest-dom jsdom @vi
|
||||
### 3.03 `[STANDARD]` Data Export/Import for All Modules
|
||||
|
||||
**What:** Create a shared utility for backing up localStorage data:
|
||||
|
||||
1. Per-module JSON export (download file)
|
||||
2. Per-module JSON import (upload + merge)
|
||||
3. Full backup: export ALL modules as single JSON
|
||||
@@ -284,6 +304,7 @@ npm install -D vitest @testing-library/react @testing-library/jest-dom jsdom @vi
|
||||
### 3.04 `[LIGHT]` Update Stale Documentation
|
||||
|
||||
**What:** Update docs to reflect current state:
|
||||
|
||||
- `docs/architecture/SYSTEM-ARCHITECTURE.md` — Change modules from "Planned" to "Implemented"
|
||||
- `docs/DATA-MODEL.md` — Add TrackedDeadline, Hot Desk schemas
|
||||
- `docs/REPO-STRUCTURE.md` — Add new files
|
||||
@@ -303,6 +324,7 @@ npm install -D vitest @testing-library/react @testing-library/jest-dom jsdom @vi
|
||||
### 4.01 `[HEAVY]` AI Chat — Real API Integration
|
||||
|
||||
**What:** Replace demo mode with actual AI provider calls:
|
||||
|
||||
- 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
|
||||
@@ -310,6 +332,7 @@ npm install -D vitest @testing-library/react @testing-library/jest-dom jsdom @vi
|
||||
- Token usage display
|
||||
|
||||
**Env vars:**
|
||||
|
||||
```
|
||||
ANTHROPIC_API_KEY=sk-ant-...
|
||||
OPENAI_API_KEY=sk-...
|
||||
@@ -325,6 +348,7 @@ AI_DEFAULT_MODEL=claude-sonnet-4-6-20261001
|
||||
### 4.02 `[STANDARD]` AI Chat — Domain-Specific System Prompts
|
||||
|
||||
**What:** Architecture office-focused conversation modes:
|
||||
|
||||
- Romanian construction law assistant
|
||||
- Architectural visualization prompt crafter
|
||||
- Technical specification writer
|
||||
@@ -347,12 +371,14 @@ AI_DEFAULT_MODEL=claude-sonnet-4-6-20261001
|
||||
### 5.01 `[HEAVY]` Authentik OIDC Integration
|
||||
|
||||
**What:** Replace stub user with real Authentik SSO.
|
||||
|
||||
- NextAuth.js / Auth.js route handler
|
||||
- OIDC token → user profile resolution
|
||||
- Cookie-based session
|
||||
- `useAuth()` returns real user
|
||||
|
||||
**Server setup required:**
|
||||
|
||||
1. Create OAuth2 app in Authentik (http://10.10.10.166:9100)
|
||||
2. Set redirect URI: `http://10.10.10.166:3000/api/auth/callback/authentik`
|
||||
3. Set env vars: `AUTHENTIK_URL`, `AUTHENTIK_CLIENT_ID`, `AUTHENTIK_CLIENT_SECRET`, `NEXTAUTH_SECRET`
|
||||
@@ -499,22 +525,23 @@ AI_DEFAULT_MODEL=claude-sonnet-4-6-20261001
|
||||
|
||||
## Infrastructure Credentials Needed
|
||||
|
||||
| Service | What | When Needed |
|
||||
|---|---|---|
|
||||
| **US/SDT Logos** | SVG/PNG logo files | Phase 1 (task 1.01) |
|
||||
| **US/SDT Addresses** | Office addresses for email signature | Phase 1 (task 1.02) |
|
||||
| **Anthropic API Key** | `sk-ant-...` from console.anthropic.com | Phase 4 (task 4.01) |
|
||||
| **OpenAI API Key** | `sk-...` from platform.openai.com | Phase 4 (task 4.01) |
|
||||
| **Authentik Admin** | Login to create OAuth app at :9100 | Phase 5 (task 5.01) |
|
||||
| **MinIO Credentials** | Access key + secret key for :9003 | Phase 6 (task 6.04) |
|
||||
| **PostgreSQL** | New container + password | Phase 6 (task 6.01) |
|
||||
| **Gitea Actions Runner** | Registration token from Gitea admin | Phase 9 (task 9.01) |
|
||||
| Service | What | When Needed |
|
||||
| ------------------------ | --------------------------------------- | ------------------- |
|
||||
| **US/SDT Logos** | SVG/PNG logo files | Phase 1 (task 1.01) |
|
||||
| **US/SDT Addresses** | Office addresses for email signature | Phase 1 (task 1.02) |
|
||||
| **Anthropic API Key** | `sk-ant-...` from console.anthropic.com | Phase 4 (task 4.01) |
|
||||
| **OpenAI API Key** | `sk-...` from platform.openai.com | Phase 4 (task 4.01) |
|
||||
| **Authentik Admin** | Login to create OAuth app at :9100 | Phase 5 (task 5.01) |
|
||||
| **MinIO Credentials** | Access key + secret key for :9003 | Phase 6 (task 6.04) |
|
||||
| **PostgreSQL** | New container + password | Phase 6 (task 6.01) |
|
||||
| **Gitea Actions Runner** | Registration token from Gitea admin | Phase 9 (task 9.01) |
|
||||
|
||||
---
|
||||
|
||||
## Quick Picker
|
||||
|
||||
**15 min tasks** `[LIGHT]`:
|
||||
|
||||
- 1.01 — Check logo files
|
||||
- 1.07 — Password vault company + strength
|
||||
- 1.08 — IT inventory contact link
|
||||
@@ -524,6 +551,7 @@ AI_DEFAULT_MODEL=claude-sonnet-4-6-20261001
|
||||
- 3.05 — Wire env var URLs
|
||||
|
||||
**1 hour tasks** `[STANDARD]`:
|
||||
|
||||
- 1.03 — Prompt generator templates
|
||||
- 1.04 — Tag manager seeds + mandatory
|
||||
- 1.05 — Mini utilities new tools
|
||||
@@ -533,6 +561,7 @@ AI_DEFAULT_MODEL=claude-sonnet-4-6-20261001
|
||||
- 3.01 + 3.02 — Tests setup + core tests
|
||||
|
||||
**Full session tasks** `[HEAVY]`:
|
||||
|
||||
- 2.01 — Hot Desk module (new)
|
||||
- 4.01 — AI Chat API integration
|
||||
- 5.01 — Authentik SSO
|
||||
|
||||
Reference in New Issue
Block a user