Шаг 6: tables утверждены; черновики functions.md слоёв src (30 функций) и ref
This commit is contained in:
parent
74f57a5f6e
commit
695b5d9bf2
|
|
@ -0,0 +1,12 @@
|
||||||
|
# Слой ref — список функций
|
||||||
|
|
||||||
|
> Список функций слоя `ref`; формат — d-db-7 (`std1\_rules\d\d-db.md`),
|
||||||
|
> статусная модель — d-dev-1..3 (`std1\_rules\d\d-dev.md`).
|
||||||
|
> Таблицы — [tables.md](tables.md) (утверждены 2026-10-17).
|
||||||
|
> Статусы: `PLAN` — только в списке (спецификаций и кода нет).
|
||||||
|
|
||||||
|
## Список функций
|
||||||
|
|
||||||
|
| Сущность | Функция | Статус | Параметры | Возвращает | Функция | Репозиторий | Комментарий |
|
||||||
|
|---|---|---|---|---|---|---|---|
|
||||||
|
| exercise_group | exercise_group_select | PLAN | — | TABLE — строки ref.exercise_group | - | - | без параметров; справочник неизменяем (d-db-3) |
|
||||||
|
|
@ -0,0 +1,46 @@
|
||||||
|
# Слой src — список функций
|
||||||
|
|
||||||
|
> Список функций слоя `src`; формат — d-db-7 (`std1\_rules\d\d-db.md`),
|
||||||
|
> статусная модель — d-dev-1..3 (`std1\_rules\d\d-dev.md`).
|
||||||
|
> Таблицы — [tables.md](tables.md) (утверждены 2026-10-17).
|
||||||
|
> 🛡 Во всех функциях `p_athlete_id` обязателен (кроме `athlete_*` —
|
||||||
|
> они для сервисов владельца): изоляция атлетов.
|
||||||
|
> Статусы: `PLAN` — только в списке (спецификаций и кода нет).
|
||||||
|
> Статус списков: черновик — ждёт утверждения (вторая точка утверждения шага 6).
|
||||||
|
|
||||||
|
## Список функций
|
||||||
|
|
||||||
|
| Сущность | Функция | Статус | Параметры | Возвращает | Функция | Репозиторий | Комментарий |
|
||||||
|
|---|---|---|---|---|---|---|---|
|
||||||
|
| athlete | athlete_insert | PLAN | p_name, p_api_key_hash | int — id атлета | - | - | AdminWeb; дубликаты hash — исключение UNIQUE |
|
||||||
|
| athlete | athlete_update | PLAN | p_id, p_name, p_api_key_hash, p_is_blocked | int — число строк | - | - | NULL-семантики нет (db-m-8) |
|
||||||
|
| athlete | athlete_select | PLAN | p_api_key_hash, p_is_blocked | TABLE — строки athlete | - | - | фильтры: NULL = без фильтра; для middleware и AdminWeb |
|
||||||
|
| athlete | athlete_get | PLAN | p_id | TABLE — одна строка | - | - | — |
|
||||||
|
| athlete_profile | athlete_profile_upsert | PLAN | p_athlete_id, p_sex, p_birth_year, p_weight_kg, p_hr_max | int — id | - | - | 1:1 — `ON CONFLICT (athlete_id) DO UPDATE` |
|
||||||
|
| athlete_profile | athlete_profile_get | PLAN | p_athlete_id | TABLE — одна строка | - | - | — |
|
||||||
|
| exercise | exercise_insert | PLAN | p_athlete_id, p_name, p_group_id, p_is_base | int — id упражнения | - | - | дубликат имени у атлета — исключение UNIQUE |
|
||||||
|
| exercise | exercise_update | PLAN | p_athlete_id, p_id, p_name, p_group_id, p_is_base | int — число строк | - | - | `exercise_id` не меняется (Ф-4.3, 🛡) |
|
||||||
|
| exercise | exercise_delete | PLAN | p_athlete_id, p_id | int — число строк | - | - | логическое: `is_active=0` (Ф-4.2) |
|
||||||
|
| exercise | exercise_select | PLAN | p_athlete_id, p_name, p_group_id, p_is_base, p_is_active | TABLE — строки + пары замен (MM) | - | - | по умолчанию только `is_active`; замены — денормализация (d-db-3) |
|
||||||
|
| exercise | exercise_get | PLAN | p_athlete_id, p_id | TABLE — одна строка + замены | - | - | — |
|
||||||
|
| exercise_replacement | exercise_replacement_insert | PLAN | p_athlete_id, p_exercise_id, p_replacement_id | int — id | - | - | оба упражнения — атлета, группа равна (проверка в функции) |
|
||||||
|
| exercise_replacement | exercise_replacement_delete | PLAN | p_athlete_id, p_exercise_id, p_replacement_id | int — число строк | - | - | — |
|
||||||
|
| program | program_insert | PLAN | p_athlete_id, p_title | int — id программы | - | - | вторая программа атлета — исключение UNIQUE |
|
||||||
|
| program | program_select | PLAN | p_athlete_id | TABLE — строки + активная версия | - | - | денормализация активной версии (d-db-3) |
|
||||||
|
| program | program_get | PLAN | p_athlete_id, p_program_id | TABLE — одна строка | - | - | — |
|
||||||
|
| program_version | program_version_insert | PLAN | p_athlete_id, p_program_id, p_based_on_version, p_author, p_body, p_rationale | int — id версии | - | - | `version` = max+1; `status='draft'`; body — jsonb |
|
||||||
|
| program_version | program_version_update | PLAN | p_athlete_id, p_id, p_status | int — число строк | - | - | 🛡 меняется только статус; переходы draft→active→archived; активной становится ровно одна (сдвиг прежней в archived) |
|
||||||
|
| program_version | program_version_select | PLAN | p_athlete_id, p_program_id, p_status, p_author | TABLE — строки (без body) | - | - | body — отдельным get (крупный jsonb) |
|
||||||
|
| program_version | program_version_get | PLAN | p_athlete_id, p_id | TABLE — одна строка с body | - | - | — |
|
||||||
|
| workout | workout_insert | PLAN | p_athlete_id, p_client_guid, p_program_version_id, p_started_at | int — id | - | - | повтор `client_guid` возвращает существующий id (🛡 идемпотентность) |
|
||||||
|
| workout | workout_update | PLAN | p_athlete_id, p_id, p_ended_at, p_status, p_avg_hr, p_fit_workout_id, p_facts_json, p_fit_file_id, p_hr_recovery_s | int — число строк | - | - | факты .fit дописывает FitParser; клиент — только ended/status/avg_hr |
|
||||||
|
| workout | workout_select | PLAN | p_athlete_id, p_status, p_date_from, p_date_to | TABLE — карточки + подходы (агрегат jsonb) | - | - | мультикурсор/агрегат: карточка + sets (d-db-6) |
|
||||||
|
| workout | workout_get | PLAN | p_athlete_id, p_id | TABLE — одна строка + sets + command_log | - | - | полная карточка (Ф-9.2) |
|
||||||
|
| workout_set | workout_set_insert | PLAN | p_athlete_id, p_client_guid, p_workout_id, p_exercise_id, p_seq, p_weight_kg, p_reps, p_done_at, p_source, p_in_plan, p_rpe, p_knee_pain | int — id | - | - | идемпотентность по client_guid |
|
||||||
|
| workout_set | workout_set_get | PLAN | p_athlete_id, p_id | TABLE — одна строка | - | - | — |
|
||||||
|
| command_log | command_log_insert | PLAN | p_athlete_id, p_client_guid, p_workout_id, p_t_offset_s, p_recognized_text, p_semantics, p_accepted | int — id | - | - | 🛡 не редактируется (Ф-1.5) |
|
||||||
|
| command_log | command_log_select | PLAN | p_athlete_id, p_workout_id | TABLE — строки | - | - | для сопоставления с .fit |
|
||||||
|
| daily_log | daily_log_upsert | PLAN | p_athlete_id, p_client_guid, p_date, p_bp_sys, p_bp_dias, p_weight_kg | int — id | - | - | `UNIQUE(athlete_id, date)` — upsert; v2-поля добавляются расширением |
|
||||||
|
| daily_log | daily_log_select | PLAN | p_athlete_id, p_date_from, p_date_to | TABLE — строки | - | - | для сводки метрик и AdminWeb |
|
||||||
|
| workout_metrics | workout_metrics_upsert | PLAN | p_athlete_id, p_workout_id, p_adherence, p_tonnage, p_tonnage_by_group, p_e1pm_by_exercise, p_hr_metrics, p_red_flags | int — id | - | - | 1:1, пересчёт MetricsEngine |
|
||||||
|
| workout_metrics | workout_metrics_select | PLAN | p_athlete_id, p_workout_id, p_date_from, p_date_to | TABLE — строки | - | - | графики AdminWeb (Ф-9.4) |
|
||||||
Loading…
Reference in New Issue