Documentatie Tehnica
Ghid complet al platformei CDE 19650 Cloud — arhitectura, API, workflow si manual de utilizare
Arhitectura
Clean Architecture (Onion) — separare clara a responsabilitatilor
Diagrama Straturilor
Presentation Layer
Interfata utilizator SPA cu componente reactive si design responsive
API Layer
REST API securizat cu autentificare JWT si politici CORS configurabile
Application Layer
Logica de business, mapari date, contracte intre straturi
Domain Layer
Modelul de domeniu pur, fara dependente externe
Infrastructure Layer
Implementari concrete: persistenta, stocare fisiere, email
Stack Tehnologic
.NET 8
Backend
PostgreSQL
Database
React 18
Frontend
Tailwind CSS
Styling
Azure Blob Storage
Storage
JWT Auth
Security
EF Core
ORM
Vite
Build
MailKit
Workflow ISO 19650
Ciclul de viata al documentelor conform standardului international
Cele 4 Stari ale Documentelor
WIP
Work in Progress
Documente in lucru. Accesibile echipei de productie pentru editare si revizuire interna.
Shared
Partajat
Documente trimise pentru verificare. Vizibile partilor numitoare pentru aprobare sau respingere.
Published
Publicat
Documente aprobate oficial. Reprezinta versiunea autoritativa pentru utilizare in proiect.
Archived
Arhivat
Documente arhivate permanent. Pastrate pentru referinta istorica si conformitate legala.
Reguli de Tranzitie
| Din | In | Actiune | Roluri Permise | Note |
|---|---|---|---|---|
| WIP | Shared | Submit for Review | Lead Appointed Party, Task Team | Trimite documentul pentru verificare |
| Shared | Published | Approve | Lead Appointing Party, Appointing Party | Aproba documentul pentru publicare |
| Shared | WIP | Reject | Lead Appointing Party, Appointing Party | Respinge cu comentariu obligatoriu — creeaza Issue automat |
| Published | Archived | Archive | Lead Appointed Party | Arhiveaza documentul pentru stocare permanenta |
| Published | Shared | Recall | Lead Appointed Party | Returneaza documentul pentru re-verificare |
Organizare Blob Storage
Fisierele sunt organizate in Azure Blob Storage dupa proiect si starea workflow-ului:
/projects/
├── {projectId}/
│ ├── wip/
│ │ ├── CMC-BIMART-XX-XX-DR-ARCH-00001.pdf
│ │ └── CMC-BIMART-XX-XX-SP-STR-00002.pdf
│ ├── shared/
│ │ └── CMC-BIMART-XX-XX-DR-ARCH-00001.pdf
│ ├── published/
│ │ └── CMC-BIMART-XX-XX-DR-ARCH-00001.pdf
│ └── archived/
│ └── CMC-BIMART-XX-XX-DR-ARCH-00001.pdfRoluri si Permisiuni
Matrice completa de acces conform ISO 19650
Lead Appointing Party
Client / Angajator
WIP
Read
Shared
Read + Approve
Published
Read
Archived
Read
Appointing Party
Sub-contractor
WIP
Read
Shared
Read + Approve
Published
Read
Archived
Read
Lead Appointed Party
Information Manager
WIP
Read + Write
Shared
Read + Submit
Published
Read + Publish
Archived
Read + Archive
Task Team
Producatori documente
WIP
Read + Write
Shared
Read
Published
Read
Archived
Read
Matrice Completa Permisiuni
| Rol (Cod) | Descriere | WIP | Shared | Published | Archived |
|---|---|---|---|---|---|
| Lead Appointing Party(10) | Client / Angajator | Read | Read + Approve | Read | Read |
| Appointing Party(20) | Sub-contractor | Read | Read + Approve | Read | Read |
| Lead Appointed Party(30) | Information Manager | Read + Write | Read + Submit | Read + Publish | Read + Archive |
| Task Team(40) | Producatori documente | Read + Write | Read | Read | Read |
API Reference
REST API — autentificare JWT, format JSON, paginare offset-based
Base URL
https://api.cde19650.com
Exemplu Request / Response
Request
curl -X POST https://api.cde19650.com/api/auth/login \ -H "Content-Type: application/json" \ -d '{ "email": "user@exemplu.ro", "password": "ParolaSecurizata123!" }'
Response 200 OK
{ "token": "eyJhbGciOiJIUzI1NiIs...", "refreshToken": "d4f8a2b1-9c3e-4f5a...", "expiresAt": "2026-02-24T14:30:00Z", "user": { "id": "3fa85f64-5717-4562-b3fc", "email": "user@exemplu.ro", "fullName": "Ion Popescu", "role": "LeadAppointedParty" } }
Autentificare: Toate endpoint-urile (cu exceptia /api/auth/login si /api/auth/register) necesita header-ul Authorization: Bearer <token>.
Ghid de Utilizare
Pasi rapizi pentru a incepe lucrul cu platforma CDE 19650 Cloud
Autentificare
Login cu email si parola. Sistemul returneaza un JWT token care este utilizat pentru autentificarea tuturor requesturilor ulterioare. La prima autentificare este necesara confirmarea adresei de email.
Creare Proiect
Definirea codului de proiect (ex: CMC), adaugarea membrilor echipei si atribuirea rolurilor ISO 19650 (Lead Appointing Party, Appointing Party, Lead Appointed Party, Task Team).
Upload Documente
Upload documente cu validare automata a naming convention-ului ISO 19650 (7 segmente: Proiect-Originator-Volum-Nivel-Tip-Rol-Numar). Documentele intra automat in starea WIP.
Tranzitii Workflow
Submit for Review (WIP catre Shared), Approve/Reject (Shared catre Published/WIP), Publish si Archive. Fiecare tranzitie este controlata pe baza rolurilor si genereaza notificari email.
Managementul Problemelor
Creare, atribuire si rezolvare issues. 6 tipuri disponibile: Comentariu, Observatie, Neconformitate, Conflict (Clash), RFI, Coordonare. Suport pentru comentarii si link-uri catre documente.
Cautare si Export
Filtre avansate multi-camp (numar document, autor, sector, disciplina, extensie fisier, interval date). Vederi salvate (preset-uri filtre per utilizator). Export CSV cu filtrele aplicate.
Naming Convention
Format standardizat de denumire a documentelor conform ISO 19650 — 7 segmente
Format
Fiecare document urmeaza formatul cu 7 segmente separate prin cratima:
Proiect-Originator-Volum-Nivel-Tip-Rol-Numar
Tipuri Document (Segment: Tip)
| Cod | Denumire | Descriere |
|---|---|---|
| DR | Drawing | Desene tehnice si planuri |
| SP | Specification | Specificatii tehnice |
| CM | Calculation/Model | Calcule si modele |
| RP | Report | Rapoarte tehnice |
| CO | Correspondence | Corespondenta |
| PP | Presentation | Prezentari |
| SH | Schedule | Programari si grafice |
| VS | Visualization | Vizualizari si randari |
Rol / Disciplina (Segment: Rol)
| Cod | Denumire | Descriere |
|---|---|---|
| ARCH | Architecture | Arhitectura |
| STR | Structure | Structura |
| MEP | MEP | Instalatii mecanice, electrice, sanitare |
| ELEC | Electrical | Instalatii electrice |
| HVAC | HVAC | Incalzire, ventilatie, aer conditionat |
| GEO | Geotechnical | Geotehnica |
| PLN | Planning | Planificare |
| PM | Project Management | Management de proiect |
Securitate
Protectia datelor la nivel enterprise — autentificare, autorizare, audit, conformitate
Autentificare
- JWT tokens cu expirare configurabila
- Confirmare email obligatorie la inregistrare
- Password hashing cu algoritm securizat (bcrypt)
- Refresh token pentru sesiuni persistente
Autorizare
- 4 roluri ISO 19650 cu permisiuni granulare
- Enforceare server-side pe fiecare endpoint
- Verificare rol la fiecare tranzitie workflow
- Izolare completa intre proiecte
Audit
- Logare completa a tuturor actiunilor
- Tracking IP adresa si user agent
- Timestamp-uri precise pentru fiecare operatie
- Export audit trail in format CSV
Protectia Datelor
- Azure Blob Storage cu encriptare at rest
- HTTPS enforced pe toate comunicatiile
- CORS configurat restrictiv per domeniu
- Backup automat al bazei de date PostgreSQL
Conformitate
- ISO 19650 — workflow si naming convention
- GDPR-ready — dreptul la stergere, export date
- Audit trail complet pentru conformitate legala
- Retentie configurabila per proiect
Rezumat Securitate
Platforma CDE 19650 Cloud implementeaza securitate la nivel enterprise: autentificare JWT cu confirmare email, autorizare bazata pe 4 roluri ISO 19650 cu enforceare server-side, audit trail complet cu tracking IP si export CSV, stocare Azure Blob Storage cu encriptare at rest, HTTPS enforced si CORS configurat restrictiv. Sistemul este conform ISO 19650 si GDPR-ready.
Multilingv EN / RO
Interfata disponibila in romana si engleza — comutare instantanee cu steag tara
Limbile Disponibile
English
Limba primara — ruta /en/*
Română
Limba secundara — ruta /ro/*
Limbile Suportate
- Engleza (EN) — limba primara, ruta /en/*
- Romana (RO) — ruta /ro/*
- Fallback automat la EN pentru chei lipsa din RO
- Detectie automata limba la prima vizita
Language Switcher
- Dropdown in Navbar cu steag SVG pentru fiecare limba
- Steag Romania (tricolor albastru/galben/rosu) pentru RO
- Steag UK (Union Jack) pentru EN
- Selectia persista in localStorage la refresh pagina
Implementare Tehnica
- i18next + react-i18next + i18next-http-backend
- Fisiere JSON per namespace, incarcate lazy la runtime
- 17 namespace-uri: common, home, features, pricing, contact, about etc.
- Nu sunt bundlate in JS — reduc dimensiunea bundle-ului initial
Pattern de Utilizare
- useTranslation("namespace") in fiecare componenta
- Array-uri cu obiecte via t("key", { returnObjects: true })
- Iconitele Lucide si clasele Tailwind raman in JSX (nu in JSON)
- Rute bilingve: /en/features si /ro/functionalitati → aceeasi componenta
Exemple Rute Bilingve
| Pagina | Ruta EN | Ruta RO |
|---|---|---|
| Acasa | /en | /ro |
| Functionalitati | /en/features | /ro/functionalitati |
| Preturi | /en/pricing | /ro/preturi |
| Contact | /en/contact | /ro/contact |
| ISO 19650 | /en/iso-19650 | /ro/iso-19650 |
| Despre noi | /en/about | /ro/despre-noi |
| Integrari | /en/integrations | /ro/integrari |
Notificari Utilizator
Email automat la fiecare tranzitie de workflow — fiecare participant este informat in timp real
Evenimente care Declanseaza Notificari
Notificare trimisa cand un document este supus revizuirii
Destinatari: Lead Appointing Party, Appointing Party
Notificare trimisa la aprobarea si publicarea unui document
Destinatari: Lead Appointed Party, Task Team
Notificare trimisa la respingerea documentului cu comentariu obligatoriu
Destinatari: Lead Appointed Party, Task Team
Notificare trimisa la arhivarea permanenta a unui document
Destinatari: Toti membrii proiectului
Notificare trimisa cand un document publicat este retras pentru re-verificare
Destinatari: Lead Appointed Party, Task Team
Preferinte Notificari per Utilizator
Fiecare utilizator poate activa/dezactiva tipurile de notificari din setarile contului sau via API.
| Eveniment | Cheie API | Implicit |
|---|---|---|
| Document trimis pentru revizuire | DocumentSubmitted | Activ |
| Document aprobat si publicat | DocumentApproved | Activ |
| Document respins cu comentariu | DocumentRejected | Activ |
| Document arhivat | DocumentArchived | Inactiv |
| Issue nou creat in proiect | IssueCreated | Activ |
| Issue atribuit mie | IssueAssigned | Activ |
| Issue rezolvat | IssueResolved | Inactiv |
| Membru nou adaugat in proiect | ProjectMemberAdded | Inactiv |
Endpoint-uri API Notificari
/api/notification-preferences
Citeste preferintele de notificare ale utilizatorului curent
/api/notification-preferences
Actualizeaza preferintele — body: { "DocumentSubmitted": true, "IssueCreated": false, ... }
Infrastructura Email
Notificarile sunt trimise prin MailKit (Infrastructure Layer). Template-urile HTML sunt responsive, includ sigla platformei, detaliile documentului (numar, titlu, proiect, stare noua) si un link direct catre document. Trimiterea este asincronă — nu blocheaza tranzitia workflow. Configuratia SMTP este definita in appsettings.json.