VEU.WathBody/1-docs/2-db
virus-home 1034c152f5 Интеграция документа перерывов (vision 1.4, Ф-14: auto-break + вопрос атлету, формула возврата, правила 12-17, breaks/session_kind) + волна 1 errata ревью (З-5,6,9-14) + З-2 архитектура 2026-10-17 19:40:40 +05:00
..
ref Шаг 6 завершён: functions.md слоёв src и ref утверждены 2026-10-17 19:15:37 +05:00
src Интеграция документа перерывов (vision 1.4, Ф-14: auto-break + вопрос атлету, формула возврата, правила 12-17, breaks/session_kind) + волна 1 errata ревью (З-5,6,9-14) + З-2 архитектура 2026-10-17 19:40:40 +05:00
readme.md Интеграция документа перерывов (vision 1.4, Ф-14: auto-break + вопрос атлету, формула возврата, правила 12-17, breaks/session_kind) + волна 1 errata ревью (З-5,6,9-14) + З-2 архитектура 2026-10-17 19:40:40 +05:00

readme.md

БД WatchBody (PostgreSQL)

Документация БД серверной части — шаг 6 процесса (std1\_process\process.md), правила d-db (std1\_rules\d\d-db.md), db-func (std1\_rules\db\db-func.md). Решение шага 6 — 0-mng\plan.md.

Общие сведения

  • СУБД: PostgreSQL 17+; доступ — только через хранимые функции (Kit.Helpers\Db.Postgres.SqlServerHelper, tech-requirements разд. 3).
  • Схемы-слои: src — основные данные (атлеты, тренировки, программы, метрики); ref — справочники (двигательные группы).
  • Изоляция атлетов (🛡): каждая таблица данных несёт athlete_id; все функции слоя src принимают p_athlete_id и выбирают/пишут только в пределах атлета (requirements, Ф-8.5, инвариант раздела 5).
  • Идемпотентность (🛡): клиентские сущности несут client_guid (UNIQUE) — повторная вставка возвращает существующий id (ON CONFLICT DO NOTHING + SELECT).
  • JSON: версии программ и факты .fit — jsonb с проверкой схемы на стороне приложения (не в БД).

Состав

Файл Содержание
ref\tables.md справочники слоя ref
src\tables.md таблицы слоя src
{слой}\functions.md списки функций (после утверждения таблиц)

План миграции (d-db-1)

  1. Схемы: CREATE SCHEMA IF NOT EXISTS src; CREATE SCHEMA IF NOT EXISTS ref;
  2. Справочники: ref\exercise_group.psql — таблица + вставка 5 значений (идемпотентно, ON CONFLICT (code) DO NOTHING).
  3. Таблицы src: порядок — athlete → athlete_profile → exercise → exercise_replacement → program → program_version → workout → workout_set → command_log → daily_log → workout_metrics → breaks (FK-зависимости).
  4. Функции: файлы {слой}\функции.psql по сущностям в том же порядке (CREATE OR REPLACE — перезапуск безопасен).
  5. Версионирование: каталог 2-db\migrations\ — NNN_описание.sql по возрастанию; каждая миграция идемпотентна (IF NOT EXISTS / OR REPLACE); факт применения — одна запись на файл в src.migration (id, filename, applied_at).
  6. Сборка: скрипт 2-dbuild.ps1 применяет миграции по номеру (утилита Server.WatchBody.Import --mode migrate).

Таблица llm_calls (v2)

Журнал вызовов LLM-планировщика (дизайн LLM-планирования, разд. 8) создаётся в v2 вместе с LlmPlanner — в v1 не проектируется.