Salta el contingut

Dades i emmagatzematge

Configuració bibliogràfica

GNOSI_DATA_DIR/config/references.json conté la designació de la taula bibliogràfica, la desactivació explícita i la configuració dels adjunts enllaçats. Les còpies dins del codi es migren explícitament amb scripts/migrate-reference-config.py, mai mitjançant una petició API ni una còpia implícita en arrencar. El migrador preserva l'original i els camps desconeguts, verifica els bytes JSON UTF-8, publica sense substituir altres fitxers i conserva un diari privat de recuperació. L'arrencada rebutja configuracions antigues no migrades abans d'actualitzar bases de dades o iniciar tasques en segon pla.

Responsabilitat sobre les dades

Dades Emmagatzematge persistent responsable Regla de reconstrucció o recuperació
Contingut de pàgina i frontmatter Vault Markdown Fer còpies de seguretat i versionar com a fitxers ordinaris.
Adjunts i fitxers de biblioteca Vault actiu Preservar referències relatives o portàtils.
Metadades internes de pàgina Fitxers auxiliars .gnosi del vault Migrar amb la pàgina; mantenir els camps interns fora del contingut escrit per l'usuari.
Índexs de pàgines i wikilinks Memòries cau de dades locals Reconstruir des del vault; els escaneigs parcials no han de substituir memòries cau completes.
Usuaris, espais de treball, membres, accessos al vault, PAT i comparticions SQLite de gestió Fer còpies com a estat local de l'aplicació; no sincronitzar mai la base de dades activa al núvol.
Índexs de correu, lector, notificacions, anotacions i execucions SQLite local Segons el domini, recuperar dels proveïdors o de les dades d'origen quan sigui possible.
Tokens OAuth i secrets d'integració Secrets locals o gestor de credencials del sistema Tornar a connectar cada màquina si es perden; no copiar-los a un vault compartit.
Punts de control de l'agent Dades locals Memòria d'execució de cada instància, no contingut del vault.

Format del vault

Una pàgina és un fitxer Markdown amb frontmatter YAML. Els identificadors estables permeten que els enllaços i les relacions sobrevisquin als canvis de títol. Els enllaços visibles utilitzen sintaxi wikilink; els adjunts i les propietats de tipus fitxer utilitzen rutes portàtils o metadades estructurades, no rutes absolutes específiques d'una màquina.

Les vistes de tipus base de dades són projeccions sobre pàgines i registres. No substitueixen Markdown per un magatzem relacional opac. La capa de serveis del vault resol les definicions de vista, els esquemes, les fórmules, els rollups, les relacions i l'estat de presentació.

Camps obligatoris dels plugins

Els contractes de camp desen config.plugin_roles al costat de l'ID immutable. Els processos resolen cada rol per ID i llegeixen el nom actual o els àlies històrics. El servidor rebutja amb HTTP 409 l'eliminació, la substitució de l'ID, el canvi de tipus i el canvi de taula d'una relació obligatòria. Es pot canviar el nom i les vinculacions es conserven quan es desa l'esquema.

L'activació de LLM Wiki rep l'idioma de la interfície: català, anglès, castellà o francès. La reconciliació repara els ID obsolets, vincula els camps existents, crea els que falten i completa els catàlegs. Conserva els noms personalitzats. No es poden eliminar les opcions necessàries; canviar-ne el nom actualitza la correspondència semàntica i els registres existents.

El tipus d'idea classifica Entitat, Concepte, Resum o Síntesi. La verificació indica Provisional, Verificat, Per revisar o Refutat, independentment de l'estat del flux de treball. L'última revisió registra la revisió del coneixement i és diferent de qualsevol modificació del fitxer. La generació actualitza tipus, verificació provisional, ordre i data de revisió per ID. La revisió automàtica, l'ordenació dels índexs i la marca de processament dels recursos utilitzen els mateixos ID estables.

Concurrència d'escriptura

Les lectures de pàgina exposen un ETag derivat de la representació actual. Els clients que modifiquen dades retornen l'ETag esperat; una discrepància rebutja l'escriptura obsoleta en lloc de sobreescriure un canvi concurrent. Les utilitats d'escriptura atòmica només substitueixen el fitxer quan la nova versió és completa.

Canviar un nom requereix l'índex de wikilinks per actualitzar els enllaços entrants. L'operació afecta la identitat de pàgina, el nom del fitxer, el registre, els fitxers auxiliars i els índexs d'enllaços; cal executar-la coordinadament.

Base de dades de gestió

Els models SQLAlchemy representen:

