Загрузка данных
Финальный вывод пока преждевременный.
В требованиях задания прямо указано:
- один объект META должен существовать только один раз;
- идентичность определяется по META ID и META URL;
- нельзя оставлять два каталога одного объекта только потому, что оба содержат реальные данные;
- названия нельзя вручную переводить или русифицировать.
Сейчас в отчёте признаны допустимыми четыре пары каталогов модулей
латиница/кириллица, хотя каждая пара имеет один и тот же META URL:
1. /module/3855884
2. /module/3855885
3. /module/3858139
4. /module/3860548
Это дубли одного объекта и должно быть исправлено.
Работай только в проекте:
/Users/23865613/IdeaProjects/untitled/zadanie2/source_project
Не запускай браузер.
Не обращайся к META.
Не выполняй commit или push.
Не выполняй reset, clean или restore.
Используй сохранённые temp_html/, output/ и существующие README.md.
======================================================================
1. ПРОВЕРИТЬ ЧЕТЫРЕ ПАРЫ
======================================================================
Для каждого META URL:
- найти все каталоги в projects/SNL/meta/as/;
- прочитать оба README.md;
- найти соответствующий сохранённый HTML;
- определить точное название объекта из сохранённого HTML;
- сравнить META ID, META URL и содержимое файлов;
- подтвердить, что это один объект.
Похожее название само по себе не использовать как доказательство.
Создать таблицу:
| META ID | META URL | Каталог 1 | Каталог 2 | Каноническое название из HTML | Решение |
|---:|---|---|---|---|---|
======================================================================
2. ОПРЕДЕЛИТЬ КАНОНИЧЕСКИЙ КАТАЛОГ
======================================================================
Для каждого объекта оставить ровно один каталог.
Имя оставшегося каталога должно соответствовать реальному названию,
полученному из сохранённого HTML META.
Запрещено выбирать название только по принципу:
- кириллица лучше;
- латиница лучше;
- одно название кажется более красивым;
- одно название было создано позже.
Если данные двух README различаются:
- объединить все уникальные полезные данные;
- сохранить META URL;
- сохранить META ID;
- сохранить родителя;
- не дублировать одинаковые секции;
- не терять таблицы и ссылки.
Перед удалением второго каталога создать резервную копию только этих
восьми проверяемых каталогов.
======================================================================
3. ИСПРАВИТЬ ГЕНЕРАТОР
======================================================================
Проверить scripts/structured_meta_writer.py.
Сейчас _canonical_key предотвращает создание новых объектов с одинаковым
META ID/URL во временной структуре, но не устраняет уже существующие
каталоги с разными именами.
Добавить минимальную безопасную обработку модулей:
- группировать модули по META ID, а при отсутствии ID — по нормализованному URL;
- для одного META ID/URL создавать ровно один каталог;
- имя каталога брать из реального названия объекта META;
- не создавать одновременно латинский и кириллический каталог;
- не удалять объекты с различными META ID или URL;
- не выполнять ручной перевод названий.
Повторная генерация не должна восстанавливать удалённые дубли.
======================================================================
4. ПРОВЕРИТЬ РЕЗУЛЬТАТ
======================================================================
Выполнить:
python -m py_compile run_exporter.py scripts/*.py
python scripts/regenerate_reports.py
python scripts/regenerate_reports.py
После двух запусков проверить:
- число файлов одинаковое;
- для каждого из четырёх META URL существует ровно один каталог;
- количество уникальных модулей — 7;
- физическое количество каталогов модулей — 7, а не 11;
- дубли по META ID — 0;
- дубли по META URL — 0;
- README не пустые;
- таблицы и полезные данные не потеряны;
- старые дубли не восстановились.
Показать команды проверки и их фактический вывод.
======================================================================
5. ОБНОВИТЬ ОТЧЁТЫ
======================================================================
Обновить:
output/DUPLICATE_OBJECTS_REPORT.md
output/TASK_COVERAGE.md
output/REQUIREMENTS_REPORT.md
output/UNMIGRATED_META_DATA.md
В отчётах не должно оставаться утверждения, что латинский и кириллический
каталоги одного META URL являются корректным поведением.
До устранения дублей статус должен быть:
Не готово.
После подтверждения нулевого количества дублей статус может быть:
Готово с ограничениями исходных данных.
Единственным допустимым ограничением остаются недостающие секции атрибутов,
которых нет в сохранённых HTML и для получения которых требуется отдельный
браузерный прогон.
======================================================================
6. ФИНАЛЬНЫЙ ОТЧЁТ
======================================================================
В конце вывести:
# Финальная дедупликация модулей
## Проверенные пары
## Выбранные канонические названия
## Объединённые данные
## Удалённые каталоги-дубли
## Изменения генератора
## Результат py_compile
## Первая регенерация
## Повторная регенерация
## Проверка идемпотентности
## Дубли по META ID
## Дубли по META URL
## Итоговый статус
Не считать задачу завершённой, пока физическое количество каталогов модулей
не станет равно количеству уникальных META ID/URL — 7.