3.2 KiB
3.2 KiB
Persistent Storage Schema Draft
Database Target
- production: PostgreSQL
- local development: SQLite
Persistence Path In Code
SQLAlchemy adapter реализован в:
- src/ai_orchestrator/infrastructure/storage/sqlalchemy.py
- src/ai_orchestrator/infrastructure/storage/factory.py
Migration skeleton:
Tables
projects
project_idpknameconfig_blobcreated_atupdated_at
conversations
conversation_idpkproject_idtitlecreated_atupdated_at
messages
message_idpkconversation_idrolecontentattachments_jsoncreated_at
tasks
task_idpkproject_idconversation_idgoalinputs_jsonstatusrequested_modeeffective_modecurrent_node_idresult_summary_jsoncreated_atupdated_at
task_graphs
task_idpkgraph_versiongraph_metadata_jsoncreated_at
task_nodes
node_idpktask_idnode_typestatusinput_jsonoutput_jsondependencies_jsonassigned_runnerattemptsretryabletimeout_mscreated_atupdated_at
task_events
event_idpktask_idconversation_idnode_idevent_typecorrelation_idcausation_idpayload_jsonoccurred_at
confirmations
confirmation_idpktask_idnode_idstatusscopedecision_jsonpreview_jsoncommentcreated_atresolved_at
worker_sessions
session_idpkworker_idnamemachineosversionstatuscapabilities_jsonlast_heartbeat_atcurrent_task_idconnected_atdisconnected_at
model_invocations
invocation_idpktask_idnode_idslotprovidermodelstatusrequest_jsonresponse_jsonusage_jsonfallback_from_invocation_idcreated_at
tool_invocations
invocation_idpktask_idnode_idsource_typesource_idtool_namestatusrequest_jsonresponse_jsoncreated_at
artifacts
artifact_idpktask_idnode_idartifact_typestorage_urimetadata_jsoncreated_at
Required Indexes
tasks(status, updated_at)task_nodes(task_id, status)task_events(task_id, occurred_at)confirmations(status, created_at)worker_sessions(status, last_heartbeat_at)
Query Support
Read-model adapters now support paginated queries for:
task_eventsmodel_invocationstool_invocationsartifacts
This is implemented in both in-memory and SQLAlchemy adapters to keep test/runtime behavior aligned.
Active Adapter Strategy
memorybackend остается для быстрых unit/integration прогонов;sqlitebackend предназначен для локального development без Docker;postgresbackend является production target.