erDiagram
    USER ||--o{ MEMBERSHIP : joins
    WORKSPACE ||--o{ MEMBERSHIP : contains
    WORKSPACE ||--o{ VAULT : registers
    VAULT ||--o{ VAULT_ACCESS : grants
    USER ||--o{ VAULT_ACCESS : receives
    USER ||--o{ API_TOKEN : owns
    USER ||--o{ SHARE_LINK : creates

Tots els models de gestió hereten d'una mateixa DeclarativeBase tipada de SQLAlchemy. Les factories de motor i sessió s'inicialitzen atòmicament i retornen tipus concrets Engine i Session. Les metadades i els noms de taula continuen sent la referència d'Alembic i de les instal·lacions SQLite existents.

Abans d'iniciar els processos de treball, el coordinador d'esquemes localitza la base de gestió, cada vault dinàmic i els magatzems auxiliars persistents de Gnosi. Línies de revisions Alembic independents reconeixen empremtes estructurals 2.x revisades, creen còpies verificades i apliquen migracions cap endavant. Els esquemes desconeguts o divergents provoquen una aturada sense aplicar una migració d’esquema. Les memòries cau derivades i les bases de dades externes no formen part d'aquestes migracions.

Durant l’arrencada, les bases de dades pròpies existents s’obren amb accés de lectura i escriptura sota el bloqueig de migració perquè SQLite pugui revertir una transacció interrompuda abans d’inspeccionar l’esquema confirmat. Aquesta recuperació nativa preserva les dades confirmades i no autoritza migracions d’esquemes desconeguts. Les auditories mantenen connexions de només lectura i deixen intacte qualsevol diari de reversió pendent.

Els fitxers academic_index.sqlite3 acotats pertanyen a la família literature_index. Els registres OAI i oai_sync_state són duradors; la taula virtual FTS es pot reconstruir, però roman en la mateixa migració revisada perquè els seus identificadors de fila es mantenen sincronitzats amb els registres duradors. Les connexions en temps d'execució només estableixen pragmes operatius de SQLite i mai executen DDL d'esquema.

Només es desen els hashes dels PAT i un prefix recognoscible. Els tokens de compartició pública són identificadors opacs; les seves files conserven el creador, el vault, el permís, la caducitat i l'estat de revocació.

Aïllament de les dades locals

GNOSI_DATA_DIR apunta a l'arrel de cada instància. El resolutor de rutes crea directoris de memòria cau, sistema, punts de control, registres, àudio, sortides, còpies de seguretat i secrets. Docker utilitza /data; els valors natius segueixen la convenció de dades d'aplicació del sistema operatiu. GNOSI_LOCAL_DATA continua sent un àlies obsolet admès durant la sèrie 3.x.

Els fitxers SQLite no s'han de situar a OneDrive, iCloud Drive, Dropbox ni cap altra capa de sincronització de fitxers. Aquesta sincronització no ofereix els bloquejos que requereix SQLite i pot corrompre la base o crear-ne versions divergents.

Vaults amb fitxers al núvol

Els adaptadors de proveïdor separen el comportament ordinari del sistema de fitxers de la descàrrega local sota demanda i la disponibilitat. Les lectures gestionen errors transitoris per fitxer i continuen quan una resposta parcial és útil. Un escaneig parcial es marca i no es pot desar com a memòria cau completa. A macOS, la descàrrega sota demanda utilitza una acció de la sessió gràfica, perquè un LaunchAgent pot rebre EDEADLK en accedir a contingut disponible només en línia. OneDrive, iCloud Drive, Google Drive, Nextcloud i Dropbox tenen adaptadors i prefixos de configuració independents. Un servei desconegut muntat sota ~/Library/CloudStorage utilitza l'adaptador genèric fileprovider. Les carpetes muntades ordinàries o completament sincronitzades utilitzen el sistema de fitxers local.

Responsabilitat sobre la configuració

La configuració combina recursivament els paràmetres base amb els de l'usuari o del vault actiu a .gnosi/params.yaml. L'entorn té prioritat sobre les rutes de desplegament i alguns comportaments d'arrencada. Les credencials són referències al gestor local de secrets, no valors en brut dins de la configuració del vault.

Les variables del procés tenen prioritat sobre el .env local de Gnosi. El fitxer compartit només es carrega si GNOSI_SHARED_ENV_FILE l'indica explícitament i és de només lectura per a l'app. Les credencials gestionades per la interfície van al gestor del sistema, amb alternativa xifrada sota GNOSI_DATA_DIR/secrets.