docs: контракт для агентов, архитектура и план фаз

AGENTS.md — индекс, команды и обязательные ограничения (Decimal для денег, не
конвертировать валюту на записи, SDK T-Invest ровно в одном модуле, аналитика
читает только confirmed). docs/ai/ — архитектура, соглашения, эксплуатация и
полный план на шесть фаз с проверками для каждой.
This commit is contained in:
Dmitry
2026-09-18 13:43:31 +03:00
parent 563308a08b
commit 220f027652
7 changed files with 836 additions and 0 deletions
+35
View File
@@ -0,0 +1,35 @@
# Соглашения
## Деньги и валюты
- Все суммы и количества — `Decimal`; в БД `NUMERIC(24,10)`; в JSON — строки.
- Рядом с суммой всегда колонка валюты (`amount` + `currency`, `fee` + `fee_currency`).
- Хранить в нативной валюте, **не конвертировать на записи**.
- Конвертация — в аналитике по `fx_rate_daily` на дату операции; курсы ЦБ протянуты через
выходные (`is_carried = true`); RUB→RUB = 1.0 на любую дату; нет курса → NULL + запись в
`metric_data_quality`.
- Float допустим только внутри расчётов, результат которых — коэффициент (XIRR, TWR, beta).
## Идемпотентность и источники
- `raw_*` — append-only, upsert по стабильному id источника; повторный синк ничего не
дублирует.
- Каждая core-строка знает `source` и `source_id`.
- `event.dedupe_key` UNIQUE: номер сделки, если брокер его даёт, иначе fingerprint.
- У счёта один `primary_event_source`; события других источников — `status = shadow`.
## Время
- Торговые даты (`trade_date`) — в MSK; T-Invest отдаёт UTC, конвертируем до вывода даты.
- Все `timestamp``timestamptz`.
## Код
- Python 3.12, типизация обязательна (pyright `standard`), ruff (`E F I UP B SIM RUF`).
- Async везде, где есть I/O; SQLAlchemy 2.0 style (`Mapped`, `select()`).
- Один модуль импортирует SDK T-Invest: `sources/tinvest/client.py`.
- Парсеры отчётов — чистые функции `bytes -> ParsedReport`, без БД.
- Тесты: pytest + pytest-asyncio, Postgres поднимается фикстурой; golden-числа для
финансовой математики.
- Комментарии и docstrings — по-английски (кириллица допустима в пользовательских строках),
документация для людей и агентов — по-русски.