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


Финальный вывод пока преждевременный.

В требованиях задания прямо указано:

- один объект 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.