Загрузка данных
Ты работаешь в папке skill-а:
/Users/23865613/IdeaProjects/untitled/zadanie2/snl-markdownify-meta
Сейчас skill почти собран, но по проверке есть ошибки:
1. run_exporter.py / config_loader.py не находят meta_exporter.yaml.
2. structured_meta_writer.py создал 47 README вместо ожидаемых 51.
3. Есть ошибка NameError: STAND_NAMES is not defined.
4. structured_meta_writer.py не использует OUTPUT_TO_README, поэтому часть output/*.md не переносится в projects/SNL/meta.
5. Нужно сделать skill автономным: чтобы он работал из своей папки, не зависел от старого source_project и не требовал ручного указания путей.
Задача:
Исправить skill в папке snl-markdownify-meta так, чтобы он корректно запускался как самостоятельный GigaCode skill.
Жёсткие ограничения:
- Не трогать старый проект source_project.
- Не обращаться к META во время этой доработки.
- Не запускать браузер.
- Не читать cookies/tokens/secrets.
- Не использовать API META.
- Не использовать requests/httpx/aiohttp/urllib для META.
- Не удалять существующие skills docx и project_manager.
- Не коммитить и не пушить.
- Все проверки выполнять офлайн на уже существующих output/*.md и temp_html/*.html.
Что нужно сделать.
1. Исправить поиск корня skill-а.
Во всех скриптах, где нужны пути, определить ROOT_DIR как папку, где лежит текущий skill:
- если код внутри scripts/*.py, то ROOT_DIR = Path(__file__).resolve().parents[1]
- все пути строить только от ROOT_DIR:
- ROOT_DIR / "config" / "meta_exporter.yaml"
- ROOT_DIR / "config" / "meta_urls.txt"
- ROOT_DIR / "output"
- ROOT_DIR / "temp_html"
- ROOT_DIR / "projects" / "SNL" / "meta"
Нельзя искать config только относительно текущей shell-директории.
2. Проверить и создать config/meta_exporter.yaml.
В папке skill-а обязательно должен быть файл:
config/meta_exporter.yaml
Если его нет, создать из config/meta_exporter.yaml.example или meta_exporter.yaml.example.
В конфиге должны быть относительные пути:
meta_urls_file: config/meta_urls.txt
output_dir: output
temp_html_dir: temp_html
structured_output_dir: projects/SNL/meta
Если формат текущего конфига другой — сохранить его структуру, но значения путей сделать относительными и рабочими внутри skill-а.
3. Исправить config_loader.py.
config_loader.py должен:
- находить meta_exporter.yaml в ROOT_DIR/config/meta_exporter.yaml;
- если файла нет, выводить понятную ошибку;
- не искать файлы в старом source_project;
- не использовать абсолютные пути пользователя;
- корректно резолвить относительные пути относительно ROOT_DIR.
После исправления команда должна проходить:
python -c "from scripts.config_loader import get_config, validate_config; c=get_config(); validate_config(c); print('Config OK')"
4. Исправить structured_meta_writer.py.
Нужно, чтобы structured_meta_writer.py строил полноценную структуру projects/SNL/meta из output/*.md.
Целевая структура:
projects/SNL/meta/
README.md
as/
SberGeo/
README.md
attributes/
README.md
fp/
SberGeo.СНЛ/
README.md
attributes/
README.md
module/
M_СНЛ.AI/
README.md
M_СНЛ.Calculations/
README.md
M_СНЛ.Data_operator_Interface/
README.md
M_СНЛ.Integrations/
README.md
M_СНЛ.Requests/
README.md
M_СНЛ.Sowa_SIGMA/
README.md
M_СНЛ.User_Interface/
README.md
submodule/
ПМ_СНЛ.Интеграции.Аудит/
README.md
ПМ_СНЛ.Интеграции.Парус/
README.md
ПМ_СНЛ.Интеграции.СУДИР/
README.md
ПМ_СНЛ.Интеграции.СФС/
README.md
tk/
<24 технических компонента>/
README.md
integration-flow/
README.md или объектный README, если есть реальные данные
integration/
README.md или объектный README, если есть реальные данные
integration-point/
<5 точек взаимодействия>/
README.md
stand/
README.md
technical-resource/
README.md, если есть реальные данные
Важно:
- README внутри projects/SNL/meta не должен быть заглушкой только с заголовком и ссылкой на output.
- Каждый README должен содержать реальные данные из соответствующего output/*.md:
- название;
- тип объекта;
- META URL;
- META ID, если есть;
- родитель, если определён;
- таблицы атрибутов;
- карточку;
- ответственность;
- дополнительные атрибуты;
- технические атрибуты;
- дочерние объекты;
- исходные таблицы/строки, если они есть в output.
- Строка "Источник: output/..." допустима только как дополнительная строка внизу, а не вместо содержимого.
5. Исправить NameError: STAND_NAMES is not defined.
В structured_meta_writer.py найти использование STAND_NAMES.
Если STAND_NAMES нужен — определить его явно, например:
STAND_NAMES = {
"Major-GO",
"DEV",
"ПРОМ",
"Major-Check",
}
Но лучше не хардкодить без необходимости. Если stands берутся из output/STANDS.md, то извлекать их из файла.
Главное: structured_meta_writer.py не должен падать из-за STAND_NAMES.
6. Добавить или исправить mapping output -> README.
Нужен явный mapping, чтобы output-файлы переносились в правильные README:
- output/AC Геоинформационная система SberGeo - META.md
-> projects/SNL/meta/as/SberGeo/README.md
- output/ФП SberGeo.СНЛ - META.md
-> projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/README.md
- output/M СНЛ.* - META.md
-> projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/module/M_*/README.md
- output/ПМ СНЛ.* - META.md
-> projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/submodule/ПМ_*/README.md
- output/TK * - META.md
-> projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/tk/TK_*/README.md
- output/INTERACTION_POINTS.md или output/*Точки взаимодействия*.md
-> projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration-point/<точка>/README.md
- output/INTEGRATION_INTERACTIONS.md
-> projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration-flow/README.md
- output/INTERACTIONS.md
-> projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/integration/README.md
- output/STANDS.md
-> projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/stand/README.md
- output/TECH_RESOURCES.md
-> projects/SNL/meta/as/SberGeo/fp/SberGeo.СНЛ/technical-resource/README.md
7. Исправить generate_attributes_reports.py.
Если attributes/README.md сейчас пишет только "данные не обнаружены", а реальные данные есть в output/*.md, надо:
- брать атрибутные таблицы из output-файла соответствующего АС/ФП;
- переносить в attributes/README.md;
- не создавать пустую заглушку, если в output есть таблицы.
8. Добавить офлайн-проверку качества README.
Создать или обновить скрипт:
scripts/validate_skill_output.py
Он должен проверить:
- есть projects/SNL/meta/README.md;
- есть as/SberGeo/README.md;
- есть fp/SberGeo.СНЛ/README.md;
- есть 7 README модулей;
- есть 4 README подмодулей;
- есть 24 README TK;
- есть 5 README integration-point;
- есть README для stand;
- есть README для technical-resource;
- нет пустых README;
- нет README, которые содержат только заголовок и "Источник: output/...";
- в README объектов есть URL или META ID, если они были в output;
- в attributes/README.md есть Markdown-таблицы;
- нет старых плоских каталогов hierarchy/, modules/, submodules/, technical_components/, stands/, tech_resources/ на верхнем уровне projects/SNL/meta;
- нет абсолютных путей /Users/23865613 внутри README и отчётов;
- нет cookies/tokens/password.
9. Обновить BUILD_REPORT.md.
BUILD_REPORT.md должен честно показывать:
- сколько output/*.md найдено;
- сколько README создано в projects/SNL/meta;
- сколько объектов каждого типа:
- AC;
- FP;
- module;
- submodule;
- TK;
- integration-flow;
- integration;
- integration-point;
- stand;
- technical-resource;
- attributes.
- результат py_compile;
- результат validate_skill_output.py;
- результат идемпотентности;
- список ограничений, если какие-то данные реально отсутствуют в output/temp_html.
10. Финальные команды проверки.
Выполнить строго из папки skill-а:
cd /Users/23865613/IdeaProjects/untitled/zadanie2/snl-markdownify-meta
python -m py_compile run_exporter.py scripts/*.py
python scripts/structured_meta_writer.py
python scripts/generate_attributes_reports.py
python scripts/generate_reports.py
python scripts/validate_skill_output.py
Потом выполнить второй раз:
python scripts/structured_meta_writer.py
python scripts/generate_attributes_reports.py
python scripts/generate_reports.py
python scripts/validate_skill_output.py
Проверить, что:
- количество README не уменьшается;
- структура не ломается;
- дубли не создаются;
- содержимое README не становится заглушками;
- output остаётся технической зоной;
- основной результат лежит в projects/SNL/meta.
11. Финальный отчёт вывести в чат.
В финальном отчёте укажи:
- какие файлы изменены;
- где лежит skill;
- найден ли config/meta_exporter.yaml;
- найден ли config/meta_urls.txt;
- py_compile OK или нет;
- сколько README в projects/SNL/meta;
- сколько README с реальными данными;
- есть ли пустые README;
- есть ли README только со ссылкой на output;
- есть ли абсолютные пути;
- готов ли skill к использованию в GigaCode.
Критерий готовности:
Skill считается готовым только если README в projects/SNL/meta содержат реальные данные из output/*.md, а не просто ссылки на output.