Domain Model — Agent Control Center
Версия: 0.1.0-draft
Статус: Draft
Нормативность: supporting; при конфликте приоритет у SPECIFICATION.md
Сущности
Organization
| Поле |
Тип |
Описание |
| id |
UUID |
Первичный ключ |
| name |
string |
Название организации |
| slug |
string |
Уникальный идентификатор для URL |
| billing_email |
string |
Email для биллинга |
| created_at |
timestamptz |
Дата создания |
Связи: 1 → N Workspace
Workspace
| Поле |
Тип |
Описание |
| id |
UUID |
PK |
| organization_id |
UUID |
FK → Organization |
| name |
string |
Название рабочего пространства |
| owner_account_id |
UUID |
FK → Account (владелец) |
| ai_lockout |
boolean |
Блокировка AI-действий |
| created_at |
timestamptz |
|
Связи: 1 → N Project, 1 → N Member
Project
| Поле |
Тип |
Описание |
| id |
UUID |
PK |
| workspace_id |
UUID |
FK → Workspace |
| name |
string |
|
| description |
text |
|
| status |
enum |
active, archived, deleted |
| created_at |
timestamptz |
|
Связи: 1 → N Task, 1 → N Artifact
Task
| Поле |
Тип |
Описание |
| id |
UUID |
PK |
| project_id |
UUID |
FK → Project |
| title |
string |
|
| description |
text |
|
| priority |
enum |
low, medium, high, critical |
| status |
enum |
backlog, todo, in_progress, review, done |
| assignee_id |
UUID |
FK → Account (опционально) |
| created_at |
timestamptz |
|
Связи: 1 → N Run
Run
| Поле |
Тип |
Описание |
| id |
UUID |
PK |
| task_id |
UUID |
FK → Task |
| agent_id |
UUID |
FK → Agent |
| connector_id |
UUID |
FK → Connector |
| status |
enum |
см. State Machine |
| goal |
text |
Цель запуска |
| context_bundle |
jsonb |
Bounded context |
| started_at |
timestamptz |
|
| completed_at |
timestamptz |
|
| error_message |
text |
|
Agent
| Поле |
Тип |
Описание |
| id |
UUID |
PK |
| connector_id |
UUID |
FK → Connector |
| name |
string |
|
| runtime |
enum |
hermes, openclaw, claude, codex, gemini, generic |
| model |
string |
Идентификатор модели |
| tools |
jsonb |
Доступные инструменты |
| capabilities |
jsonb |
FK → Capability Registry |
| config_ref |
string |
Ссылка на конфигурацию |
Connector
| Поле |
Тип |
Описание |
| id |
UUID |
PK |
| name |
string |
|
| host |
string |
Адрес сервера |
| status |
enum |
online, offline, degraded |
| version |
string |
Версия коннектора |
| last_heartbeat |
timestamptz |
|
| capabilities |
jsonb |
|
Artifact
| Поле |
Тип |
Описание |
| id |
UUID |
PK |
| project_id |
UUID |
FK → Project |
| run_id |
UUID |
FK → Run (опционально) |
| name |
string |
|
| type |
string |
MIME-тип |
| size_bytes |
bigint |
|
| storage_key |
string |
Ключ в Object Storage |
| checksum |
string |
SHA-256 |
| created_at |
timestamptz |
|
Memory
| Поле |
Тип |
Описание |
| id |
UUID |
PK |
| scope |
string |
user, project, workspace |
| scope_id |
UUID |
ID области видимости |
| key |
string |
Ключ записи |
| value |
text |
Содержимое |
| provenance |
string |
Источник (agent_id, user_id) |
| version |
int |
Версия записи |
| created_at |
timestamptz |
|
Skill
| Поле |
Тип |
Описание |
| id |
UUID |
PK |
| name |
string |
Уникальное имя |
| version |
string |
Семантическая версия |
| content |
text |
SKILL.md |
| signature |
text |
Подпись (опционально) |
| review_status |
enum |
draft, reviewed, approved, deprecated |
| created_by |
string |
agent_id или user_id |
| created_at |
timestamptz |
|
WikiPage
| Поле |
Тип |
Описание |
| id |
UUID |
PK |
| workspace_id |
UUID |
FK → Workspace |
| path |
string |
Путь страницы |
| title |
string |
|
| content |
text |
Markdown |
| version |
int |
|
| updated_at |
timestamptz |
|
Approval
| Поле |
Тип |
Описание |
| id |
UUID |
PK |
| run_id |
UUID |
FK → Run |
| action |
string |
Описание действия |
| risk_level |
enum |
low, medium, high, critical |
| requested_by |
UUID |
Кто запросил |
| status |
enum |
pending, approved, denied, expired |
| decided_by |
UUID |
Кто принял решение |
| created_at |
timestamptz |
|
| decided_at |
timestamptz |
|
AuditEvent
| Поле |
Тип |
Описание |
| id |
UUID |
PK |
| event_type |
string |
Тип события |
| actor_id |
UUID |
Кто совершил |
| target_type |
string |
Тип цели |
| target_id |
UUID |
ID цели |
| payload |
jsonb |
Детали события |
| created_at |
timestamptz |
|
User / Account
| Поле |
Тип |
Описание |
| id |
UUID |
PK |
| email |
string |
Уникальный |
| display_name |
string |
|
| password_hash |
string |
|
| mfa_enabled |
boolean |
|
| created_at |
timestamptz |
|
Role
| Поле |
Тип |
Описание |
| id |
UUID |
PK |
| name |
string |
owner, admin, lead, operator, contributor, viewer |
| permissions |
jsonb |
Список разрешений |
Связи: User N ↔ M Role (через user_roles)
Индексы
-- Поиск задач по проекту и статусу
CREATE INDEX idx_task_project_status ON task(project_id, status);
-- Поиск запусков по агенту и статусу
CREATE INDEX idx_run_agent_status ON run(agent_id, status);
-- Поиск артефактов по проекту
CREATE INDEX idx_artifact_project ON artifact(project_id);
-- Аудит по времени
CREATE INDEX idx_audit_created ON audit_event(created_at DESC);
-- Поиск memory по scope
CREATE INDEX idx_memory_scope ON memory(scope, scope_id, key);