Inlocuieste structura provizorie de 11 sectiuni cu specul complet dat de
user. Designul vizual ramane neschimbat, cum s-a cerut explicit.
- lib/navigation.ts devine un registry propriu-zis: fiecare element are
route, icon, permissions, featureFlag, workspaceTypes, releaseStage si
children -- meniul nu mai e hardcodat in componenta
- releaseStage (mvp|a3|a4) e separat de status (ready|planned): unul spune
CAND e planificat, celalalt daca exista ACUM in cod
- sidebar-ul filtreaza pe rol (visibleSections) -- Data Intelligence e
owner/admin, conform specului. Filtrarea e doar UX; autorizarea reala
ramane server-side in ceo-api, un meniu ascuns nu e masura de securitate
- sectiuni pliabile, ca 14 sectiuni x ~10 itemi sa nu inunde sidebar-ul;
se deschide automat sectiunea care contine ruta curenta
- fiecare item planned explica in catch-all exact ce lipseste, inclusiv ce
ruleaza deja pe server dar nu e conectat (Paperless, ERPNext, memory-graph)
- lib/navigation.ts devine sursa unica de adevar pentru IA: 11 sectiuni,
~45 de pagini, fiecare cu status ready|planned si o descriere concreta
a ce lipseste ca sa devina activa
- sidebar-ul randeaza sectiunile grupate; itemii neconstruiti sunt vizibil
estompati si marcati cu un punct -- forma produsului e vizibila, dar nu
pretindem ca exista
- dashboard/[...slug] este o singura ruta catch-all care explica exact ce
lipseste pentru sectiunea ceruta, in loc de ~35 de fisiere-stub identice
sau, mai rau, UI fals care pare functional
- Home se desparte corect: /dashboard = Executive Dashboard (ansamblu +
sectiuni active), /dashboard/briefing = Daily Briefing (restante,
urmatoarele 7 zile, sinteza AI)
- BriefForm: buton "Generează cu AI" cheama /v1/research-briefs/draft si
precompleteaza titlul+rezumatul; textul spune explicit ca nimic nu s-a
salvat inca si arata costul real al generarii
- Briefing: afiseaza aiExplanation cand exista, cu nota ca prioritizarea
ramane deterministica si AI-ul doar explica
- pagina Companii: cautare Apollo prin ceo-api, salveaza cautarea ca
segment, creeaza research brief per rezultat
- pagina Segmente: reruleaza o cautare salvata, sterge
- pagina Research: listeaza briefs cu surse (linkuri catre Apollo/altele)
- Overview devine un briefing determinist (restante/urmatoarele 7 zile
+ activitate saptamanala), cu explicatia AI marcata explicit ca
neconstruita in loc de ascunsa
- login page (Supabase email/password sign-in + sign-up)
- onboarding: create first tenant, redirects into /dashboard once a
membership exists
- dashboard shell: sidebar nav, tenant switcher (x-tenant-id header,
never in body/query -- matches ceo-api's TenantGuard), sign out
- Organizations, Tasks, and Team (members/RBAC) pages wired to ceo-api
via a thin apiFetch wrapper that attaches the Supabase bearer token
- executive "paper & ink" design tokens (Tailwind) replacing defaults
- Dockerfile: declare NEXT_PUBLIC_* as build ARGs so Coolify's existing
build-time env vars actually get inlined (was previously silently
dropped, which would have crashed prerendering)
Next.js only emits .next/standalone, not an empty public/ dir when the
source has none -- the Dockerfile's COPY --from=build /app/public
failed outright since the path never existed.