Загрузка данных
Стоп. Сейчас структура сделана неправильно.
Проблема:
В 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.