Загрузка данных


Стоп. Сейчас структура сделана неправильно.

Проблема:
В projects/SNL/meta создано дерево, но многие README.md внутри дерева содержат только короткую ссылку на output/*.md, например:

Источник: output/INTERACTION_POINTS.md

Это не соответствует требованиям. Требование было не сделать дерево ссылок, а разложить сами выгруженные Markdown-данные по целевой структуре projects/SNL/meta.

Работай только в проекте:

/Users/23865613/IdeaProjects/untitled/zadanie2/snl-markdownify-meta

Существующий исходный проект не трогай.

Не выполняй git commit.
Не выполняй git push.
Не запускай браузер.
Не обращайся к META.
Используй только уже сохранённые данные:
- output/
- temp_html/
- projects/SNL/meta/

Задача:
Перенести реальные содержательные данные из output/*.md в соответствующие README.md внутри projects/SNL/meta, чтобы output/ остался только технической зоной отчётов, а вся выгруженная архитектура была в projects/SNL/meta.

ВАЖНО:
Не оставлять в целевых README.md только строки вида:
- Источник: output/...
- См. output/...
- Данные находятся в output/...

Такие README считаются незаполненными.

======================================================================
1. ПРОВЕРИТЬ ТЕКУЩУЮ ПРОБЛЕМУ
======================================================================

Найди все README.md внутри projects/SNL/meta, которые содержат только ссылку на output или почти пустой текст.

Команды для проверки:

grep -RniE 'Источник: output|См. output|output/' projects/SNL/meta || true

find projects/SNL/meta -name README.md -type f -exec sh -c '
  for f do
    lines=$(grep -v "^[[:space:]]*$" "$f" | wc -l | tr -d " ")
    if [ "$lines" -le 5 ]; then
      echo "$f : $lines lines"
    fi
  done
' sh {} +

Покажи список проблемных README.

======================================================================
2. ПРАВИЛЬНАЯ ЛОГИКА
======================================================================

Каждый объект должен иметь собственный README.md с реальным содержимым.

Не ссылка на output, а сами данные.

Примеры:

Для АС:
projects/SNL/meta/as/SberGeo/README.md
должен содержать данные из output/AC Геоинформационная система SberGeo - META.md

Для ФП:
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/README.md
должен содержать данные из output/ФП SberGeo.СНЛ - META.md, если такой файл есть, либо данные ФП из других сохранённых источников.

Для модуля:
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/module/{MODULE_NAME}/README.md
должен содержать данные соответствующего файла output/М ... - META.md.

Для подмодуля:
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/module/{MODULE_NAME}/submodule/{SUBMODULE_NAME}/README.md
должен содержать данные соответствующего файла output/ПМ ... - META.md.

Для ТК:
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/tk/{TK_NAME}/README.md
должен содержать данные соответствующего файла output/ТК ... - META.md.

Для integration-point:
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration-point/{NAME}/README.md
должен содержать реальную строку/таблицу по конкретной точке из output/INTERACTION_POINTS.md, а не ссылку на весь файл.

Для integration:
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration/{NAME}/README.md
должен содержать реальные данные конкретного интеграционного взаимодействия из output/INTEGRATION_INTERACTIONS.md или output/INTERACTIONS.md.

Для integration-flow:
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration-flow/{NAME}/README.md
должен содержать реальные данные конкретного инфопотока, если они есть. Если отдельных объектов нет, оставить только индексный README с честным описанием, но не создавать ложные дочерние объекты.

Для stand:
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/stand/{NAME}/README.md
должен содержать данные конкретного стенда из output/STANDS.md.

Для technical-resource:
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/technical-resource/{NAME}/README.md
должен содержать данные конкретного технического ресурса из output/TECH_RESOURCES.md.

======================================================================
3. НЕ ТРОГАТЬ ПРАВИЛЬНУЮ ИЕРАРХИЮ
======================================================================

Сама структура должна остаться:

АС → ФП → Модуль → Подмодуль → ТК

Поддерживаемые варианты:

АС → ФП → ТК
АС → ФП → Модуль → ТК
АС → ФП → Модуль → Подмодуль → ТК

Если для всех 24 ТК подтверждён только родитель ФП, они должны остаться здесь:

projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/tk/{TK_NAME}/README.md

Не переносить ТК в module или submodule без доказанной связи.

======================================================================
4. СОХРАНИТЬ OUTPUT КАК ТЕХНИЧЕСКУЮ ЗОНУ
======================================================================

output/ можно оставить, но только как источник и технические отчёты.

Не надо удалять output/*.md сейчас.

Но итоговая архитектура должна быть полноценной в:

projects/SNL/meta

То есть пользователь должен открыть любой README внутри projects/SNL/meta и увидеть реальные данные объекта, а не ссылку на output.

======================================================================
5. ИСПРАВИТЬ ГЕНЕРАТОР, А НЕ ТОЛЬКО ФАЙЛЫ
======================================================================

Исправь генератор так, чтобы при повторном запуске он снова создавал полноценные README.md с данными, а не возвращал ссылки на output.

Проверь и исправь:

scripts/structured_meta_writer.py
scripts/generate_attributes_reports.py
scripts/generate_reports.py
scripts/scrape_meta.py
scripts/html_to_markdown.py
scripts/integration_interactions_parser.py

Не переписывай проект с нуля. Делай минимальные изменения.

======================================================================
6. КАК ФОРМИРОВАТЬ README.md
======================================================================

Каждый README объекта должен иметь минимум:

# {Название объекта}

**Тип:** ...
**META URL:** ...
**META ID:** ...
**Родитель:** ...

Далее реальные данные объекта из output или temp_html.

Если исходный output-файл содержит таблицу — сохранить таблицу.
Если содержит разделы — сохранить разделы.
Если есть API — сохранить API.
Если есть поля поставщик/потребитель/владелец/статус — сохранить их.

Запрещено заменять реальные данные строкой “Источник: output/...”.

Можно внизу добавить строку:

**Источник исходных данных:** output/...

Но только после реального содержимого.

======================================================================
7. ИНТЕГРАЦИИ РАЗОБРАТЬ ПО ОБЪЕКТАМ
======================================================================

Сейчас недопустимо, если один README просто ссылается на общий output/INTERACTION_POINTS.md.

Нужно разобрать строки таблиц:

- каждая interaction-point → отдельный каталог и README;
- каждая integration → отдельный каталог и README;
- каждый stand → отдельный каталог и README;
- каждый technical-resource → отдельный каталог и README.

Если данных нет, не создавать ложные объекты.

======================================================================
8. АТРИБУТЫ
======================================================================

attributes/README.md должен содержать реальные таблицы атрибутов.

Для АС:
projects/SNL/meta/as/SberGeo/attributes/README.md

Для ФП:
projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/attributes/README.md

Если в сохранённом HTML нет строк конкретного раздела, честно написать это. Но если таблицы есть в output, перенести их в attributes/README.md.

======================================================================
9. ПРОВЕРКИ
======================================================================

После исправления выполнить:

python -m py_compile run_exporter.py scripts/*.py

python scripts/generate_attributes_reports.py
python scripts/generate_attributes_reports.py

Проверить, что количество файлов после двух запусков одинаковое.

Проверить, что в projects/SNL/meta больше нет README, которые являются только ссылкой на output:

grep -RniE 'Источник: output|См. output' projects/SNL/meta || true

Если такие строки есть, убедиться, что рядом выше есть реальное содержимое объекта. Если README состоит только из ссылки — исправить.

Показать:

find projects/SNL/meta -name README.md -type f | sort

И статистику:

- всего README;
- АС;
- ФП;
- модули;
- подмодули;
- ТК;
- attributes;
- integration-flow;
- integration;
- integration-point;
- stand;
- technical-resource;
- сколько README всё ещё содержат только ссылку на output;
- сколько README содержат реальные данные.

======================================================================
10. ОБНОВИТЬ ОТЧЁТ
======================================================================

Обновить BUILD_REPORT.md.

В отчёте явно указать:

- output/ содержит исходные и технические Markdown-файлы;
- projects/SNL/meta содержит итоговую структурированную архитектуру;
- README внутри projects/SNL/meta заполнены реальными данными;
- ссылки на output допустимы только как указание источника, но не вместо содержимого;
- количество объектов каждого типа;
- результат py_compile;
- результат двух запусков;
- идемпотентность;
- оставшиеся ограничения.

После завершения остановиться.
Не выполнять commit и push.