Fluxos transversals¶
Context de petició i autorització¶
sequenceDiagram
participant UI as Frontend
participant API as FastAPI route
participant Auth as Auth dependency
participant Ctx as Workspace and vault context
participant Svc as Domain service
participant Store as Vault or local data
UI->>API: HTTP request + session/PAT + workspace/vault signal
API->>Auth: Resolve effective identity and required role
Auth->>Ctx: Validate membership and vault access
Ctx->>Svc: Bind active workspace and vault
Svc->>Store: Execute scoped operation
Store-->>Svc: Result or conflict
Svc-->>UI: Typed response
El mode personal pot resoldre un usuari efectiu local sense iniciar sessió. El mode d'organització requereix una sessió vàlida o un mecanisme bearer admès. La decisió correspon al backend; el control d'autenticació del frontend millora l'experiència d'ús, però no és un límit de seguretat.
Les variables de context transporten el vault actiu entre crides de serveis imbricades sense convertir la ruta en una configuració global mutable. El codi que s'executa fora d'una petició ha de proporcionar un vault explícit o utilitzar el mecanisme documentat de resolució predeterminada.
Encaminament per Vault¶
Els enllaços privats del navegador identifiquen el slug estable del vault abans
de l'aplicació i el recurs: /@{vaultSlug}/{app}/{resourceType}/{resourceId}.
Les pàgines d'entrada acaben al segment de l'aplicació. Els noms dels vaults es
poden editar, però els slugs es desen per separat i no canvien en reanomenar-los.
Les comparticions públiques i les pantalles globals de compte o gestió de vaults
queden fora d'aquest espai de noms.
Les API de dades del vault reflecteixen aquest mateix límit sota
/api/v1/vaults/{vaultSlug}/{app}/.... ActiveVaultMiddleware resol el slug
abans del despatx normal de FastAPI, vincula l'identificador immutable i la ruta
del vault i reutilitza la implementació existent de l'endpoint. La ruta canònica
preval sobre una capçalera, paràmetre de consulta o galeta antics en conflicte,
però les dependències d'espai de treball i accés al vault continuen decidint
l'autorització.
L'anàlisi dels senyals s'aïlla en helpers tipats de capçaleres, consultes i galetes. La crida del middleware només reescriu l'àmbit canònic, instal·la el token de context, despatxa la petició i el restaura. Així, HTTP i WebSocket comparteixen el mateix límit de propagació.
El frontend separa la construcció de rutes del transport de xarxa. L’HTTP
ordinari passa pel client tipat openapi-fetch o per l’adaptador de
compatibilitat; tots dos deleguen a transportFetch, que afegeix el context de
workspace, usuari i Vault i canonitza peticions de tipus cadena/URL sense
substituir window.fetch. TanStack Query gestiona la memòria cau del servidor
i la invalidació al límit dels proveïdors de l'aplicació. SSE, streaming,
descàrregues i WebSockets de col·laboració usen adaptadors especialitzats
explícits perquè OpenAPI no descriu completament els seus contractes de navegador.
L'artefacte OpenAPI i les operacions TypeScript es generen de manera determinista
des de l'aplicació FastAPI canònica en un runtime efímer. Un control del codi
prohibeix Axios, fetch directe en producció, monkeypatches globals i
transports especials no revisats; l’allowlist mínima documenta només els límits
del navegador que no poden importar el client de l’aplicació.
Els enllaços antics desats encara se substitueixen per ubicacions canòniques
del navegador, i les rutes API antigues es mantenen com a àlies de
compatibilitat per als clients anteriors.
Flux de configuració¶
- Els fitxers d'entorn i el magatzem de credencials del sistema operatiu aporten els valors d'arrencada.
- El YAML base de l'aplicació aporta valors predeterminats versionats.
- Els paràmetres del directori personal o del vault actiu aporten la configuració desada de l'usuari.
- Les variables d'entorn substitueixen les rutes i polítiques sensibles al desplegament.
- Les rutes de Configuració validen i desen els canvis admesos.
Els proveïdors d'IA eliminats deixen una marca de supressió perquè una variable d'entorn antiga no els pugui recrear silenciosament en una càrrega posterior.
Gestió d'errors¶
Les rutes tradueixen els errors de domini coneguts en codis d'estat explícits. Un gestor global registra les excepcions inesperades amb un identificador d'error i retorna una resposta genèrica per no revelar rutes, fragments SQL o tokens al client.
Les operacions opcionals llargues informen de l'estat o el progrés i es degraden sense bloquejar dominis independents. Les tasques en segon pla han de gestionar les seves pròpies sessions de base de dades i els límits del bucle d'esdeveniments; no poden reutilitzar sessions de petició després del cicle de vida de la resposta.
Observabilitat¶
Els mòduls del backend utilitzen logging estàndard. Els LaunchAgents recullen els registres d'execució nativa al directori de registres de Gnosi de l'usuari. Les notificacions operatives i l'historial de tasques resideixen a les dades locals. Els endpoints de salut informen del comportament efectiu, no només dels valors d'entorn en brut.
Els registres s'adrecen als desenvolupadors i s'escriuen en anglès. No han de contenir credencials, respostes de proveïdors sense depurar ni contingut sensible complet de l'usuari.
Internacionalització¶
Les cadenes del frontend visibles per l'usuari passen per react-i18next i
existeixen als quatre catàlegs: català, anglès, castellà i francès. Els
comentaris de codi, les docstrings, els registres de desenvolupament, la
documentació tècnica pública i els identificadors són en anglès, tret que un
identificador o valor de compatibilitat ja estigui desat.
Accessibilitat¶
La carcassa de l’aplicació és responsable de l’única regió principal, la navegació de salt, els tokens de focus visible i els anuncis discrets de canvi de ruta. Els dominis hereten aquestes primitives i mantenen els noms accessibles als mateixos quatre catàlegs d’idioma que les etiquetes visuals.
Els diàlegs cancel·lables utilitzen la capa compartida de teclat: només el diàleg superior gestiona Escape, Tab queda atrapat dins seu i el focus torna a l’obridor. Les pestanyes responsives exposen relacions completes amb els seus panells i desplaçament del focus amb teclat. Playwright combina anàlisis axe WCAG 2.2 AA sobre la matriu de rutes del producte amb proves explícites de teclat, perquè cap de les dues capes demostra el funcionament de l'altra.
Política d'efectes externs¶
Les eines d'agent i les accions de l'aplicació classifiquen els efectes com a lectura, escriptura, comunicació externa o canvi destructiu. Segons l'efecte s'apliquen comprovacions de rol, serveis acotats, registres de confirmació i operacions recuperables. La confirmació del client, per si sola, no autoritza l'acció del backend.