Files
Dmitry 220f027652 docs: контракт для агентов, архитектура и план фаз
AGENTS.md — индекс, команды и обязательные ограничения (Decimal для денег, не
конвертировать валюту на записи, SDK T-Invest ровно в одном модуле, аналитика
читает только confirmed). docs/ai/ — архитектура, соглашения, эксплуатация и
полный план на шесть фаз с проверками для каждой.
2026-09-18 13:43:31 +03:00

36 lines
2.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Соглашения
## Деньги и валюты
- Все суммы и количества — `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 — по-английски (кириллица допустима в пользовательских строках),
документация для людей и агентов — по-русски.