0c4b91707f
CRITICAL fixes: - Fix SQL injection in geoportal search (template literal in $queryRaw) - Preserve enrichment data during GIS re-sync (upsert update explicit fields only) - Fix ePay version race condition (advisory lock in transaction) - Add requireAuth() to compress-pdf and unlock routes (were unauthenticated) - Remove hardcoded Stirling PDF API key (env vars now required) IMPORTANT fixes: - Add admin role check on registratura debug-sequences endpoint - Fix reserved slot race condition with advisory lock in transaction - Use SSO identity in close-guard-dialog instead of hardcoded "Utilizator" - Storage DELETE catches only P2025 (not found), re-throws real errors - Add onDelete: SetNull for GisFeature → GisSyncRun relation - Move portal-only users to PORTAL_ONLY_USERS env var - Add security headers (X-Frame-Options, X-Content-Type-Options, Referrer-Policy) - Add periodic cleanup for eTerra/ePay session caches and progress store - Log warning when ePay dataDocument is missing (expiry fallback) Cleanup: - Delete orphaned rgi-test page (1086 lines, unregistered, inaccessible) - Delete legacy/ folder (5 files, unreferenced from src/) - Remove unused ensureBucketExists() from minio-client.ts Documentation: - Optimize CLAUDE.md: 464 → 197 lines (moved per-module details to docs/) - Create docs/ARCHITECTURE-QUICK.md (80 lines: data flow, deps, env vars) - Create docs/MODULE-MAP.md (140 lines: entry points, API routes, cross-deps) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
6.3 KiB
6.3 KiB
ArchiTools — Module Map
Quick reference: entry points, key files, API routes, and cross-module dependencies.
Module Index
| Module | Entry Point | Config | Types |
|---|---|---|---|
| Dashboard | modules/dashboard/index.ts |
— | types.ts |
| Email Signature | modules/email-signature/index.ts |
config.ts |
types.ts |
| Word XML | modules/word-xml/index.ts |
config.ts |
types.ts |
| Registratura | modules/registratura/index.ts |
config.ts |
types.ts |
| Tag Manager | modules/tag-manager/index.ts |
config.ts |
types.ts |
| IT Inventory | modules/it-inventory/index.ts |
config.ts |
types.ts |
| Address Book | modules/address-book/index.ts |
config.ts |
types.ts |
| Password Vault | modules/password-vault/index.ts |
config.ts |
types.ts |
| Mini Utilities | modules/mini-utilities/index.ts |
config.ts |
types.ts |
| Prompt Generator | modules/prompt-generator/index.ts |
config.ts |
types.ts |
| Digital Signatures | modules/digital-signatures/index.ts |
config.ts |
types.ts |
| Word Templates | modules/word-templates/index.ts |
config.ts |
types.ts |
| AI Chat | modules/ai-chat/index.ts |
config.ts |
types.ts |
| Hot Desk | modules/hot-desk/index.ts |
config.ts |
types.ts |
| ParcelSync | modules/parcel-sync/index.ts |
config.ts |
types.ts |
| Geoportal | modules/geoportal/index.ts |
config.ts |
types.ts |
| Visual CoPilot | modules/visual-copilot/index.ts |
config.ts |
— |
Module Details
Dashboard
- Route:
/ - Main component:
app/(modules)/page.tsx(home page, not a registered module) - API routes: none (reads via storage API)
- Cross-deps: none
Email Signature
- Route:
/email-signature - Main component:
components/email-signature-module.tsx - API routes: none (client-only)
- Cross-deps: none
Word XML
- Route:
/word-xml - Main component:
components/word-xml-module.tsx - Services:
services/xml-builder.ts,services/zip-export.ts - API routes: none (client-only)
- Cross-deps: none
Registratura
- Route:
/registratura - Main component:
components/registratura-module.tsx - Key services:
services/registry-service.ts(numbering, advisory locks),services/working-days.ts(Romanian holidays),services/deadline-catalog.ts(18 legal deadline types),services/deadline-service.ts - API routes:
/api/registratura(CRUD + audit),/api/registratura/reserved,/api/registratura/debug-sequences,/api/registratura/audit,/api/registratura/status-check - Cross-deps: address-book (quick contact, reverse lookup), notifications (deadline digest)
Tag Manager
- Route:
/tag-manager - Main component:
components/tag-manager-module.tsx - Services:
services/manictime-sync.ts - API routes:
/api/manictime - Cross-deps: core/tagging
IT Inventory
- Route:
/it-inventory - Main component:
components/it-inventory-module.tsx - API routes: none (via storage API)
- Cross-deps: none
Address Book
- Route:
/address-book - Main component:
components/address-book-module.tsx - Services:
services/vcard-export.ts - API routes:
/api/address-book(CRUD, Bearer token support) - Cross-deps: registratura (reverse lookup via
useRegistry)
Password Vault
- Route:
/password-vault - Main component:
components/password-vault-module.tsx - API routes:
/api/vault(AES-256-GCM encrypt/decrypt) - Cross-deps: none
Mini Utilities
- Route:
/mini-utilities - Main component:
components/mini-utilities-module.tsx(monolithic, tab-based) - API routes:
/api/compress-pdf/*(local qpdf + cloud iLovePDF),/api/compress-pdf/unlock - Cross-deps: none
Prompt Generator
- Route:
/prompt-generator - Main component:
components/prompt-generator-module.tsx - Services:
services/prompt-templates.ts(18 templates) - API routes: none (client-only)
- Cross-deps: none
Digital Signatures
- Route:
/digital-signatures - Main component:
components/digital-signatures-module.tsx - API routes: none (via storage API)
- Cross-deps: none
Word Templates
- Route:
/word-templates - Main component:
components/word-templates-module.tsx - Services:
services/docx-analyzer.ts - API routes: none (via storage API)
- Cross-deps: none
AI Chat
- Route:
/ai-chat - Main component:
components/ai-chat-module.tsx - API routes:
/api/ai-chat(multi-provider proxy) - Cross-deps: tag-manager (project linking)
Hot Desk
- Route:
/hot-desk - Main component:
components/hot-desk-module.tsx - Services:
services/desk-layout.ts - API routes: none (via storage API)
- Cross-deps: none
ParcelSync
- Route:
/parcel-sync - Main component:
components/parcel-sync-module.tsx(~4100 lines, 5 tabs) - Key services:
services/eterra-client.ts(~1000 lines, eTerra API),services/sync-service.ts,services/enrich-service.ts,services/eterra-health.ts,services/epay-client.ts,services/epay-queue.ts,services/epay-storage.ts,services/no-geom-sync.ts - API routes:
/api/eterra/*(login, sync, search, features, UATs, health),/api/ancpi/*(order, test),/api/geoportal/*(search, boundaries, setup) - Cross-deps: geoportal (map components via map-tab.tsx), MinIO (CF extract PDFs), PostGIS (GisFeature, GisUat)
Geoportal
- Route:
/geoportal - Main component:
components/geoportal-module.tsx - Key components:
components/map-viewer.tsx(MapLibre),components/basemap-switcher.tsx,components/selection-toolbar.tsx,components/feature-info-panel.tsx - API routes:
/api/geoportal/*(search, boundary-check, uat-bounds, setup-views) - Cross-deps: parcel-sync (declared dependency — uses PostGIS data)
Visual CoPilot
- Route:
/visual-copilot - Status: Placeholder (iframe to separate repo
git.beletage.ro/gitadmin/vim) - API routes: none
- Cross-deps: none