Files
fontvielle 93bcbca12c feat(fansy-store): DDL принимающей БД + контракт данных для команды Fansy
- docs/fansy-contract/v1/ddl/000__roles.sql: роли fansy_etl, bj_reader, bj_migrator
- docs/fansy-contract/v1/ddl/001__schemas.sql: схемы fansy_staging и fansy с грантами
- docs/fansy-contract/v1/ddl/002__working.sql: рабочая схема (participants, securities, clients, client_documents, iia_contracts, settlement_requisites, depo_accounts, portfolios, etl_errors)
- docs/fansy-contract/v1/ddl/003__staging.sql: staging-зеркало с loaded_at и сниженными ограничениями
- docs/fansy-contract/v1/ddl/004__seed_participants.sql: предзаполнение справочника (НРД, БКС 5406121446, Ренессанс 7709258228, Альфа-Банк 7728168971)
- docs/fansy-contract/v1/data-dictionary.md: семантика каждого поля
- docs/fansy-contract/v1/etl-requirements.md: требования к ETL (UPSERT в staging, SLA свежести по таблицам, обработка ошибок)
- docs/fansy-contract/v1/examples/example-claim.md: SQL-запросы для формирования M2MTransferRequest
- docs/fansy-contract/v1/examples/seed-data.sql: 5 тестовых клиентов + портфели + договоры
- migrations/fansy-store/: рабочие копии миграций

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 00:45:37 +03:00

8.2 KiB

Data Dictionary — fansy-store v1

Семантика полей рабочей схемы fansy. Структура staging-схемы fansy_staging повторяет её один-к-одному, плюс поле loaded_at и отсутствие части ограничений (валидация — при переливе).

Обозначения: ? — nullable; ! — обязательное.

participants — справочник контрагентов M2M

Поле Тип Обяз. Описание Источник Fansy Пример
inn varchar(10) ! ИНН юрлица, PK client_master.inn 7702165310
ogrn varchar(15) ? ОГРН client_master.ogrn 1027739132563
full_name_rus text ! Полное наименование на русском client_master.full_name НКО АО НРД
short_name_rus text ? Короткое наименование client_master.short_name НРД
display_name_rus text ! Отображаемое имя для UI client_master.display_name НРД
full_name_eng text ? Полное наименование на английском client_master.full_name_en National Settlement Depository
short_name_eng text ? Короткое английское client_master.short_name_en NSD
display_name_eng text ? Английское display client_master.display_name_en NSD
depository_participant_code varchar(12) ? Код участника M2M (депозитарий) m2m_codes.dep_code MC0010300000
broker_participant_code varchar(12) ? Код участника M2M (брокер) m2m_codes.brk_code MC0079200001
is_available_for_m2m boolean ! Готовность к приёму M2M m2m_codes.is_active true
comment text ? Свободный комментарий
created_at, updated_at timestamptz ! Авто

securities — справочник ЦБ

Поле Тип Обяз. Описание Источник Fansy Пример
security_code char(12) ! Идентификатор ЦБ в системе НРД, PK security_master.nsd_code MM0766162534
isin char(12) ? ISIN security_master.isin RU0007661625
classification varchar(4) ? BOND (облигация), SHAR (акция), MFUN (ПИФ) security_master.type_code SHAR
category varchar(4) ? ORDN/PREF/UKWN security_master.category ORDN
security_type varchar(256) ? Текстовое описание типа security_master.type_text Акция обыкновенная
security_series text ? Серия выпуска (для облигаций) security_master.series 01
reg_number varchar(256) ? Регистрационный номер выпуска / правил ДУ ПИФ security_master.reg_number 1-01-00010-A
fund_class varchar(120) ? Класс паёв ПИФ security_master.fund_class A
display_name text ! Отображаемое имя для UI security_master.display Сбербанк ао

clients — депоненты-физлица

Поле Тип Обяз. Описание Источник Fansy Пример
id uuid ! PK, генерируется БД customer.uuid
inn varchar(12) ? ИНН (10 цифр юрлицо, 12 цифр физлицо) customer.inn 771234567890
last_name varchar(50) ! Фамилия customer.last_name Иванов
first_name varchar(50) ! Имя customer.first_name Иван
middle_name varchar(50) ? Отчество customer.middle_name Иванович
birth_date date ? Дата рождения customer.birth_date 1980-01-15

client_documents — документы инвестора

Поле Тип Обяз. Описание Источник Fansy Пример
id uuid ! PK
client_id uuid ! FK на clients.id customer_doc.customer_uuid
document_type varchar(2) ! Код документа по справочнику НРД (01..91) customer_doc.type_code 21
series text ? Серия (без пробелов) customer_doc.series 4512
number text ! Номер (без пробелов) customer_doc.number 654321
issued_at date ? Дата выдачи customer_doc.issued_at 2010-05-12
issuer text ? Кем выдан customer_doc.issuer ОУФМС России

iia_contracts — договоры ИИС

Поле Тип Обяз. Описание Источник Fansy Пример
id uuid ! PK
client_id uuid ! FK на clients.id
agreement_type varchar(3) ! T12 (ИИС-1/ИИС-2) или T03 (ИИС-3) iia.type T03
agreement_number varchar(128) ! Номер договора iia.number ИИС78/2024
agreement_date date ! Дата заключения iia.signed_at 2026-01-15
broker_inn varchar(10) ! ИНН брокера, ведущего ИИС iia.broker_inn 0707083893

settlement_requisites — реквизиты депозитариев

Поле Тип Обяз. Описание
id uuid ! PK
inn varchar(10) ! ИНН депозитария, UNIQUE
display_name text ! Отображаемое имя

depo_accounts — счета депо

Поле Тип Обяз. Описание Источник Fansy Пример
id uuid ! PK
client_id uuid ! FK на clients.id
deponent_code varchar(50) ! Код депонента у депозитария depo.deponent_code DP789456
account_id varchar(50) ! Номер счёта депо depo.account_id 31MC0021900000F01
section_id varchar(50) ! Номер раздела счёта depo.section_id P001
depository_inn varchar(10) ! ИНН депозитария depo.depository_inn 7702070139
is_active boolean ! Активен ли счёт depo.is_active true
is_trading boolean ! Торговый раздел depo.is_trading true

Уникальность по тройке (deponent_code, account_id, section_id).

portfolios — портфели и остатки ЦБ

Поле Тип Обяз. Описание Источник Fansy Пример
id uuid ! PK
client_id uuid ! FK на clients.id
depo_account_id uuid ! FK на depo_accounts.id
security_code char(12) ! FK на securities.security_code MM0766162534
isin char(12) ? Кэш ISIN из securities RU0007661625
quantity_whole numeric(38,0) ? Целое количество (для акций/облигаций) position.qty_whole 1500
quantity_fractional numeric(38,16) ? Дробное (для паёв) position.qty_fract 2500.7500000000000000
isolation_status varchar(4) ! Всегда SGDN SGDN
valued_at timestamptz ! На какой момент актуально position.valued_at 2026-03-02T11:30:00Z

Должно быть заполнено ровно одно из (quantity_whole, quantity_fractional).

etl_errors — журнал ошибок ETL

Поле Тип Обяз. Описание
id bigserial ! PK
source_table text ! Таблица в Fansy
source_pk text ? PK записи в Fansy
payload jsonb ? Сама запись для ретрая
error_message text ! Сообщение об ошибке
created_at timestamptz ! Когда зафиксирована