Documentatie Tehnica

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

React 18 + Tailwind CSS + Vite

API Layer

REST API securizat cu autentificare JWT si politici CORS configurabile

.NET 8 Controllers + JWT Auth + CORS

Application Layer

Logica de business, mapari date, contracte intre straturi

Services, DTOs, Interfaces

Domain Layer

Modelul de domeniu pur, fara dependente externe

Entities, Enums, Value Objects

Infrastructure Layer

Implementari concrete: persistenta, stocare fisiere, email

EF Core + PostgreSQL + Azure Blob Storage + MailKit

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

Email

Workflow ISO 19650

Ciclul de viata al documentelor conform standardului international

Cele 4 Stari ale Documentelor

1

WIP

Work in Progress

Documente in lucru. Accesibile echipei de productie pentru editare si revizuire interna.

2

Shared

Partajat

Documente trimise pentru verificare. Vizibile partilor numitoare pentru aprobare sau respingere.

3

Published

Publicat

Documente aprobate oficial. Reprezinta versiunea autoritativa pentru utilizare in proiect.

4

Archived

Arhivat

Documente arhivate permanent. Pastrate pentru referinta istorica si conformitate legala.

Reguli de Tranzitie

DinInActiuneRoluri PermiseNote
WIP
Shared
Submit for ReviewLead Appointed Party, Task TeamTrimite documentul pentru verificare
Shared
Published
ApproveLead Appointing Party, Appointing PartyAproba documentul pentru publicare
Shared
WIP
RejectLead Appointing Party, Appointing PartyRespinge cu comentariu obligatoriu — creeaza Issue automat
Published
Archived
ArchiveLead Appointed PartyArhiveaza documentul pentru stocare permanenta
Published
Shared
RecallLead Appointed PartyReturneaza 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.pdf

Roluri si Permisiuni

Matrice completa de acces conform ISO 19650

10

Lead Appointing Party

Client / Angajator

WIP

Read

Shared

Read + Approve

Published

Read

Archived

Read

20

Appointing Party

Sub-contractor

WIP

Read

Shared

Read + Approve

Published

Read

Archived

Read

30

Lead Appointed Party

Information Manager

WIP

Read + Write

Shared

Read + Submit

Published

Read + Publish

Archived

Read + Archive

40

Task Team

Producatori documente

WIP

Read + Write

Shared

Read

Published

Read

Archived

Read

Matrice Completa Permisiuni

Rol (Cod)DescriereWIPSharedPublishedArchived
Lead Appointing Party(10)Client / AngajatorReadRead + ApproveReadRead
Appointing Party(20)Sub-contractorReadRead + ApproveReadRead
Lead Appointed Party(30)Information ManagerRead + WriteRead + SubmitRead + PublishRead + Archive
Task Team(40)Producatori documenteRead + WriteReadReadRead

API Reference

REST API — autentificare JWT, format JSON, paginare offset-based

Base URL

https://api.cde19650.com

GET Citire date
POST Creare / Actiune
PUT Actualizare
DELETE Stergere

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

1

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.

2

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).

3

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.

4

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.

5

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.

6

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

CMC-BIMART-XX-XX-DR-ARCH-00001
Proiect Originator Volum Nivel Tip Rol Numar

Tipuri Document (Segment: Tip)

CodDenumireDescriere
DRDrawingDesene tehnice si planuri
SPSpecificationSpecificatii tehnice
CMCalculation/ModelCalcule si modele
RPReportRapoarte tehnice
COCorrespondenceCorespondenta
PPPresentationPrezentari
SHScheduleProgramari si grafice
VSVisualizationVizualizari si randari

Rol / Disciplina (Segment: Rol)

CodDenumireDescriere
ARCHArchitectureArhitectura
STRStructureStructura
MEPMEPInstalatii mecanice, electrice, sanitare
ELECElectricalInstalatii electrice
HVACHVACIncalzire, ventilatie, aer conditionat
GEOGeotechnicalGeotehnica
PLNPlanningPlanificare
PMProject ManagementManagement 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/*

Primara

Română

Limba secundara — ruta /ro/*

Secundara

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

PaginaRuta ENRuta 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

WIP → SharedActiune: Submit for Review

Notificare trimisa cand un document este supus revizuirii

Destinatari: Lead Appointing Party, Appointing Party

Shared → PublishedActiune: Approve

Notificare trimisa la aprobarea si publicarea unui document

Destinatari: Lead Appointed Party, Task Team

Shared → WIPActiune: Reject

Notificare trimisa la respingerea documentului cu comentariu obligatoriu

Destinatari: Lead Appointed Party, Task Team

Published → ArchivedActiune: Archive

Notificare trimisa la arhivarea permanenta a unui document

Destinatari: Toti membrii proiectului

Published → SharedActiune: Recall

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.

EvenimentCheie APIImplicit
Document trimis pentru revizuireDocumentSubmittedActiv
Document aprobat si publicatDocumentApprovedActiv
Document respins cu comentariuDocumentRejectedActiv
Document arhivatDocumentArchivedInactiv
Issue nou creat in proiectIssueCreatedActiv
Issue atribuit mieIssueAssignedActiv
Issue rezolvatIssueResolvedInactiv
Membru nou adaugat in proiectProjectMemberAddedInactiv

Endpoint-uri API Notificari

GET

/api/notification-preferences

Citeste preferintele de notificare ale utilizatorului curent

PUT

/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.