# 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 | ! | Когда зафиксирована |