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


Продолжи работу только в проекте:

/Users/23865613/IdeaProjects/untitled/zadanie2/source_project

По результатам финальной независимой проверки обнаружены четыре пары
каталогов модулей с одинаковыми META URL.

Это нарушение обязательного правила:

один объект META должен существовать только один раз.

Нужно устранить только подтверждённые дубли модулей и исправить итоговые
отчёты.

Не запускай браузер.
Не обращайся к META.
Не выполняй git add, commit, push, reset, clean, restore или stash.
Не изменяй размещение ТК.
Не выдумывай родительские связи.
Не русифицируй и не переводи названия вручную.

Работай только с:

- projects/SNL/meta/;
- temp_html/;
- output/;
- scripts/structured_meta_writer.py;
- scripts/regenerate_reports.py.

======================================================================
1. ПРОВЕРИТЬ ЧЕТЫРЕ ПАРЫ ДУБЛЕЙ
======================================================================

Проверить следующие пары:

1.
СНЛ.User_Interface
СНЛ.Пользовательский_интерфейс
META URL: /module/3855884

2.
СНЛ.Data_Operator_Interface
СНЛ.Интерфейс_оператора_данных
META URL: /module/3855885

3.
СНЛ.Integrations
СНЛ.Интеграции
META URL: /module/3858139

4.
СНЛ.Calculations
СНЛ.Расчеты
META URL: /module/3860548

Для каждой пары прочитать оба README.md и определить:

- META ID;
- META URL;
- название объекта в исходном сохранённом HTML;
- title страницы;
- breadcrumb;
- наличие уникальных данных в каждом README;
- наличие дочерних подмодулей;
- ссылки из других README.

Не выбирать каталог только потому, что его название русское или английское.

Каноническое название брать только из исходных данных META:

- сохранённого HTML;
- META title;
- breadcrumb;
- исходного Markdown, сформированного из страницы.

======================================================================
2. СОХРАНИТЬ УНИКАЛЬНЫЕ ДАННЫЕ
======================================================================

Перед удалением создать резервную копию:

projects/SNL/meta.before-module-deduplication

Для каждой пары сравнить README и дочерние каталоги.

Если удаляемый каталог содержит уникальные данные:

- перенести их в канонический README;
- не дублировать одинаковые таблицы;
- сохранить META URL и META ID;
- сохранить подтверждённые подмодули.

Не удалять данные до подтверждения их переноса.

======================================================================
3. УДАЛИТЬ ТОЛЬКО ПОДТВЕРЖДЁННЫЕ ДУБЛИ
======================================================================

После проверки оставить ровно один каталог на каждый META URL:

- /module/3855884;
- /module/3855885;
- /module/3858139;
- /module/3860548.

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

- 7 уникальных модулей;
- 7 каталогов модулей;
- 4 уникальных подмодуля;
- 24 ТК.

Не удалять другие модули или подмодули.

======================================================================
4. ИСПРАВИТЬ ГЕНЕРАТОР
======================================================================

Проверить scripts/structured_meta_writer.py.

Генератор не должен повторно создавать два каталога для одного META URL
или META ID.

Правило идентичности:

1. META ID;
2. META URL;
3. только при отсутствии обоих — нормализованное точное имя.

Имя каталога должно формироваться из реального названия объекта в META.

Запрещено:

- создавать дополнительный русифицированный вариант;
- создавать дополнительный англоязычный вариант;
- использовать ручную таблицу перевода;
- создавать два объекта из одного URL.

Внести минимальное исправление, не переписывая генератор полностью.

======================================================================
5. ПРОВЕРИТЬ IUS-REQUEST-APPROVAL
======================================================================

Проверить запись ius-request-approval в:

output/UNMIGRATED_META_DATA.md

Показать:

- старый путь;
- META URL;
- META ID;
- тип страницы;
- почему запись не считается отдельным объектом;
- представлен ли её полезный контент в projects/SNL/meta/as/.

Не указывать «неперенесённых уникальных объектов: 0», если полезные данные
ius-request-approval фактически отсутствуют в целевой структуре и не
обосновано, почему это не отдельный объект.

Не создавать объект без подтверждённого типа и родителя.

======================================================================
6. ИСПРАВИТЬ TASK_COVERAGE
======================================================================

Обновить output/TASK_COVERAGE.md по фактическому состоянию.

До устранения дублей требование:

«Нет ложных объектов и дублей»

не может иметь статус «Закрыто».

После устранения дублей проверить его повторно.

Требования по атрибутам сейчас должны иметь статус:

«Частично»

с пояснением:

в сохранённых HTML отсутствуют отдельные секции «Карточка»,
«Ответственность», «Дополнительные атрибуты» и «Технические атрибуты»;
для полного закрытия требуется повторное получение данных страницы.

Не указывать, что все требования закрыты, пока эти разделы не выгружены.

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

Выполнить:

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

До регенерации сохранить контрольные суммы:

find projects/SNL/meta -type f -print0 | sort -z | xargs -0 shasum \
> /tmp/meta-before-module-dedup.sha

Выполнить:

python scripts/regenerate_reports.py

Повторно выполнить:

python scripts/regenerate_reports.py

После второго запуска:

find projects/SNL/meta -type f -print0 | sort -z | xargs -0 shasum \
> /tmp/meta-after-module-dedup.sha

Проверить:

- дубли модулей не восстановились;
- осталось ровно 7 каталогов модулей;
- META URL каждого модуля уникален;
- META ID каждого модуля уникален;
- осталось 4 подмодуля;
- осталось 24 ТК;
- два повторных запуска дают одинаковую структуру;
- таблицы атрибутов не продублировались;
- пять interaction-point остались только на уровне ФП.

======================================================================
8. ОБНОВИТЬ ОТЧЁТЫ
======================================================================

Обновить:

- output/DUPLICATE_OBJECTS_REPORT.md;
- output/UNMIGRATED_META_DATA.md;
- output/TASK_COVERAGE.md;
- output/REQUIREMENTS_REPORT.md.

В output/DUPLICATE_OBJECTS_REPORT.md показать для каждой исправленной пары:

| META ID | META URL | Удалённый путь | Сохранённый путь | Основание выбора |
|---:|---|---|---|---|

В output/REQUIREMENTS_REPORT.md указать честный итог:

- дубли модулей устранены или не устранены;
- атрибуты закрыты частично;
- для полной выгрузки атрибутов требуется отдельный браузерный прогон;
- браузер в рамках этой задачи не запускался.

Финальный статус после устранения всех четырёх дублей:

«Готово с ограничениями исходных данных»

Допустим только в том случае, если единственным оставшимся ограничением
является отсутствие секций атрибутов в сохранённом HTML.

Если остаются дубли или потерянные данные, статус:

«Не готово».

======================================================================
9. ФИНАЛЬНЫЙ ОТЧЁТ
======================================================================

В конце выведи:

# Устранение дублей модулей

## Проверенные пары

## Канонические названия из META

## Перенесённые данные

## Удалённые каталоги

## Изменение генератора

## Проверка ius-request-approval

## Результат py_compile

## Первая регенерация

## Повторная регенерация

## Идемпотентность

## Итоговая статистика

## Оставшееся ограничение по атрибутам

Явно показать:

- количество каталогов модулей до и после;
- количество уникальных META URL до и после;
- количество подмодулей;
- количество ТК;
- количество дублей после исправления;
- итоговый статус проекта.

После завершения остановиться.

Не выполнять commit и push.