Process Tables
Таблицы для определения, запуска и отслеживания процессов. Ядро observability и execution tracking.
Связи и зависимости
Предыдущие шаги: Core Tables
Следующие шаги: Process Contract, Process Runs
Необходимые навыки: SQL, JSON Schema, State Machines
ER-диаграмма Process Domain
┌─────────────────────┐
│ processes │
├─────────────────────┤
│ id (PK, uuid) │
│ code (UNIQUE) │◄─────────────────────────────┐
│ name │ │
│ description │ │
│ prompt_template │ │
│ default_model │ │
│ n8n_workflow_id │ │
│ n8n_webhook_path │ │
│ output_schema │ │
│ auto_run │ │
│ status (enum) │ │
│ metadata │ │
└─────────┬───────────┘ │
│ │
│ 1:N │
▼ │
┌─────────────────────┐ ┌─────────────────────┐ │
│ process_runs │ │ process_run_steps │ │
├─────────────────────┤ ├─────────────────────┤ │
│ id (PK, uuid) │ │ id (PK, uuid) │ │
│ process_id (FK) │────►│ run_id (FK) │ │
│ requested_by (FK) │ │ step_key │ │
│ chat_id (FK) │ │ status │ │
│ source_message_id │ │ started_at │ │
│ input_text │ │ finished_at │ │
│ input_payload │ │ error_text │ │
│ status (enum) │ │ output_payload │ │
│ n8n_execution_id │ └─────────────────────┘ │
│ result_payload │ │
│ error_text │ │
│ started_at │ │
│ finished_at │ │
└─────────┬───────────┘ │
│ │
│ 1:N │
▼ │
┌─────────────────────┐ ┌─────────────────────┐ │
│ process_artifacts │ │ llm_calls │ │
├─────────────────────┤ ├─────────────────────┤ │
│ id (PK, uuid) │ │ id (PK) │ │
│ run_id (FK) │ │ process_id (FK) │─┘
│ artifact_type │ │ model │
│ content │ │ endpoint │
│ metadata │ │ request_json │
│ created_at │ │ response_json │
└─────────────────────┘ │ latency_ms │
│ http_status │
│ error_text │
└─────────────────────┘processes — Определения процессов
Регистр всех процессов в системе. Процесс = именованный workflow с контрактом.
| Поле | Тип | Описание |
|---|---|---|
| code | text (UNIQUE) | Уникальный код процесса (web_search, daily_checkin) |
| prompt_template | text | Шаблон промпта с {{переменными}} |
| n8n_workflow_id | text | ID workflow в n8n (если есть) |
| n8n_webhook_path | text | Webhook path для запуска (process-exec, web-search) |
| output_schema | jsonb | JSON Schema ожидаемого вывода |
| auto_run | boolean | Автоматический запуск (для reflection) |
| status | enum | draft | active | paused | archived |
process_runs — Запуски процессов
Каждое выполнение процесса = одна запись. Хранит input, output, статус, метрики.
| Поле | Тип | Описание |
|---|---|---|
| status | enum | queued | running | waiting_user | succeeded | degraded | failed | cancelled |
| input_text | text | Текстовый ввод пользователя |
| input_payload | jsonb | Структурированный ввод |
| result_payload | jsonb | Результат выполнения |
| n8n_execution_id | text | ID выполнения в n8n |
| error_text | text | Текст ошибки (если failed) |
Status Lifecycle
┌──────────────┐
│ queued │
└──────┬───────┘
│ worker picks up
▼
┌──────────────┐
┌───────│ running │───────┐
│ └──────┬───────┘ │
│ │ │
timeout/error need user input success
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ failed │ │ waiting_user │ │ succeeded │
└──────────────┘ └──────────────┘ └──────────────┘
│
user responds
│
▼
┌──────────────┐
│ running │
└──────────────┘
degraded = partial success (e.g., timeout but has partial result)
cancelled = user or system cancelledprocess_run_steps — Шаги выполнения
Детализация выполнения процесса по шагам. Каждый шаг = атомарная операция.
step_key — идентификатор шага (fetch_data, analyze, generate_response)
status — queued | running | succeeded | failed | skipped
output_payload — результат конкретного шага
error_text — ошибка шага (если failed)
llm_calls — LLM вызовы
Полный аудит всех вызовов LLM. Связывается с process_id для отслеживания.
-- Пример записи llm_call
{
"scope": "process",
"model": "phi4-mini",
"endpoint": "http://ollama:11434/api/chat",
"request_json": {"messages": [...], "temperature": 0.7},
"response_json": {"message": {"content": "..."}},
"http_status": 200,
"latency_ms": 2340,
"process_id": "uuid-of-process-run"
}Типичные запросы
Активные запуски процесса:
SELECT pr.*, p.code, p.name
FROM clowbot.process_runs pr
JOIN clowbot.processes p ON p.id = pr.process_id
WHERE pr.status IN ('queued', 'running', 'waiting_user')
ORDER BY pr.created_at DESC;Статистика процесса:
SELECT * FROM mart.vw_process_performance WHERE code = 'web_search';
LLM вызовы процесса:
SELECT lc.* FROM clowbot.llm_calls lc JOIN clowbot.process_runs pr ON pr.process_id = lc.process_id WHERE pr.id = $1 ORDER BY lc.created_at;
Что делать дальше
- → Process Contract — поля контракта процесса
- → Process Runs — lifecycle и state machine
- → Agent Tables — таблицы для агентов