feat(tinvest): источник T-Invest — операции, снапшоты и справочник

SDK t_tech.invest импортируется ровно в client.py: остальной код видит обычные
Decimal и dataclass'ы. Операции читаются по курсору GetOperationsByCursor,
снапшоты GetPortfolio/GetPositions складываются в position_snapshot и
cash_snapshot — только для сверки, аналитика их не читает.

mapper.py — явный словарь OperationType -> EventKind на все значения enum SDK,
покрытый тестом: новый тип должен ломать тест, а не молча уезжать в other.

Покупка с привязанной карты помечается meta.card_funded: деньги пришли снаружи,
баланс счёта их не видел, и для доходности это внешний поток, а не внутреннее
движение.
This commit is contained in:
Dmitry
2026-09-18 13:44:31 +03:00
parent 012a40981f
commit 1adb1c16df
6 changed files with 1370 additions and 0 deletions
@@ -0,0 +1,8 @@
"""The `tinvest` source: operations, snapshots and the instrument master from T-Invest."""
from fintracker.sources.registry import register
from fintracker.sources.tinvest.sync import TinvestSource
register(TinvestSource())
__all__ = ["TinvestSource"]