{
  "schema_version": "1.0",
  "title": "База знаний цифрового сотрудника-аналитика «Конструктор отчётов по энергобиллингу РРЭ»",
  "purpose": "Контекст для LLM-агента вкладки «Аналитик»: 7 источников data.db, словарь полей, правила витрины, справочники значений, политика уточняющих вопросов.",
  "provenance": {
    "service": "https://sol-mspg313y-6zr.apps.sreda-ai.ru",
    "snapshot_date": "2026-08-12",
    "endpoints": [
      "GET /api/meta",
      "GET /api/agent/context",
      "GET /api/templates"
    ],
    "dictionary_source": "data-dictionary.md (отдан сервисом в /api/agent/context.dictionary), собран 11.08.2026 из 7 выгрузок + C#-генератора отчёта ПУНЦ «Код к отчету.txt»",
    "raw_files": [
      "raw/api-meta.json",
      "raw/api-agent-context.json",
      "raw/api-templates.json",
      "raw/data-dictionary.md"
    ],
    "note": "Все факты (поля, значения, количества строк, правила) взяты из перечисленных слепков. Разделы glossary, clarification_policy и answer_rules сформулированы аналитиком на основе data-dictionary.md и ТЗ."
  },
  "sources": [
    {
      "key": "accruals",
      "title": "Начисления (00102)",
      "export_code": "00102",
      "table": "accrual_00102",
      "grain": "строка начисления (R_Id) внутри документа (D_Id)",
      "rows": 386,
      "period": "2024-08",
      "fact_rules_apply": true,
      "fact_rules_note": "Фактовый источник: к нему применяются обязательные правила витрины (mart_rules.mandatory).",
      "dimensions": [
        "year",
        "month",
        "period",
        "doc_type",
        "doc_number",
        "doc_state",
        "calc_name",
        "contract_id",
        "contract",
        "contract_number",
        "contragent",
        "contragent_inn",
        "division_code",
        "division",
        "region",
        "price_zone",
        "nomenclature",
        "row_name",
        "category",
        "voltage",
        "power_range",
        "unit",
        "row_group",
        "row_id"
      ],
      "measures": [
        "volume",
        "price",
        "cost_without_vat",
        "vat_amount",
        "cost_vat"
      ],
      "fields": [
        {
          "key": "year",
          "title": "Год",
          "role": "dimension",
          "type": "int",
          "unit": null,
          "description": null,
          "physical": "00102.D_Year",
          "enum": [
            2024
          ]
        },
        {
          "key": "month",
          "title": "Месяц",
          "role": "dimension",
          "type": "int",
          "unit": null,
          "description": null,
          "physical": "00102.D_Month",
          "enum": [
            8
          ]
        },
        {
          "key": "period",
          "title": "Период",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            "2024-08"
          ]
        },
        {
          "key": "doc_type",
          "title": "Тип документа",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": "АПП/СЧФ — первичные, КАПП/КСЧФ — корректировки",
          "physical": "00102.D_Type",
          "enum": [
            "АПП",
            "КАПП",
            "КСЧФ",
            "СЧФ",
            "Счет",
            "УПД"
          ]
        },
        {
          "key": "doc_number",
          "title": "Номер документа",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": "00102.D_Number",
          "enum": null
        },
        {
          "key": "doc_state",
          "title": "Состояние документа",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": "00102.D_State",
          "enum": [
            "Approved",
            "Prepared"
          ]
        },
        {
          "key": "calc_name",
          "title": "Сценарий расчёта",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": "Текущий расчет / альтернативные сценарии",
          "physical": "00102.R_CalcName",
          "enum": [
            "Альтернативный: Закупка - По тарифам ГП (1-6 ЦК)",
            "Альтернативный: Закупка - По тарифам населения",
            "Текущий расчет"
          ]
        },
        {
          "key": "contract_id",
          "title": "ID договора",
          "role": "dimension",
          "type": "int",
          "unit": null,
          "description": null,
          "physical": "00102.D_ContractId",
          "enum": null
        },
        {
          "key": "contract",
          "title": "Договор",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": "00102.D_ContractName",
          "enum": [
            "\"Россети Центр\" - \"Смоленскэнерго\"",
            "\"Россети Центр\" - \"Смоленскэнерго\" Import_test",
            "«РУСЭНЕРГОСБЫТ» (Смоленск)",
            "«РУСЭНЕРГОСБЫТ» (Смоленск) Import_test",
            "Переток от Юго-Восточной дирекции",
            "Тест - «РУСЭНЕРГОСБЫТ»"
          ]
        },
        {
          "key": "contract_number",
          "title": "Номер договора",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": "00102.D_ContractCode",
          "enum": [
            "128004/Э",
            "170/011-P/138Д-05",
            "Import_test 128004/Э",
            "Import_test 170/011-P/138Д-05",
            "Переток от Юго-Восточной дирекции",
            "Тест"
          ]
        },
        {
          "key": "contragent",
          "title": "Контрагент",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": "00102.D_CompanyName",
          "enum": [
            "ООО \"Русэнергосбыт\"",
            "Общество с ограниченной ответственностью «РУСЭНЕРГОСБЫТ» (Смоленск)",
            "ПАО \"Россети Центр\" - \"Смоленскэнерго\"",
            "Юго-Восточная дирекция по энергообеспечению"
          ]
        },
        {
          "key": "contragent_inn",
          "title": "ИНН контрагента",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            "7706284124 "
          ]
        },
        {
          "key": "division_code",
          "title": "Код подразделения",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": "00102.D_DivisionCode",
          "enum": [
            "0-081",
            "9986",
            "9986 test",
            "test"
          ]
        },
        {
          "key": "division",
          "title": "Подразделение",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": "00102.D_DivisionName",
          "enum": [
            "DR_test",
            "Смоленск тест",
            "Тест"
          ]
        },
        {
          "key": "region",
          "title": "Субъект РФ / энергорайон",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": "00102.R_RegionName",
          "enum": [
            "Смоленская область",
            "г.Москва"
          ]
        },
        {
          "key": "price_zone",
          "title": "Ценовая зона",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            "EUR"
          ]
        },
        {
          "key": "nomenclature",
          "title": "Вид начисления",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": "Электроэнергия, Электроэнергия (потери), Мощность АТС, Мощность СО, ...",
          "physical": "00102.R_Nomenclature",
          "enum": [
            "Мощность АТС",
            "Мощность СО",
            "Средневзвешенный тариф на собственные нужды",
            "Средневзвешенный тариф по ВН",
            "Средневзвешенный тариф по НН",
            "Средневзвешенный тариф по СН1",
            "Средневзвешенный тариф по СН2",
            "Средневзвешенный тариф по ФСК220",
            "Средневзвешенный тариф по договору",
            "Средневзвешенный тариф по населению",
            "Средневзвешенный тариф по потерям транзита",
            "Электроэнергия",
            "Электроэнергия (потери)",
            "Электроэнергия (услуги)",
            "Электроэнергия день",
            "Электроэнергия ночь"
          ]
        },
        {
          "key": "row_name",
          "title": "Наименование строки",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": "00102.R_Name",
          "enum": null
        },
        {
          "key": "category",
          "title": "Ценовая категория",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": "00102.R_Category",
          "enum": [
            "-",
            "1ЦК",
            "3ЦК",
            "4ЦК",
            "Население: Городское население с газ.плитами",
            "Население: Городское население с эл.плитами",
            "Население: Сельское население"
          ]
        },
        {
          "key": "voltage",
          "title": "Уровень напряжения",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": "00102.R_VoltageLevelName",
          "enum": [
            "ВН",
            "НН",
            "СН1",
            "СН2",
            "ФСК220"
          ]
        },
        {
          "key": "power_range",
          "title": "Диапазон мощности",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": "00102.R_PowerRangeName",
          "enum": [
            "более 10 МВт",
            "менее 670 кВт",
            "от 670 до 10 МВт"
          ]
        },
        {
          "key": "unit",
          "title": "Единица измерения",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": "00102.R_UnitType",
          "enum": [
            "кВт",
            "кВтч"
          ]
        },
        {
          "key": "row_group",
          "title": "Группа строки",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "row_id",
          "title": "ID строки начисления",
          "role": "dimension",
          "type": "int",
          "unit": null,
          "description": null,
          "physical": "00102.R_Id",
          "enum": null
        },
        {
          "key": "volume",
          "title": "Объём",
          "role": "measure",
          "type": "float",
          "unit": "кВт·ч / кВт",
          "description": null,
          "physical": "00102.R_Volume",
          "enum": null
        },
        {
          "key": "price",
          "title": "Цена",
          "role": "measure",
          "type": "float",
          "unit": "руб.",
          "description": null,
          "physical": "00102.R_Price",
          "enum": null
        },
        {
          "key": "cost_without_vat",
          "title": "Стоимость без НДС",
          "role": "measure",
          "type": "float",
          "unit": "руб.",
          "description": null,
          "physical": "00102.R_CostWithoutVAT",
          "enum": null
        },
        {
          "key": "vat_amount",
          "title": "НДС",
          "role": "measure",
          "type": "float",
          "unit": "руб.",
          "description": null,
          "physical": "00102.R_VAT_Amount",
          "enum": null
        },
        {
          "key": "cost_vat",
          "title": "Стоимость с НДС",
          "role": "measure",
          "type": "float",
          "unit": "руб.",
          "description": null,
          "physical": "00102.R_CostVAT",
          "enum": null
        }
      ]
    },
    {
      "key": "details",
      "title": "Детализация компонентов цены (00101 + 00102)",
      "export_code": "00101",
      "table": "detail_00101",
      "grain": "компонент цены строки начисления (RowId)",
      "rows": 1396,
      "period": null,
      "fact_rules_apply": true,
      "fact_rules_note": "Фактовый источник: к нему применяются обязательные правила витрины (mart_rules.mandatory).",
      "dimensions": [
        "year",
        "month",
        "period",
        "doc_type",
        "doc_number",
        "doc_state",
        "calc_name",
        "contract_id",
        "contract",
        "contract_number",
        "contragent",
        "contragent_inn",
        "division_code",
        "division",
        "region",
        "price_zone",
        "nomenclature",
        "row_name",
        "category",
        "voltage",
        "power_range",
        "unit",
        "row_group",
        "row_id",
        "component",
        "detail_calc_name",
        "con_obj_id",
        "calc_scheme",
        "store"
      ],
      "measures": [
        "volume",
        "price",
        "cost_without_vat",
        "vat_amount",
        "cost_vat",
        "detail_volume",
        "detail_price",
        "price_without_discount",
        "detail_cost"
      ],
      "fields": [
        {
          "key": "year",
          "title": "Год",
          "role": "dimension",
          "type": "int",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            2024
          ]
        },
        {
          "key": "month",
          "title": "Месяц",
          "role": "dimension",
          "type": "int",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            8
          ]
        },
        {
          "key": "period",
          "title": "Период",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            "2024-08"
          ]
        },
        {
          "key": "doc_type",
          "title": "Тип документа",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": "АПП/СЧФ — первичные, КАПП/КСЧФ — корректировки",
          "physical": null,
          "enum": [
            "АПП",
            "КАПП",
            "КСЧФ",
            "СЧФ",
            "УПД"
          ]
        },
        {
          "key": "doc_number",
          "title": "Номер документа",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "doc_state",
          "title": "Состояние документа",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            "Approved",
            "Prepared"
          ]
        },
        {
          "key": "calc_name",
          "title": "Сценарий расчёта",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": "Текущий расчет / альтернативные сценарии",
          "physical": null,
          "enum": [
            "Альтернативный: Закупка - По тарифам ГП (1-6 ЦК)",
            "Альтернативный: Закупка - По тарифам населения",
            "Текущий расчет"
          ]
        },
        {
          "key": "contract_id",
          "title": "ID договора",
          "role": "dimension",
          "type": "int",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "contract",
          "title": "Договор",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            "\"Россети Центр\" - \"Смоленскэнерго\"",
            "\"Россети Центр\" - \"Смоленскэнерго\" Import_test",
            "«РУСЭНЕРГОСБЫТ» (Смоленск)",
            "«РУСЭНЕРГОСБЫТ» (Смоленск) Import_test",
            "Переток от Юго-Восточной дирекции",
            "Тест - «РУСЭНЕРГОСБЫТ»"
          ]
        },
        {
          "key": "contract_number",
          "title": "Номер договора",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            "128004/Э",
            "170/011-P/138Д-05",
            "Import_test 128004/Э",
            "Import_test 170/011-P/138Д-05",
            "Переток от Юго-Восточной дирекции",
            "Тест"
          ]
        },
        {
          "key": "contragent",
          "title": "Контрагент",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            "ООО \"Русэнергосбыт\"",
            "Общество с ограниченной ответственностью «РУСЭНЕРГОСБЫТ» (Смоленск)",
            "ПАО \"Россети Центр\" - \"Смоленскэнерго\"",
            "Юго-Восточная дирекция по энергообеспечению"
          ]
        },
        {
          "key": "contragent_inn",
          "title": "ИНН контрагента",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            "7706284124 "
          ]
        },
        {
          "key": "division_code",
          "title": "Код подразделения",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            "0-081",
            "9986",
            "9986 test",
            "test"
          ]
        },
        {
          "key": "division",
          "title": "Подразделение",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            "DR_test",
            "Смоленск тест",
            "Тест"
          ]
        },
        {
          "key": "region",
          "title": "Субъект РФ / энергорайон",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            "Смоленская область",
            "г.Москва"
          ]
        },
        {
          "key": "price_zone",
          "title": "Ценовая зона",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            "EUR"
          ]
        },
        {
          "key": "nomenclature",
          "title": "Вид начисления",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": "Электроэнергия, Электроэнергия (потери), Мощность АТС, Мощность СО, ...",
          "physical": null,
          "enum": [
            "Мощность АТС",
            "Мощность СО",
            "Электроэнергия",
            "Электроэнергия (потери)",
            "Электроэнергия (услуги)",
            "Электроэнергия день",
            "Электроэнергия ночь"
          ]
        },
        {
          "key": "row_name",
          "title": "Наименование строки",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "category",
          "title": "Ценовая категория",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            "-",
            "1ЦК",
            "3ЦК",
            "4ЦК",
            "Население: Городское население с газ.плитами",
            "Население: Городское население с эл.плитами",
            "Население: Сельское население"
          ]
        },
        {
          "key": "voltage",
          "title": "Уровень напряжения",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            "ВН",
            "НН",
            "СН1",
            "СН2",
            "ФСК220"
          ]
        },
        {
          "key": "power_range",
          "title": "Диапазон мощности",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            "более 10 МВт",
            "менее 670 кВт",
            "от 670 до 10 МВт"
          ]
        },
        {
          "key": "unit",
          "title": "Единица измерения",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            "кВт",
            "кВтч"
          ]
        },
        {
          "key": "row_group",
          "title": "Группа строки",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "row_id",
          "title": "ID строки начисления",
          "role": "dimension",
          "type": "int",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "component",
          "title": "Компонент цены",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": "СВНЦ ГП для 1ЦК, Услуги по ЭЭ 1ст, Сбытовая надбавка ГП, ...",
          "physical": "00101.Name",
          "enum": [
            "Индивидуальный тариф ЭЭ",
            "ПУНЦ ЭЭ",
            "ПУНЦ мощность АТС",
            "ПУНЦ мощность СО",
            "СВНЦ ГП для 1ЦК",
            "Сбытовая надбавка ГП",
            "Ставка за содержание сетей",
            "Тариф на инфраструктуру",
            "Услуги УИРП",
            "Услуги ЭЭ 2ст: Ставка за потери",
            "Услуги по ЭЭ 1ст",
            "Цена ЭЭ на ОРЭ",
            "Цена мощность на ОРЭ",
            "Электроэнергия день",
            "Электроэнергия ночь",
            "Электроэнергия одноставочный"
          ]
        },
        {
          "key": "detail_calc_name",
          "title": "Сценарий расчёта (детализация)",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": [
            "Альтернативный: Закупка - По тарифам ГП (1-6 ЦК)",
            "Альтернативный: Закупка - По тарифам населения",
            "Текущий расчет"
          ]
        },
        {
          "key": "con_obj_id",
          "title": "Объект учёта",
          "role": "dimension",
          "type": "int",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "calc_scheme",
          "title": "Схема расчёта",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": "00101.CalcSchemeName",
          "enum": [
            "Текущая"
          ]
        },
        {
          "key": "store",
          "title": "Точка поставки",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "volume",
          "title": "Объём",
          "role": "measure",
          "type": "float",
          "unit": "кВт·ч / кВт",
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "price",
          "title": "Цена",
          "role": "measure",
          "type": "float",
          "unit": "руб.",
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "cost_without_vat",
          "title": "Стоимость без НДС",
          "role": "measure",
          "type": "float",
          "unit": "руб.",
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "vat_amount",
          "title": "НДС",
          "role": "measure",
          "type": "float",
          "unit": "руб.",
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "cost_vat",
          "title": "Стоимость с НДС",
          "role": "measure",
          "type": "float",
          "unit": "руб.",
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "detail_volume",
          "title": "Объём (детализация)",
          "role": "measure",
          "type": "float",
          "unit": null,
          "description": null,
          "physical": "00101.Volume",
          "enum": null
        },
        {
          "key": "detail_price",
          "title": "Цена компонента",
          "role": "measure",
          "type": "float",
          "unit": "руб.",
          "description": null,
          "physical": "00101.Price",
          "enum": null
        },
        {
          "key": "price_without_discount",
          "title": "Цена без скидки",
          "role": "measure",
          "type": "float",
          "unit": "руб.",
          "description": null,
          "physical": "00101.PriceWithoutDiscont",
          "enum": null
        },
        {
          "key": "detail_cost",
          "title": "Стоимость компонента без НДС",
          "role": "measure",
          "type": "float",
          "unit": "руб.",
          "description": null,
          "physical": "00101.CostWithoutVAT",
          "enum": null
        }
      ]
    },
    {
      "key": "contracts",
      "title": "Договоры РРЭ (00211)",
      "export_code": "00211",
      "table": "contract_00211",
      "grain": "договор (C_Id)",
      "rows": 14,
      "period": null,
      "fact_rules_apply": false,
      "fact_rules_note": "Справочник: правила витрины не применяются, используется для расшифровки и фильтрации.",
      "dimensions": [
        "id",
        "code",
        "number",
        "name",
        "state",
        "begin_dt",
        "end_dt",
        "railway",
        "contragent_id"
      ],
      "measures": [],
      "fields": [
        {
          "key": "id",
          "title": "ID",
          "role": "dimension",
          "type": "int",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "code",
          "title": "Код",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "number",
          "title": "Номер",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "name",
          "title": "Наименование",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "state",
          "title": "Состояние",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "begin_dt",
          "title": "Начало",
          "role": "dimension",
          "type": "date",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "end_dt",
          "title": "Окончание",
          "role": "dimension",
          "type": "date",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "railway",
          "title": "Дорога",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "contragent_id",
          "title": "ID контрагента",
          "role": "dimension",
          "type": "int",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        }
      ]
    },
    {
      "key": "contragents",
      "title": "Организации-контрагенты (01113)",
      "export_code": "01113",
      "table": "contragent_01113",
      "grain": "организация-контрагент (C_Id)",
      "rows": 12,
      "period": null,
      "fact_rules_apply": false,
      "fact_rules_note": "Справочник: правила витрины не применяются, используется для расшифровки и фильтрации.",
      "dimensions": [
        "id",
        "name",
        "short_name",
        "inn",
        "kpp",
        "type"
      ],
      "measures": [],
      "fields": [
        {
          "key": "id",
          "title": "ID",
          "role": "dimension",
          "type": "int",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "name",
          "title": "Наименование",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "short_name",
          "title": "Краткое наименование",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "inn",
          "title": "ИНН",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "kpp",
          "title": "КПП",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "type",
          "title": "Тип",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        }
      ]
    },
    {
      "key": "divisions",
      "title": "Структурные подразделения (01112)",
      "export_code": "01112",
      "table": "div_01112",
      "grain": "структурное подразделение (D_Id)",
      "rows": 15,
      "period": null,
      "fact_rules_apply": false,
      "fact_rules_note": "Справочник: правила витрины не применяются, используется для расшифровки и фильтрации.",
      "dimensions": [
        "id",
        "code",
        "name",
        "short_name",
        "type"
      ],
      "measures": [],
      "fields": [
        {
          "key": "id",
          "title": "ID",
          "role": "dimension",
          "type": "int",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "code",
          "title": "Код",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "name",
          "title": "Наименование",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "short_name",
          "title": "Краткое наименование",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "type",
          "title": "Тип",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        }
      ]
    },
    {
      "key": "regions",
      "title": "Субъекты РФ / энергорайоны (01115)",
      "export_code": "01115",
      "table": "region_01115",
      "grain": "субъект РФ / энергорайон (R_Id)",
      "rows": 85,
      "period": null,
      "fact_rules_apply": false,
      "fact_rules_note": "Справочник: правила витрины не применяются, используется для расшифровки и фильтрации.",
      "dimensions": [
        "id",
        "code",
        "name",
        "price_zone",
        "time_zone"
      ],
      "measures": [],
      "fields": [
        {
          "key": "id",
          "title": "ID",
          "role": "dimension",
          "type": "int",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "code",
          "title": "Код",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "name",
          "title": "Наименование",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "price_zone",
          "title": "Ценовая зона",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "time_zone",
          "title": "Часовой пояс",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        }
      ]
    },
    {
      "key": "signers",
      "title": "Подписанты (01114)",
      "export_code": "01114",
      "table": "signer_01114",
      "grain": "подписант (S_Id)",
      "rows": 5,
      "period": null,
      "fact_rules_apply": false,
      "fact_rules_note": "Справочник: правила витрины не применяются, используется для расшифровки и фильтрации.",
      "dimensions": [
        "id",
        "surname",
        "name",
        "job_title",
        "email",
        "company_id"
      ],
      "measures": [],
      "fields": [
        {
          "key": "id",
          "title": "ID",
          "role": "dimension",
          "type": "int",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "surname",
          "title": "Фамилия",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "name",
          "title": "Имя",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "job_title",
          "title": "Должность",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "email",
          "title": "E-mail",
          "role": "dimension",
          "type": "text",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        },
        {
          "key": "company_id",
          "title": "ID организации",
          "role": "dimension",
          "type": "int",
          "unit": null,
          "description": null,
          "physical": null,
          "enum": null
        }
      ]
    }
  ],
  "field_dictionary": {
    "year": {
      "key": "year",
      "title": "Год",
      "role": "dimension",
      "type": "int",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.D_Year"
      ],
      "enum": [
        2024
      ]
    },
    "month": {
      "key": "month",
      "title": "Месяц",
      "role": "dimension",
      "type": "int",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.D_Month"
      ],
      "enum": [
        8
      ]
    },
    "period": {
      "key": "period",
      "title": "Период",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [],
      "enum": [
        "2024-08"
      ]
    },
    "doc_type": {
      "key": "doc_type",
      "title": "Тип документа",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": "АПП/СЧФ — первичные, КАПП/КСЧФ — корректировки",
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.D_Type"
      ],
      "enum": [
        "АПП",
        "КАПП",
        "КСЧФ",
        "СЧФ",
        "Счет",
        "УПД"
      ]
    },
    "doc_number": {
      "key": "doc_number",
      "title": "Номер документа",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.D_Number"
      ],
      "enum": null
    },
    "doc_state": {
      "key": "doc_state",
      "title": "Состояние документа",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.D_State"
      ],
      "enum": [
        "Approved",
        "Prepared"
      ]
    },
    "calc_name": {
      "key": "calc_name",
      "title": "Сценарий расчёта",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": "Текущий расчет / альтернативные сценарии",
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.R_CalcName"
      ],
      "enum": [
        "Альтернативный: Закупка - По тарифам ГП (1-6 ЦК)",
        "Альтернативный: Закупка - По тарифам населения",
        "Текущий расчет"
      ]
    },
    "contract_id": {
      "key": "contract_id",
      "title": "ID договора",
      "role": "dimension",
      "type": "int",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.D_ContractId"
      ],
      "enum": null
    },
    "contract": {
      "key": "contract",
      "title": "Договор",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.D_ContractName"
      ],
      "enum": [
        "\"Россети Центр\" - \"Смоленскэнерго\"",
        "\"Россети Центр\" - \"Смоленскэнерго\" Import_test",
        "«РУСЭНЕРГОСБЫТ» (Смоленск)",
        "«РУСЭНЕРГОСБЫТ» (Смоленск) Import_test",
        "Переток от Юго-Восточной дирекции",
        "Тест - «РУСЭНЕРГОСБЫТ»"
      ]
    },
    "contract_number": {
      "key": "contract_number",
      "title": "Номер договора",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.D_ContractCode"
      ],
      "enum": [
        "128004/Э",
        "170/011-P/138Д-05",
        "Import_test 128004/Э",
        "Import_test 170/011-P/138Д-05",
        "Переток от Юго-Восточной дирекции",
        "Тест"
      ]
    },
    "contragent": {
      "key": "contragent",
      "title": "Контрагент",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.D_CompanyName"
      ],
      "enum": [
        "ООО \"Русэнергосбыт\"",
        "Общество с ограниченной ответственностью «РУСЭНЕРГОСБЫТ» (Смоленск)",
        "ПАО \"Россети Центр\" - \"Смоленскэнерго\"",
        "Юго-Восточная дирекция по энергообеспечению"
      ]
    },
    "contragent_inn": {
      "key": "contragent_inn",
      "title": "ИНН контрагента",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [],
      "enum": [
        "7706284124 "
      ]
    },
    "division_code": {
      "key": "division_code",
      "title": "Код подразделения",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.D_DivisionCode"
      ],
      "enum": [
        "0-081",
        "9986",
        "9986 test",
        "test"
      ]
    },
    "division": {
      "key": "division",
      "title": "Подразделение",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.D_DivisionName"
      ],
      "enum": [
        "DR_test",
        "Смоленск тест",
        "Тест"
      ]
    },
    "region": {
      "key": "region",
      "title": "Субъект РФ / энергорайон",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.R_RegionName"
      ],
      "enum": [
        "Смоленская область",
        "г.Москва"
      ]
    },
    "price_zone": {
      "key": "price_zone",
      "title": "Ценовая зона",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details",
        "regions"
      ],
      "physical": [],
      "enum": [
        "EUR"
      ]
    },
    "nomenclature": {
      "key": "nomenclature",
      "title": "Вид начисления",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": "Электроэнергия, Электроэнергия (потери), Мощность АТС, Мощность СО, ...",
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.R_Nomenclature"
      ],
      "enum": [
        "Мощность АТС",
        "Мощность СО",
        "Средневзвешенный тариф на собственные нужды",
        "Средневзвешенный тариф по ВН",
        "Средневзвешенный тариф по НН",
        "Средневзвешенный тариф по СН1",
        "Средневзвешенный тариф по СН2",
        "Средневзвешенный тариф по ФСК220",
        "Средневзвешенный тариф по договору",
        "Средневзвешенный тариф по населению",
        "Средневзвешенный тариф по потерям транзита",
        "Электроэнергия",
        "Электроэнергия (потери)",
        "Электроэнергия (услуги)",
        "Электроэнергия день",
        "Электроэнергия ночь"
      ]
    },
    "row_name": {
      "key": "row_name",
      "title": "Наименование строки",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.R_Name"
      ],
      "enum": null
    },
    "category": {
      "key": "category",
      "title": "Ценовая категория",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.R_Category"
      ],
      "enum": [
        "-",
        "1ЦК",
        "3ЦК",
        "4ЦК",
        "Население: Городское население с газ.плитами",
        "Население: Городское население с эл.плитами",
        "Население: Сельское население"
      ]
    },
    "voltage": {
      "key": "voltage",
      "title": "Уровень напряжения",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.R_VoltageLevelName"
      ],
      "enum": [
        "ВН",
        "НН",
        "СН1",
        "СН2",
        "ФСК220"
      ]
    },
    "power_range": {
      "key": "power_range",
      "title": "Диапазон мощности",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.R_PowerRangeName"
      ],
      "enum": [
        "более 10 МВт",
        "менее 670 кВт",
        "от 670 до 10 МВт"
      ]
    },
    "unit": {
      "key": "unit",
      "title": "Единица измерения",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.R_UnitType"
      ],
      "enum": [
        "кВт",
        "кВтч"
      ]
    },
    "row_group": {
      "key": "row_group",
      "title": "Группа строки",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [],
      "enum": null
    },
    "row_id": {
      "key": "row_id",
      "title": "ID строки начисления",
      "role": "dimension",
      "type": "int",
      "unit": null,
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.R_Id"
      ],
      "enum": null
    },
    "volume": {
      "key": "volume",
      "title": "Объём",
      "role": "measure",
      "type": "float",
      "unit": "кВт·ч / кВт",
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.R_Volume"
      ],
      "enum": null
    },
    "price": {
      "key": "price",
      "title": "Цена",
      "role": "measure",
      "type": "float",
      "unit": "руб.",
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.R_Price"
      ],
      "enum": null
    },
    "cost_without_vat": {
      "key": "cost_without_vat",
      "title": "Стоимость без НДС",
      "role": "measure",
      "type": "float",
      "unit": "руб.",
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.R_CostWithoutVAT"
      ],
      "enum": null
    },
    "vat_amount": {
      "key": "vat_amount",
      "title": "НДС",
      "role": "measure",
      "type": "float",
      "unit": "руб.",
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.R_VAT_Amount"
      ],
      "enum": null
    },
    "cost_vat": {
      "key": "cost_vat",
      "title": "Стоимость с НДС",
      "role": "measure",
      "type": "float",
      "unit": "руб.",
      "description": null,
      "sources": [
        "accruals",
        "details"
      ],
      "physical": [
        "00102.R_CostVAT"
      ],
      "enum": null
    },
    "component": {
      "key": "component",
      "title": "Компонент цены",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": "СВНЦ ГП для 1ЦК, Услуги по ЭЭ 1ст, Сбытовая надбавка ГП, ...",
      "sources": [
        "details"
      ],
      "physical": [
        "00101.Name"
      ],
      "enum": [
        "Индивидуальный тариф ЭЭ",
        "ПУНЦ ЭЭ",
        "ПУНЦ мощность АТС",
        "ПУНЦ мощность СО",
        "СВНЦ ГП для 1ЦК",
        "Сбытовая надбавка ГП",
        "Ставка за содержание сетей",
        "Тариф на инфраструктуру",
        "Услуги УИРП",
        "Услуги ЭЭ 2ст: Ставка за потери",
        "Услуги по ЭЭ 1ст",
        "Цена ЭЭ на ОРЭ",
        "Цена мощность на ОРЭ",
        "Электроэнергия день",
        "Электроэнергия ночь",
        "Электроэнергия одноставочный"
      ]
    },
    "detail_calc_name": {
      "key": "detail_calc_name",
      "title": "Сценарий расчёта (детализация)",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "details"
      ],
      "physical": [],
      "enum": [
        "Альтернативный: Закупка - По тарифам ГП (1-6 ЦК)",
        "Альтернативный: Закупка - По тарифам населения",
        "Текущий расчет"
      ]
    },
    "con_obj_id": {
      "key": "con_obj_id",
      "title": "Объект учёта",
      "role": "dimension",
      "type": "int",
      "unit": null,
      "description": null,
      "sources": [
        "details"
      ],
      "physical": [],
      "enum": null
    },
    "calc_scheme": {
      "key": "calc_scheme",
      "title": "Схема расчёта",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "details"
      ],
      "physical": [
        "00101.CalcSchemeName"
      ],
      "enum": [
        "Текущая"
      ]
    },
    "store": {
      "key": "store",
      "title": "Точка поставки",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "details"
      ],
      "physical": [],
      "enum": null
    },
    "detail_volume": {
      "key": "detail_volume",
      "title": "Объём (детализация)",
      "role": "measure",
      "type": "float",
      "unit": null,
      "description": null,
      "sources": [
        "details"
      ],
      "physical": [
        "00101.Volume"
      ],
      "enum": null
    },
    "detail_price": {
      "key": "detail_price",
      "title": "Цена компонента",
      "role": "measure",
      "type": "float",
      "unit": "руб.",
      "description": null,
      "sources": [
        "details"
      ],
      "physical": [
        "00101.Price"
      ],
      "enum": null
    },
    "price_without_discount": {
      "key": "price_without_discount",
      "title": "Цена без скидки",
      "role": "measure",
      "type": "float",
      "unit": "руб.",
      "description": null,
      "sources": [
        "details"
      ],
      "physical": [
        "00101.PriceWithoutDiscont"
      ],
      "enum": null
    },
    "detail_cost": {
      "key": "detail_cost",
      "title": "Стоимость компонента без НДС",
      "role": "measure",
      "type": "float",
      "unit": "руб.",
      "description": null,
      "sources": [
        "details"
      ],
      "physical": [
        "00101.CostWithoutVAT"
      ],
      "enum": null
    },
    "id": {
      "key": "id",
      "title": "ID",
      "role": "dimension",
      "type": "int",
      "unit": null,
      "description": null,
      "sources": [
        "contracts",
        "contragents",
        "divisions",
        "regions",
        "signers"
      ],
      "physical": [],
      "enum": null
    },
    "code": {
      "key": "code",
      "title": "Код",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "contracts",
        "divisions",
        "regions"
      ],
      "physical": [],
      "enum": null
    },
    "number": {
      "key": "number",
      "title": "Номер",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "contracts"
      ],
      "physical": [],
      "enum": null
    },
    "name": {
      "key": "name",
      "title": "Наименование",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "contracts",
        "contragents",
        "divisions",
        "regions",
        "signers"
      ],
      "physical": [],
      "enum": null
    },
    "state": {
      "key": "state",
      "title": "Состояние",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "contracts"
      ],
      "physical": [],
      "enum": null
    },
    "begin_dt": {
      "key": "begin_dt",
      "title": "Начало",
      "role": "dimension",
      "type": "date",
      "unit": null,
      "description": null,
      "sources": [
        "contracts"
      ],
      "physical": [],
      "enum": null
    },
    "end_dt": {
      "key": "end_dt",
      "title": "Окончание",
      "role": "dimension",
      "type": "date",
      "unit": null,
      "description": null,
      "sources": [
        "contracts"
      ],
      "physical": [],
      "enum": null
    },
    "railway": {
      "key": "railway",
      "title": "Дорога",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "contracts"
      ],
      "physical": [],
      "enum": null
    },
    "contragent_id": {
      "key": "contragent_id",
      "title": "ID контрагента",
      "role": "dimension",
      "type": "int",
      "unit": null,
      "description": null,
      "sources": [
        "contracts"
      ],
      "physical": [],
      "enum": null
    },
    "short_name": {
      "key": "short_name",
      "title": "Краткое наименование",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "contragents",
        "divisions"
      ],
      "physical": [],
      "enum": null
    },
    "inn": {
      "key": "inn",
      "title": "ИНН",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "contragents"
      ],
      "physical": [],
      "enum": null
    },
    "kpp": {
      "key": "kpp",
      "title": "КПП",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "contragents"
      ],
      "physical": [],
      "enum": null
    },
    "type": {
      "key": "type",
      "title": "Тип",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "contragents",
        "divisions"
      ],
      "physical": [],
      "enum": null
    },
    "time_zone": {
      "key": "time_zone",
      "title": "Часовой пояс",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "regions"
      ],
      "physical": [],
      "enum": null
    },
    "surname": {
      "key": "surname",
      "title": "Фамилия",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "signers"
      ],
      "physical": [],
      "enum": null
    },
    "job_title": {
      "key": "job_title",
      "title": "Должность",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "signers"
      ],
      "physical": [],
      "enum": null
    },
    "email": {
      "key": "email",
      "title": "E-mail",
      "role": "dimension",
      "type": "text",
      "unit": null,
      "description": null,
      "sources": [
        "signers"
      ],
      "physical": [],
      "enum": null
    },
    "company_id": {
      "key": "company_id",
      "title": "ID организации",
      "role": "dimension",
      "type": "int",
      "unit": null,
      "description": null,
      "sources": [
        "signers"
      ],
      "physical": [],
      "enum": null
    }
  },
  "physical_schema": {
    "tables": [
      {
        "table": "accrual_00102",
        "title": "00102 Документы и строки начислений",
        "rows": 386,
        "period": "2024-08"
      },
      {
        "table": "detail_00101",
        "title": "00101 Детализация строк начислений",
        "rows": 1396,
        "period": ""
      },
      {
        "table": "contract_00211",
        "title": "00211 Договоры РРЭ",
        "rows": 14,
        "period": ""
      },
      {
        "table": "contragent_01113",
        "title": "01113 Организации-контрагенты",
        "rows": 12,
        "period": ""
      },
      {
        "table": "signer_01114",
        "title": "01114 Подписанты",
        "rows": 5,
        "period": ""
      },
      {
        "table": "region_01115",
        "title": "01115 Субъекты РФ",
        "rows": 85,
        "period": ""
      },
      {
        "table": "div_01112",
        "title": "01112 Структурные подразделения",
        "rows": 15,
        "period": ""
      }
    ],
    "relations": [
      {
        "from": "00101.RowId",
        "to": "00102.R_Id",
        "meaning": "компоненты цены ↔ строка начисления"
      },
      {
        "from": "00101.AccrualDocumentId",
        "to": "00102.D_Id",
        "meaning": "компоненты цены ↔ документ"
      },
      {
        "from": "00102.D_ContractId",
        "to": "00211.C_Id",
        "meaning": "документ ↔ договор"
      },
      {
        "from": "00102.D_CompanyCode",
        "to": "01113.C_Code",
        "meaning": "документ ↔ контрагент"
      },
      {
        "from": "00211.C_ContragentId",
        "to": "01113.C_Id",
        "meaning": "договор ↔ контрагент"
      },
      {
        "from": "00211.C_EnergyRegionId",
        "to": "01115.R_Id",
        "meaning": "договор ↔ субъект РФ"
      },
      {
        "from": "00211.C_DivisionId",
        "to": "01112.D_Id",
        "meaning": "договор ↔ подразделение"
      },
      {
        "from": "00102.D_DivisionCode",
        "to": "01112.D_Code",
        "meaning": "документ ↔ подразделение"
      },
      {
        "from": "01114.C_CompanyId",
        "to": "01113.C_Id",
        "meaning": "подписант ↔ контрагент"
      },
      {
        "from": "00102.D_ParentDocId",
        "to": "00102.D_Id",
        "meaning": "корректировка ↔ исходный документ"
      }
    ],
    "join_warnings": [
      "00101.RowId ссылается на СТРОКУ 00102.R_Id, а 00101.AccrualDocumentId — на ДОКУМЕНТ 00102.D_Id, вопреки названиям полей. Обе связи дают 0 битых ссылок (проверено ETL 11.08.2026).",
      "Join компонентов на документ вместо строки завышает суммы кратно: 1396 пар превращаются в 80 174.",
      "В исходных .xlsx последняя строка служебная («Кол-во: N»); ETL её отбрасывает, иначе ключевые колонки получают тип TEXT."
    ]
  },
  "mart_rules": {
    "applies_to": [
      "accruals",
      "details"
    ],
    "source_of_truth": "data-dictionary.md, раздел 4 — правило отбора отчёта ПУНЦ (C#-генератор, строки 693–694)",
    "enforcement": "Правила зашиты в витрину и подставляются в WHERE автоматически для источников с fact_rules_apply = true. Проверено 12.08.2026 запросом POST /api/report: в ответе sql содержит все три предиката, в результате нет ни строк «Средневзвешенный…», ни документов кроме АПП. Агенту НЕ нужно (и нечем — оператора not_starts_with в API нет) дублировать их фильтрами; их нужно ЗНАТЬ, чтобы правильно объяснять цифры пользователю.",
    "sql_where_observed": "WHERE a.D_Type = 'АПП'\n  AND a.R_CalcName = 'Текущий расчет'\n  AND a.R_Nomenclature NOT LIKE 'Средневзвешенный%'",
    "mandatory": [
      {
        "id": "doc_type_app",
        "rule": "D_Type = 'АПП'",
        "sql": "a.D_Type = 'АПП'",
        "enforced_by": "витрина (автоматически)",
        "rationale": "СЧФ описывает то же начисление, что и АПП; КАПП/КСЧФ — корректировки. Любой другой набор типов документов даёт двойной счёт."
      },
      {
        "id": "calc_current",
        "rule": "R_CalcName = 'Текущий расчет' (в 00101 — RowCalcName = 'Текущий расчет')",
        "sql": "a.R_CalcName = 'Текущий расчет'",
        "enforced_by": "витрина (автоматически)",
        "rationale": "Альтернативные сценарии закупки несопоставимы с текущим по цене."
      },
      {
        "id": "exclude_weighted",
        "rule": "исключить строки R_Nomenclature LIKE 'Средневзвешенный%'",
        "sql": "a.R_Nomenclature NOT LIKE 'Средневзвешенный%'",
        "enforced_by": "витрина (автоматически)",
        "rationale": "Это расчётные итоги по договору (средневзвешенные тарифы), а не первичные начисления; их включение задваивает объём и стоимость."
      }
    ],
    "consequences_for_agent": [
      "Спрашивать про альтернативные сценарии расчёта бессмысленно для источников accruals/details: витрина отдаёт только «Текущий расчет». Если пользователь просит альтернативный сценарий — честно сказать, что витрина его не отдаёт.",
      "Аналогично по корректировкам: КАПП/КСЧФ через /api/report недоступны, доступны только АПП.",
      "Значения doc_type/calc_name из enum_values описывают СЫРЫЕ данные data.db, а не то, что вернёт витрина."
    ],
    "reference_joins_observed": [
      "LEFT JOIN contract_00211  ct ON ct.C_Id = a.D_ContractId",
      "LEFT JOIN contragent_01113 cg ON cg.C_Id = ct.C_ContragentId",
      "LEFT JOIN div_01112        dv ON dv.D_Code = a.D_DivisionCode",
      "LEFT JOIN region_01115     rg ON rg.R_Id = ct.C_EnergyRegionId"
    ],
    "punc_report_selection": {
      "accruals": "D_Type == 'АПП' AND R_CalcName == 'Текущий расчет' AND договор == выбранный AND (D_Year, D_Month) == период",
      "details": "RowCalcName == 'Текущий расчет', соединение 00101.RowId = 00102.R_Id",
      "breakdown_by_nomenclature": [
        "Электроэнергия",
        "Электроэнергия (потери)",
        "Мощность АТС",
        "Мощность СО"
      ],
      "exclude": "R_Nomenclature LIKE 'Средневзвешенный%'"
    },
    "price_components": [
      {
        "name": "Цена ЭЭ на ОРЭ",
        "rows": 99,
        "role": "СВНЦ / цена ЭЭ на оптовом рынке (для не-1ЦК)"
      },
      {
        "name": "СВНЦ ГП для 1ЦК",
        "rows": 102,
        "role": "то же для первой ценовой категории"
      },
      {
        "name": "Услуги по ЭЭ 1ст",
        "rows": 127,
        "role": "котловой тариф на передачу, одноставочный"
      },
      {
        "name": "Услуги ЭЭ 2ст: Ставка за потери",
        "rows": 46,
        "role": "ставка за потери (двухставочный, строки «Электроэнергия (потери)»)"
      },
      {
        "name": "Ставка за содержание сетей",
        "rows": 46,
        "role": "вторая ставка двухставочного тарифа передачи"
      },
      {
        "name": "Сбытовая надбавка ГП",
        "rows": 201,
        "role": "сбытовая надбавка; PriceWithoutDiscont − Price = скидка"
      },
      {
        "name": "Тариф на инфраструктуру",
        "rows": 194,
        "role": "иные услуги (АТС/СО/ЦФР)"
      },
      {
        "name": "Услуги УИРП",
        "rows": 104,
        "role": "услуги по управлению изменением режима потребления"
      },
      {
        "name": "Цена мощность на ОРЭ",
        "rows": 99,
        "role": "цена мощности на ОРЭ (строки «Мощность АТС» / «Мощность СО»)"
      },
      {
        "name": "ПУНЦ ЭЭ",
        "rows": 215,
        "role": "итоговый предельный уровень нерегулируемой цены по ЭЭ"
      },
      {
        "name": "ПУНЦ мощность АТС",
        "rows": 99,
        "role": "итог по мощности АТС"
      },
      {
        "name": "ПУНЦ мощность СО",
        "rows": 46,
        "role": "итог по мощности СО"
      },
      {
        "name": "Электроэнергия одноставочный",
        "rows": 10,
        "role": "тариф населения (альтернативный сценарий)"
      },
      {
        "name": "Электроэнергия день",
        "rows": 2,
        "role": "зонный тариф населения, дневная зона"
      },
      {
        "name": "Электроэнергия ночь",
        "rows": 2,
        "role": "зонный тариф населения, ночная зона"
      },
      {
        "name": "Индивидуальный тариф ЭЭ",
        "rows": 4,
        "role": "индивидуальный тариф"
      }
    ],
    "antipatterns": [
      "Суммировать АПП вместе с СЧФ — двойной счёт.",
      "Складывать объёмы в кВт·ч и кВт в один показатель.",
      "Включать строки «Средневзвешенный тариф …» в сумму объёма или стоимости.",
      "Смешивать «Текущий расчет» с альтернативными сценариями в одной цене.",
      "Группировать разбором текста R_Name вместо атрибутных полей category / voltage / power_range."
    ]
  },
  "enum_values": {
    "accruals": {
      "year": [
        2024
      ],
      "month": [
        8
      ],
      "period": [
        "2024-08"
      ],
      "doc_type": [
        "АПП",
        "КАПП",
        "КСЧФ",
        "СЧФ",
        "Счет",
        "УПД"
      ],
      "doc_state": [
        "Approved",
        "Prepared"
      ],
      "calc_name": [
        "Альтернативный: Закупка - По тарифам ГП (1-6 ЦК)",
        "Альтернативный: Закупка - По тарифам населения",
        "Текущий расчет"
      ],
      "contract": [
        "\"Россети Центр\" - \"Смоленскэнерго\"",
        "\"Россети Центр\" - \"Смоленскэнерго\" Import_test",
        "«РУСЭНЕРГОСБЫТ» (Смоленск)",
        "«РУСЭНЕРГОСБЫТ» (Смоленск) Import_test",
        "Переток от Юго-Восточной дирекции",
        "Тест - «РУСЭНЕРГОСБЫТ»"
      ],
      "contract_number": [
        "128004/Э",
        "170/011-P/138Д-05",
        "Import_test 128004/Э",
        "Import_test 170/011-P/138Д-05",
        "Переток от Юго-Восточной дирекции",
        "Тест"
      ],
      "contragent": [
        "ООО \"Русэнергосбыт\"",
        "Общество с ограниченной ответственностью «РУСЭНЕРГОСБЫТ» (Смоленск)",
        "ПАО \"Россети Центр\" - \"Смоленскэнерго\"",
        "Юго-Восточная дирекция по энергообеспечению"
      ],
      "contragent_inn": [
        "7706284124 "
      ],
      "division_code": [
        "0-081",
        "9986",
        "9986 test",
        "test"
      ],
      "division": [
        "DR_test",
        "Смоленск тест",
        "Тест"
      ],
      "region": [
        "Смоленская область",
        "г.Москва"
      ],
      "price_zone": [
        "EUR"
      ],
      "nomenclature": [
        "Мощность АТС",
        "Мощность СО",
        "Средневзвешенный тариф на собственные нужды",
        "Средневзвешенный тариф по ВН",
        "Средневзвешенный тариф по НН",
        "Средневзвешенный тариф по СН1",
        "Средневзвешенный тариф по СН2",
        "Средневзвешенный тариф по ФСК220",
        "Средневзвешенный тариф по договору",
        "Средневзвешенный тариф по населению",
        "Средневзвешенный тариф по потерям транзита",
        "Электроэнергия",
        "Электроэнергия (потери)",
        "Электроэнергия (услуги)",
        "Электроэнергия день",
        "Электроэнергия ночь"
      ],
      "category": [
        "-",
        "1ЦК",
        "3ЦК",
        "4ЦК",
        "Население: Городское население с газ.плитами",
        "Население: Городское население с эл.плитами",
        "Население: Сельское население"
      ],
      "voltage": [
        "ВН",
        "НН",
        "СН1",
        "СН2",
        "ФСК220"
      ],
      "power_range": [
        "более 10 МВт",
        "менее 670 кВт",
        "от 670 до 10 МВт"
      ],
      "unit": [
        "кВт",
        "кВтч"
      ]
    },
    "details": {
      "year": [
        2024
      ],
      "month": [
        8
      ],
      "period": [
        "2024-08"
      ],
      "doc_type": [
        "АПП",
        "КАПП",
        "КСЧФ",
        "СЧФ",
        "УПД"
      ],
      "doc_state": [
        "Approved",
        "Prepared"
      ],
      "calc_name": [
        "Альтернативный: Закупка - По тарифам ГП (1-6 ЦК)",
        "Альтернативный: Закупка - По тарифам населения",
        "Текущий расчет"
      ],
      "contract": [
        "\"Россети Центр\" - \"Смоленскэнерго\"",
        "\"Россети Центр\" - \"Смоленскэнерго\" Import_test",
        "«РУСЭНЕРГОСБЫТ» (Смоленск)",
        "«РУСЭНЕРГОСБЫТ» (Смоленск) Import_test",
        "Переток от Юго-Восточной дирекции",
        "Тест - «РУСЭНЕРГОСБЫТ»"
      ],
      "contract_number": [
        "128004/Э",
        "170/011-P/138Д-05",
        "Import_test 128004/Э",
        "Import_test 170/011-P/138Д-05",
        "Переток от Юго-Восточной дирекции",
        "Тест"
      ],
      "contragent": [
        "ООО \"Русэнергосбыт\"",
        "Общество с ограниченной ответственностью «РУСЭНЕРГОСБЫТ» (Смоленск)",
        "ПАО \"Россети Центр\" - \"Смоленскэнерго\"",
        "Юго-Восточная дирекция по энергообеспечению"
      ],
      "contragent_inn": [
        "7706284124 "
      ],
      "division_code": [
        "0-081",
        "9986",
        "9986 test",
        "test"
      ],
      "division": [
        "DR_test",
        "Смоленск тест",
        "Тест"
      ],
      "region": [
        "Смоленская область",
        "г.Москва"
      ],
      "price_zone": [
        "EUR"
      ],
      "nomenclature": [
        "Мощность АТС",
        "Мощность СО",
        "Электроэнергия",
        "Электроэнергия (потери)",
        "Электроэнергия (услуги)",
        "Электроэнергия день",
        "Электроэнергия ночь"
      ],
      "category": [
        "-",
        "1ЦК",
        "3ЦК",
        "4ЦК",
        "Население: Городское население с газ.плитами",
        "Население: Городское население с эл.плитами",
        "Население: Сельское население"
      ],
      "voltage": [
        "ВН",
        "НН",
        "СН1",
        "СН2",
        "ФСК220"
      ],
      "power_range": [
        "более 10 МВт",
        "менее 670 кВт",
        "от 670 до 10 МВт"
      ],
      "unit": [
        "кВт",
        "кВтч"
      ],
      "component": [
        "Индивидуальный тариф ЭЭ",
        "ПУНЦ ЭЭ",
        "ПУНЦ мощность АТС",
        "ПУНЦ мощность СО",
        "СВНЦ ГП для 1ЦК",
        "Сбытовая надбавка ГП",
        "Ставка за содержание сетей",
        "Тариф на инфраструктуру",
        "Услуги УИРП",
        "Услуги ЭЭ 2ст: Ставка за потери",
        "Услуги по ЭЭ 1ст",
        "Цена ЭЭ на ОРЭ",
        "Цена мощность на ОРЭ",
        "Электроэнергия день",
        "Электроэнергия ночь",
        "Электроэнергия одноставочный"
      ],
      "detail_calc_name": [
        "Альтернативный: Закупка - По тарифам ГП (1-6 ЦК)",
        "Альтернативный: Закупка - По тарифам населения",
        "Текущий расчет"
      ],
      "calc_scheme": [
        "Текущая"
      ]
    }
  },
  "operators": {
    "eq": "равно",
    "ne": "не равно",
    "in": "одно из",
    "not_in": "не входит в",
    "gt": "больше",
    "gte": "больше или равно",
    "lt": "меньше",
    "lte": "меньше или равно",
    "between": "в диапазоне",
    "contains": "содержит",
    "starts_with": "начинается с",
    "is_null": "не заполнено",
    "is_not_null": "заполнено"
  },
  "aggregations": {
    "sum": "Сумма",
    "avg": "Среднее",
    "wavg": "Средневзвешенное по объёму",
    "min": "Минимум",
    "max": "Максимум",
    "count": "Количество",
    "count_distinct": "Количество уникальных"
  },
  "data_coverage": {
    "periods_available": [
      "2024-08"
    ],
    "periods_missing": [
      "2024-09 — в 00102 присутствует только D_Year=2024, D_Month=8; лист «Сравнение» двух периодов на этих данных не проверить"
    ],
    "contracts": [
      {
        "id": 4,
        "name": "\"Россети Центр\" - \"Смоленскэнерго\"",
        "periods": [
          "2024-08"
        ]
      },
      {
        "id": 19,
        "name": "\"Россети Центр\" - \"Смоленскэнерго\" Import_test",
        "periods": [
          "2024-08"
        ]
      },
      {
        "id": 6,
        "name": "«РУСЭНЕРГОСБЫТ» (Смоленск)",
        "periods": [
          "2024-08"
        ]
      },
      {
        "id": 20,
        "name": "«РУСЭНЕРГОСБЫТ» (Смоленск) Import_test",
        "periods": [
          "2024-08"
        ]
      },
      {
        "id": 15,
        "name": "Тест - «РУСЭНЕРГОСБЫТ»",
        "periods": [
          "2024-08"
        ]
      }
    ],
    "regions_in_facts": [
      "Смоленская область (317 строк)",
      "г.Москва / Воронежская область (2 строки)"
    ],
    "test_data_note": "Договоры с суффиксом Import_test и «Тест - «РУСЭНЕРГОСБЫТ»» — тестовые; в боевых итогах их наличие нужно оговаривать.",
    "row_counts": {
      "accrual_00102": 386,
      "detail_00101": 1396,
      "contract_00211": 14,
      "contragent_01113": 12,
      "signer_01114": 5,
      "region_01115": 85,
      "div_01112": 15
    }
  },
  "glossary": [
    {
      "term": "ПУНЦ",
      "definition": "Предельный уровень нерегулируемых цен на электроэнергию для конечного потребителя. Итог расчёта; в 00101 присутствует готовыми компонентами «ПУНЦ ЭЭ», «ПУНЦ мощность АТС», «ПУНЦ мощность СО»."
    },
    {
      "term": "РРЭ",
      "definition": "Розничный рынок электроэнергии."
    },
    {
      "term": "АПП",
      "definition": "Акт приёма-передачи — первичный документ начисления. Базовый тип документа для витрины."
    },
    {
      "term": "СЧФ",
      "definition": "Счёт-фактура. Описывает то же начисление, что и АПП; сложение АПП+СЧФ даёт двойной счёт."
    },
    {
      "term": "КАПП / КСЧФ",
      "definition": "Корректировочные акт и счёт-фактура. В базовую выборку не входят (см. открытый вопрос №2)."
    },
    {
      "term": "ЦК",
      "definition": "Ценовая категория потребителя (1ЦК…6ЦК); в данных встречаются 1ЦК, 3ЦК, 4ЦК и «-»."
    },
    {
      "term": "СВНЦ",
      "definition": "Средневзвешенная нерегулируемая цена электроэнергии на оптовом рынке."
    },
    {
      "term": "ГП",
      "definition": "Гарантирующий поставщик."
    },
    {
      "term": "АТС",
      "definition": "Администратор торговой системы оптового рынка; «Мощность АТС» — вид начисления мощности."
    },
    {
      "term": "СО",
      "definition": "Системный оператор ЕЭС; «Мощность СО» — вид начисления мощности."
    },
    {
      "term": "УИРП",
      "definition": "Услуги по управлению изменением режима потребления."
    },
    {
      "term": "Котловой тариф",
      "definition": "Единый тариф на услуги по передаче электроэнергии; в 00101 — компонент «Услуги по ЭЭ 1ст»."
    },
    {
      "term": "Уровень напряжения",
      "definition": "ВН / СН1 / СН2 / НН / ФСК220 — точка присоединения потребителя, влияет на тариф передачи."
    },
    {
      "term": "Двухставочный тариф",
      "definition": "Тариф передачи из двух ставок: «Ставка за содержание сетей» + «Услуги ЭЭ 2ст: Ставка за потери»."
    }
  ],
  "clarification_policy": {
    "principle": "Если запрос неоднозначен — задать уточняющий вопрос, а не додумать. За один ход задаётся один вопрос по самому важному незаполненному слоту.",
    "slots": [
      {
        "slot": "period",
        "title": "Период",
        "why": "Без периода выборка смешивает месяцы; в данных сейчас только 2024-08.",
        "detect": "в запросе нет года и месяца (или интервала) и нет фильтра по period/year/month",
        "question": "За какой период считаем? В базе сейчас есть только август 2024 (2024-08) — берём его?",
        "fields": [
          "period",
          "year",
          "month"
        ],
        "default_allowed": false
      },
      {
        "slot": "contract",
        "title": "Договор / контрагент",
        "why": "В данных 6 договоров, включая тестовые (Import_test, «Тест - …»); итог «по всем» смешивает боевые и тестовые.",
        "detect": "не назван договор, контрагент или явно «по всем договорам»",
        "question": "По какому договору считаем? Доступны: {contracts}. Или свести по всем сразу (включая тестовые Import_test)?",
        "fields": [
          "contract",
          "contract_id",
          "contract_number",
          "contragent"
        ],
        "default_allowed": false
      },
      {
        "slot": "breakdown",
        "title": "Разрез (группировка)",
        "why": "Одна и та же сумма в разрезе номенклатуры, напряжения или ценовой категории отвечает на разные вопросы.",
        "detect": "запрошены цифры, но не указано «в разрезе чего»",
        "question": "В каком разрезе показать: по видам начисления, по уровням напряжения, по ценовым категориям, по договорам или по подразделениям?",
        "fields": [
          "nomenclature",
          "voltage",
          "category",
          "power_range",
          "contract",
          "division",
          "region"
        ],
        "default_allowed": false
      },
      {
        "slot": "measure_units",
        "title": "Показатель и единицы",
        "why": "Объём в 00102 хранится в двух единицах: кВт·ч (энергия) и кВт (мощность); суммировать их вместе нельзя. Стоимость бывает с НДС и без.",
        "detect": "сказано «объём»/«сумма» без указания единиц или отношения к НДС",
        "question": "Что считаем: объём (кВт·ч по энергии или кВт по мощности) или стоимость — без НДС или с НДС?",
        "fields": [
          "volume",
          "unit",
          "cost_without_vat",
          "cost_vat",
          "vat_amount",
          "price"
        ],
        "default_allowed": false
      },
      {
        "slot": "calc_scenario",
        "title": "Сценарий расчёта",
        "why": "Кроме «Текущий расчет» в сырых данных два альтернативных сценария, но витрина отдаёт только текущий.",
        "detect": "пользователь просит цены по альтернативному сценарию закупки",
        "question": null,
        "answer_instead": "Не спрашивать, а сообщить: витрина зафиксирована на «Текущий расчет» (правило mart_rules.calc_current), альтернативные сценарии через конструктор недоступны.",
        "fields": [
          "calc_name"
        ],
        "default_allowed": true,
        "default_value": "Текущий расчет",
        "default_note": "Жёсткое правило витрины, изменить его через конфигурацию отчёта нельзя."
      },
      {
        "slot": "doc_scope",
        "title": "Учитывать ли корректировки",
        "why": "Открытый вопрос №2: неизвестно, замещает КАПП/КСЧФ исходный АПП или дополняет его; при включении сумма может задвоиться (открытый вопрос №3).",
        "detect": "пользователь просит «актуальные» данные с учётом корректировок",
        "question": null,
        "answer_instead": "Не спрашивать, а предупредить: выборка содержит только первичные АПП (правило mart_rules.doc_type_app); корректировки КАПП/КСЧФ витрина не отдаёт, а методика их учёта не подтверждена (открытые вопросы №2 и №3).",
        "fields": [
          "doc_type"
        ],
        "default_allowed": true,
        "default_value": "АПП",
        "default_note": "Жёсткое правило витрины."
      },
      {
        "slot": "source",
        "title": "Уровень детализации",
        "why": "Один и тот же вопрос решается по 00102 (строки начислений) или по 00101 (компоненты цены) — гранулярность и меры разные.",
        "detect": "запрос про составляющие цены/тарифа, но источник не выбран",
        "question": "Считать по строкам начислений (00102) или разложить по компонентам цены (00101 — сбытовая надбавка, передача, инфраструктура, УИРП)?",
        "fields": [
          "source"
        ],
        "default_allowed": true,
        "default_value": "accruals",
        "default_note": "Если в вопросе фигурируют компоненты цены — переключиться на details."
      }
    ],
    "answer_rules": [
      "Не додумывать неуказанное: если не хватает периода, договора, разреза или единиц — задать ОДИН уточняющий вопрос по самому важному пропущенному слоту, а не перечислять все сразу.",
      "Не выдумывать значения справочников: подставлять только те, что есть в enum_values.",
      "Каждую цифру подкреплять конфигурацией отчёта (source + dimensions + measures + filters), чтобы пользователь мог её воспроизвести кнопкой в конструкторе.",
      "Строки «Средневзвешенный тариф …» не суммировать: это расчётные итоги, а не первичные начисления.",
      "Объёмы в кВт·ч и кВт не складывать в один показатель — разделять по полю unit.",
      "Если вопрос упирается в один из открытых вопросов (open_questions) — ответить, но явно назвать допущение и его номер.",
      "Тестовые договоры (Import_test, «Тест - …») по умолчанию не исключаются автоматически; если они попали в выборку — предупредить об этом в ответе."
    ]
  },
  "open_questions": [
    {
      "id": 1,
      "title": "«Прочерк» в эталоне приравнен к нулю",
      "text": "Открытый вопрос №1 (ПРИЁМКА.md): у мощности АТС компоненты передачи, надбавки, иных услуг и УИРП в эталоне — прочерк, в 00101 их нет. Приравнены к нулю; это допущение разработчика, энергетик его не подтверждал."
    },
    {
      "id": 2,
      "title": "КАПП/КСЧФ замещают или дополняют АПП",
      "text": "Открытый вопрос №2 (ПРИЁМКА.md): неизвестно, замещает корректировка исходный документ или дополняет его. КАПП по договору РУСЭНЕРГОСБЫТ переписывает строку целиком (5928 → 7000 кВт·ч). Если КАПП — актуальная версия, выборка по АПП отдаёт устаревший факт."
    },
    {
      "id": 3,
      "title": "Два одинаковых КАПП",
      "text": "Открытый вопрос №3 (ПРИЁМКА.md): документы №24 и №25 с идентичным содержимым — версии одного или два начисления. При включении корректировок сумма может задвоиться."
    },
    {
      "id": 4,
      "title": "Сопоставление одноимённых позиций между периодами",
      "text": "Открытый вопрос №4 (ПРИЁМКА.md): «3ЦК, ВН, от 670 до 10 МВт» встречается дважды с разными ценами (4.317282 и 2.622554). Признак, по которому такие позиции сопоставлять между периодами, не определён — здесь они сведены по значениям разреза, одноимённые строки схлопываются в одну."
    }
  ],
  "report_api": {
    "endpoint": "POST /api/report",
    "config_shape": {
      "name": "строка — название отчёта",
      "source": "строка — ключ источника из sources[].key",
      "dimensions": "список ключей полей role=dimension",
      "measures": "список объектов {field: ключ поля, agg: ключ из aggregations}",
      "filters": "список объектов {field, op: ключ из operators, value}",
      "sort": "список объектов {key: '<field>_<agg>' или ключ измерения, desc: bool}",
      "limit": "целое число"
    },
    "validation_note": "Элементы measures/filters/sort должны быть объектами указанной формы; иначе сервис отвечает 400 с mart.ConfigError (индекс элемента + список допустимых ключей).",
    "templates": [
      {
        "name": "Начисления по договорам за период",
        "config": {
          "name": "Начисления по договорам за период",
          "source": "accruals",
          "dimensions": [
            "period",
            "contract",
            "contragent"
          ],
          "measures": [
            {
              "field": "volume",
              "agg": "sum"
            },
            {
              "field": "cost_without_vat",
              "agg": "sum"
            },
            {
              "field": "cost_vat",
              "agg": "sum"
            }
          ],
          "sort": [
            {
              "key": "cost_without_vat_sum",
              "desc": true
            }
          ],
          "limit": 500
        }
      },
      {
        "name": "Объём и стоимость по уровням напряжения",
        "config": {
          "name": "Объём и стоимость по уровням напряжения",
          "source": "accruals",
          "dimensions": [
            "voltage",
            "category",
            "nomenclature"
          ],
          "measures": [
            {
              "field": "volume",
              "agg": "sum"
            },
            {
              "field": "cost_without_vat",
              "agg": "sum"
            }
          ],
          "sort": [
            {
              "key": "volume_sum",
              "desc": true
            }
          ],
          "limit": 500
        }
      },
      {
        "name": "Компоненты цены по строкам детализации",
        "config": {
          "name": "Компоненты цены по строкам детализации",
          "source": "details",
          "dimensions": [
            "contract",
            "row_name",
            "component"
          ],
          "measures": [
            {
              "field": "detail_volume",
              "agg": "sum"
            },
            {
              "field": "detail_cost",
              "agg": "sum"
            }
          ],
          "sort": [
            {
              "key": "detail_cost_sum",
              "desc": true
            }
          ],
          "limit": 500
        }
      },
      {
        "name": "Сводка по регионам",
        "config": {
          "name": "Сводка по регионам",
          "source": "accruals",
          "dimensions": [
            "region",
            "price_zone"
          ],
          "measures": [
            {
              "field": "volume",
              "agg": "sum"
            },
            {
              "field": "cost_without_vat",
              "agg": "sum"
            }
          ],
          "sort": [
            {
              "key": "cost_without_vat_sum",
              "desc": true
            }
          ],
          "limit": 200
        }
      }
    ]
  },
  "dictionary_markdown": "# Словарь данных: конструктор отчётов РРЭ (собран из выгрузок, 11.08.2026)\n\nИсточник — 7 предоставленных выгрузок + C#-генератор отчёта ПУНЦ (`Код к отчету.txt`).\nВсё, что помечено «(из данных)» — фактические уникальные значения в выгрузке, а не догадка.\nВсё, что помечено «(из кода)» — семантика, восстановленная из логики генератора.\n\n---\n\n## 1. Таблицы и связи\n\n| Код | Смысл | Строк | Ключ |\n|---|---|---|---|\n| 01112 | Структурные подразделения (дирекции/филиалы РЖД) | 15 | `D_Id`, код `D_Code` |\n| 01113 | Организации-контрагенты | 12 | `C_Id`, код `C_Code` |\n| 01114 | Подписанты организаций-контрагентов | 5 | `S_Id` |\n| 01115 | Субъекты РФ / энергорегионы | 85 | `R_Id`, код `R_Code` |\n| 00211 | Договоры РРЭ | 14 | `C_Id`, код `C_Code` |\n| 00102 | Документы и строки начислений за период (ФАКТ) | 386 | документ `D_Id`, строка `R_Id` |\n| 00101 | Детализация строк документов начислений (компоненты цены) | 1396 | ссылка на строку `RowId`, на документ `AccrualDocumentId` |\n\nСвязи:\n\n```\n00101.RowId             ──► 00102.R_Id            (компоненты цены ↔ СТРОКА начисления)\n00101.AccrualDocumentId ──► 00102.D_Id            (компоненты цены ↔ ДОКУМЕНТ начисления)\n00102.D_ContractId      ──► 00211.C_Id            (документ ↔ договор)\n00102.D_CompanyCode     ──► 01113.C_Code          (документ ↔ контрагент)\n00211.C_ContragentId    ──► 01113.C_Id            (договор ↔ контрагент)\n00211.C_EnergyRegionId  ──► 01115.R_Id            (договор ↔ субъект РФ)\n00211.C_DivisionId      ──► 01112.D_Id            (договор ↔ подразделение)\n00102.D_DivisionCode    ──► 01112.D_Code          (документ ↔ подразделение)\n01114.C_CompanyId       ──► 01113.C_Id            (подписант ↔ контрагент)\n00102.D_ParentDocId     ──► 00102.D_Id            (корректировка ↔ исходный документ)\n```\n\nВАЖНО (проверено на данных 11.08.2026, ETL `etl.py`): вопреки названию поля,\nна **строку** начисления (`00102.R_Id`) ссылается `00101.RowId`, а `00101.AccrualDocumentId`\nссылается на **документ** (`00102.D_Id`). Обе связи дают 0 битых ссылок.\nЕсли перепутать — join по `AccrualDocumentId = R_Id` не находит НИ ОДНОЙ строки (проверено),\nа join компонентов на документ вместо строки завышает суммы кратно (1396 → 80 174 пары).\n\nВАЖНО: в каждой выгрузке .xlsx последняя строка служебная — `Кол-во: N` в первой ячейке,\nостальные пустые. Это подпись выгрузчика, не данные. ETL её отбрасывает; иначе ключевые\nколонки получают тип TEXT и ломается типизация.\n\n---\n\n## 2. Таблица 00102 — ключевые поля\n\nПлоская денормализованная таблица: префикс `D_` — реквизиты документа, `R_` — строки начисления\n(один документ = много строк, реквизиты документа дублируются).\n\nДокумент: `D_Id`, `D_Number`, `D_Year`, `D_Month` (период), `D_Type`, `D_CalcType`, `D_State`,\n`D_ContractId`/`D_ContractCode`/`D_ContractName`, `D_CompanyCode`/`D_CompanyName`,\n`D_DivisionCode`/`D_DivisionName`, `D_Total`, `D_TotalVolume`, `D_TotalCostWithoutVAT`, `D_TotalVATAmount`.\n\nСтрока: `R_Id`, `R_Name`, `R_Nomenclature`, `R_Volume`, `R_Price`, `R_CostWithoutVAT`,\n`R_CostVAT`, `R_VAT_Rate`, `R_VAT_Amount`, `R_CalcName`, `R_Category`, `R_UnitType`,\n`R_VoltageLevelCode`/`R_VoltageLevelName`, `R_PowerRangeCode`/`R_PowerRangeName`,\n`R_RegionId`/`R_RegionName`, `R_RowType`, `R_SortInx`.\n\n### Справочники значений (из данных)\n\n| Поле | Значения | Смысл |\n|---|---|---|\n| `D_Type` | АПП, СЧФ, КАПП, КСЧФ, Счет, УПД | тип документа: акт приёма-передачи, счёт-фактура, корректировочные, счёт, УПД |\n| `D_CalcType` | Факт, Корректировка, Аванс 1 | вид расчёта |\n| `D_State` | Prepared, Approved | статус документа |\n| `R_Nomenclature` | Электроэнергия; Электроэнергия (потери); Мощность АТС; Мощность СО; Электроэнергия (услуги); Электроэнергия день / ночь; Средневзвешенный тариф по договору / по ВН / по СН2 / по НН / на собственные нужды / по потерям транзита | вид начисления. Строки «Средневзвешенный тариф …» — **итоговые/расчётные**, не первичные: в суммирование объёма их включать нельзя |\n| `R_Category` | 1ЦК, 3ЦК, 4ЦК, «-», Население: Городское с газ.плитами / с эл.плитами, Население: Сельское | ценовая категория |\n| `R_VoltageLevelName` | ВН, СН1, СН2, НН, ФСК220, пусто | уровень напряжения |\n| `R_PowerRangeName` | менее 670 кВт, от 670 до 10 МВт, более 10 МВт, пусто | диапазон максимальной мощности |\n| `R_UnitType` | кВтч, кВт | единица измерения объёма |\n| `R_CalcName` | Текущий расчет; Альтернативный: Закупка - По тарифам ГП (1-6 ЦК); Альтернативный: Закупка - По тарифам населения | сценарий расчёта |\n| `R_RowType` | Исходная | тип строки |\n\n`R_Name` — человекочитаемое имя строки, собранное из тех же атрибутов:\n`«Электроэнергия (1ЦК, СН2, менее 670 кВт)»` = `R_Nomenclature (R_Category, R_VoltageLevelName, R_PowerRangeName)`.\nДля группировок использовать **атрибутные поля**, а не парсинг `R_Name`.\n\n---\n\n## 3. Таблица 00101 — компоненты цены\n\nПоля: `RowId` (→ `00102.R_Id`, строка), `AccrualDocumentId` (→ `00102.D_Id`, документ), `Name` (компонент), `Volume`, `Price`,\n`PriceWithoutDiscont` (цена до скидки), `CostWithoutVAT`, `RowCalcName` (сценарий расчёта,\nдублирует `R_CalcName`), `CalcSchemeName`, `StoreCode`/`StoreName`, `ConObjId`.\n\n### Компоненты `Name` (из данных) и их роль в отчёте ПУНЦ (из кода)\n\n| `Name` | Строк | Роль в отчёте |\n|---|---|---|\n| `Цена ЭЭ на ОРЭ` | 99 | СВНЦ / цена ЭЭ на оптовом рынке (для не-1ЦК) |\n| `СВНЦ ГП для 1ЦК` | 102 | то же для первой ценовой категории |\n| `Услуги по ЭЭ 1ст` | 127 | котловой тариф на передачу, одноставочный |\n| `Услуги ЭЭ 2ст: Ставка за потери` | 46 | ставка за потери (двухставочный, для строк «Электроэнергия (потери)») |\n| `Ставка за содержание сетей` | 46 | вторая ставка двухставочного тарифа передачи |\n| `Сбытовая надбавка ГП` | 201 | сбытовая надбавка; `PriceWithoutDiscont` − `Price` = **скидка** |\n| `Тариф на инфраструктуру` | 194 | иные услуги (АТС/СО/ЦФР) |\n| `Услуги УИРП` | 104 | услуги по управлению изменением режима потребления |\n| `Цена мощность на ОРЭ` | 99 | цена мощности на ОРЭ (строки «Мощность АТС» / «Мощность СО») |\n| `ПУНЦ ЭЭ` | 215 | итоговый предельный уровень нерегулируемой цены по ЭЭ (готовый результат) |\n| `ПУНЦ мощность АТС` | 99 | итог по мощности АТС |\n| `ПУНЦ мощность СО` | 46 | итог по мощности СО |\n| `Электроэнергия одноставочный` | 10 | тариф населения (альтернативный сценарий) |\n| `Электроэнергия день` / `ночь` | 2 / 2 | зонный тариф населения |\n| `Индивидуальный тариф ЭЭ` | 4 | индивидуальный тариф |\n\n`RowCalcName` (из данных): «Текущий расчет» (579), «Альтернативный: Закупка - По тарифам ГП (1-6 ЦК)» (605),\n«Альтернативный: Закупка - По тарифам населения» (212).\n\n---\n\n## 4. Правило отбора для отчёта ПУНЦ (из кода, строки 693–694)\n\n```\n00102: D_Type == \"АПП\"  AND  R_CalcName == \"Текущий расчет\"\n       AND договор == выбранный  AND (D_Year, D_Month) == период\n00101: RowCalcName == \"Текущий расчет\", соединение по 00101.RowId = 00102.R_Id\nразбивка по R_Nomenclature: Электроэнергия | Электроэнергия (потери) | Мощность АТС | Мощность СО\nисключить строки R_Nomenclature LIKE 'Средневзвешенный%'\n```\n\nЛюбой другой набор типов документов даст двойной счёт (АПП + СЧФ описывают одно и то же\nначисление, КАПП/КСЧФ — корректировки).\n\n---\n\n## 5. Что в данных есть и чего нет\n\nЕсть: полный период **август 2024**, договоры по Смоленской (317 строк) и Воронежской (2) областям,\nконтрагент-ГП «РУСЭНЕРГОСБЫТ», сетевая «Россети Центр» — «Смоленскэнерго».\n\nНет: **периода сентябрь 2024**. В 00102 присутствует только `D_Year=2024, D_Month=8`.\nЛист «Сравнение» двух периодов реализуем, но проверить его против «Примера выгрузки»\n(где есть август и сентябрь) на этих данных невозможно.\n"
}
