# Сопоставление предметов и иконок

Срез локальных файлов от 2026-09-02. Это первичная привязка для просмотра и согласования, не выполненный импорт.

## Открыть документ

- [Визуальное сравнение](index.html): исходник, перерисовка и новый спрайт рядом; поиск по коду, фильтры по типу и основанию привязки.
- [Excel](outputs/01a05d2e-8909-7412-8810-6d00fb010c18/item-icon-mapping.xlsx): 7 листов, фильтры, закреплённые заголовки, редактируемые "Проверка" и "Комментарий".
- [CSV](mapping.csv): UTF-8 BOM, разделитель `;`.
- [JSON](mapping.json): полные записи, GUID, альтернативные исходники, основания выбора, SHA256 и резерв новых PNG.
- [Стандарт спрайтов](SPRITE-STANDARD.md): единый полный холст 256x256, PNG RGBA без обрезки силуэта.
- [Manifest](normalization.json): происхождение всех 256-копий, размеры, SHA256 и alpha QA.
- [Top Set](recovered-top-set/manifest.json): 224 локальные копии найденных исходников, точные переходы и прежние строки.
- [Восстановленные палитры Top Set](palette-source-restore/review.html):42 принятых восстановления рядом с точным исходником и отменённой исторической перекраской.
- [Принятые палитры](palette-recolor-256/accepted.json):192 действующие палитры только предметов без исходника (152 expansion +40 generated), с source/output SHA и настройками масок.
- [Исторический обзор323](palette-recolor-256/review-draft/index.html): снимок до отмены131 индивидуальной перекраски; не является списком текущих рекомендаций.
- [Последние 64: полный обзор](missing-final-64/group-review/index.html): 20 групп, принятые новые иконки и прежние соседи в ячейках 256x256; [accepted64](missing-final-64/accepted.json), [PNG](missing-final-64/generated/), [QA](missing-final-64/png-audit.json).
- [Индекс генераций 64](missing-final-64/generation-index.json): точный manifest/entry и SHA для каждого кода, включая [пилот](missing-final-64/direct-alpha-pilot.json) и [первую партию](missing-final-64/direct-batch-01.json). [Общий контракт](missing-final-64/direct-generation-contract.json), [дизайны](missing-final-64/designs.json), полные промпты в direct-batch-01.json..direct-batch-09.json.

HTML открывается непосредственно в браузере, без сервера и сети. Все превью показывают 256-копии в одинаковых квадратных ячейках. Нажатие на спрайт открывает исходный PNG; ссылка "PNG 256x256" открывает экспорт. Ссылки относительные; документ должен оставаться внутри текущего дерева `GachaArena`. Корень путей в Excel/CSV/JSON: `D:/workspace/projects/GachaArena`. Поле `asset` отдельно сохраняет Unity-relative путь `Assets/...`.

В Excel/CSV "Источник рекомендации" содержит выбранный исходный PNG; "Рекомендация 256" содержит его экспорт. Суффиксы 256 и 256Sha256 отделяют копии от источников. Изменения привязок разрешены только через accepted.json, Top Set manifest и [явный override](redraw-overrides.json). Для 135 найденных исходников прежние analog-поля и колонки удалены из активных документов, но сохранены в историческом manifest и backup. Общие PNG не удалены. Колонки AB:AF показывают пояснение, принятие перерисовки и source/output SHA; ручные "Проверка" и "Комментарий" сохраняются. Убраны только неизменённые автоматические пояснения прежних аналогов.

## Покрытие

| Показатель | Предметов |
|---|---:|
| Все ObjectScriptable в Objects | 909 |
| Активные, включённые в документ | 904 |
| Исключённые из выгрузки | 5 |
| Точное совпадение имени | 693 |
| Предложен аналог по роли или для EXP | 86 |
| Принято досозданных иконок | 125 |
| Без подходящего изображения | 0 |
| Найден исходник | 573 |
| Найдена перерисовка исходника | 573 |
| Предложен спрайт нового набора 11-16 | 228 |
| Реально назначена иконка в активном .asset | 0 |

Колонки с наличием пересекаются. Всем904 предметам предложены иконки, используются868 разных рекомендуемых PNG. Исходные137 пропусков закрыты125 принятыми генерациями (61+64) и12 найденными исходниками Top Set. Дополнительно точные исходники Top Set заменили123 прежних аналога; история сохранена отдельно.

Все135 Top Set имеют принятую перерисовку, pending=0. Для42 восстановлены исходные палитры через отдельный [accepted42](palette-source-restore/accepted.json):25 сохранённых доколорных PNG и17 RGB-масок. Исторический accepted135 не менялся. Garlic-v2 и accepted61/64 сохранены. В normalization.json1895 экспортов:1853 прежних и42 новых, без перезаписи прежних PNG.

Из323 индивидуальных перекрасок отменена131 для строк с исходником. Эти строки возвращены ровно к рекомендациям backup-before-palette-recolor:126 redraw и5 expansion; существующий выбор нового набора колец не заменялся. Остальные192 палитры и их PNG сохранены побайтно. Столбцы AG:AQ показывают только действующие палитры. Предыдущие PNG, QA, accepted и [обзор Top Set](palette-all-groups/index.html) остаются историей.

Top Set содержит 224 PNG: 135 точных привязок и 89 файлов без точного активного кода. Все сохранены побайтно в recovered-top-set/source, весь inventory с причинами показан на листе "Top Set". Downloads не нужны для открытия документа. Ещё 56 PNG новых наборов 11-16 находятся на листе "Резерв 11-16" и в unusedNew.

Все 909 файлов используют GUID скрипта `fc532322ec574f57823f9ae2d6ad03f4`. Пять файлов в `Legacy/Excluded` исключены по правилу `EquipmentCatalogRepository.Scan`, а не по догадке о названии. Среди них есть три старые ссылки на `spell-7.png`; к активной экипировке они не относятся.

## Правила привязки

1. Фактическая ссылка `icon` читается из YAML и разрешается через GUID в `.meta`. У всех 904 активных предметов `fileID: 0`.
2. Исходник ищется по имени кода, с нормализацией `boots/boot`, `rings/ring`, `shields/shield`, `bracers/bracer`, `helmets/helmet` и аналогичных форм. Тип, уровень и номер варианта должны совпадать. Числовые имена без явного уровня не трактуются как уровень.
3. Перерисовка исходного набора берётся из существующего каталога. Для Top Set совпадений sourceSha256 в прежних каталогах не найдено. Новые перерисовки принимаются только через [redraw accepted](recovered-top-set/redraw-256/accepted.json): точный sourcePath/sourceSha256 из Top Set manifest, утверждённый path/outputSha256, visualReview="passed" и PNG/QA без ошибок. Непринятые PNG не используются. Прежние аналоги Top Set не показываются.
4. Новые наборы 11-16 сопоставляются по типу, уровню и варианту. Для колец используется `ring-lNN-vNN.png`. Новые кольца не являются точной перерисовкой прежнего рисунка; обе версии остаются в документе.
5. Прежнее предложение аналога остаётся только там, где не найдено точное имя. Оно использовало тот же тип и уровень, роли agl/agi=1, str/crit=2, tank=3, reac/luck=4; EXP получал первый вариант. Новые файлы Top Set сопоставляются без ролевых догадок: block не заменяет tank.
6. Новые досозданные PNG принимаются только по [accepted61](missing-icons-256/accepted.json) и [accepted64](missing-final-64/accepted.json) после visualReview="passed", проверки SHA256 и технического QA. Historical840 guard сохраняется и допускает только явный переход131 отмена перекраски +42 восстановление Top Set. Отдельная новая палитра разрешена только строке без исходника; original, Top Set и аналог сохраняют исходные цвета. Наличие файла без accepted не меняет документ.

"Высокая (по имени)" означает совпадение идентификаторов, не утверждение художником. Все строки имеют исходный статус "Не проверено". Аналоги требуют особого внимания: ролевой или уникальный EXP-предмет может нуждаться в собственном рисунке после согласования.

## Недостающие спрайты

Пустых рекомендаций нет. Лист "Досоздать" показывает пустое состояние, [remaining-missing.json](remaining-missing.json) содержит count=0. Прежние 64 кода и полные группы сохранены в [frozen inventory](backup-before-final-missing/remaining-missing.json); [missing.json](missing.json) хранит исходные 137 пропусков и не является текущим списком.

Последняя принятая партия: 12 амулетов, 12 шлемов и 12 единиц брони уровней 18/21/24/27, по три варианта; 28 иконок штанов. Все 64 raw имеют настоящую alpha и сохранены в missing-final-64/raw; PNG 256 находятся в generated. Фон не удалялся, полный холст сохранён. Координатор проверил 20 полных групп с 10 прежними соседями; [результат приёмки](missing-final-64/parent-visual-verification.json).

61 принятая иконка находится в missing-icons-256/generated: по 12 ботинок, оружия, поясов и наручей, 13 перчаток. Старые generated/boots_18_1.png и generated/pants_5_1.png остаются двумя историческими пробами и не увеличивают покрытие. Другие PNG в generated не добавляются автоматически. Ранний вариант с нарисованной шахматкой сохранён в drafts/pants_5_1-checkerboard.png; drafts/raw не участвуют в нормализации.

Последняя партия 64 использует только native alpha; её pipeline отвергает удаление фона. Непринятые ранние RGB-попытки сохранены отдельно и в документ не входят. [Промпты 137](generation-prompts.json) и ранние задания исторические. Точные промпты принятых 64 доступны через generation-index.json. Перед новой генерацией брать только строки без recommended из актуального mapping.json или листа "Досоздать". Стиль: контурный cartoon проекта, плоский цвет, немного конструктивных деталей; full-expansion не используется как эталон новых рисунков.

## Источники

- `GachaArena-UnityClient/Assets/GachaShared/Objects/**/*.asset` и `.asset.meta`.
- `GachaArena-UnityClient/Assets/GachaArena/Tools/Content/Editor/Catalog/EquipmentCatalogRepository.cs`, строки 26-36: активный состав каталога.
- `GachaArena-UnityClient/Assets/GachaShared/Data/ObjectScriptable.cs`, поля `code`, `displayName`, `icon`, `type`, `level`.
- `GachaArena-UnityClient/Assets/GachaArenaApi/Generated/Model/ETypeObject.cs`: значения типов.
- `DesignArtifacts/parchment-battle/inventory-library/full-expansion/catalog.json`: 532 пары источник/перерисовка.
- `DesignArtifacts/parchment-battle/inventory-library/level-expansion-11-16`: 216 новых PNG.
- `DesignArtifacts/parchment-battle/inventory-library/rings-levels-11-16/generation.json`: 24 новых кольца.
- `recovered-top-set/source/`: 224 побайтные копии из пользовательского Top Set; первоначальные пути и SHA записаны в manifest.

## Проверка и границы

[verification.json](verification.json) и [verification-256.json](verification-256.json) содержат data/browser gate. Отдельная [проверка восстановления](palette-source-restore/verification.json) сверяет131+42,192 сохранённых палитры,1853 исторических экспорта, SHA прежних PNG и904 ручных review/reason из live Excel. Команды и RED/GREEN: [SUPPORT-PALETTE-SOURCE-RESTORE.md](SUPPORT-PALETTE-SOURCE-RESTORE.md). Прежние REPORT/SUPPORT и partial JSON остаются историей этапов.

Это не полная художественная проверка всех изображений документа. Старые наборы могут требовать дополнительной проверки прозрачности внутренних отверстий. Документ не означает готовность PNG к production-импорту.

Unity-ассеты, `.meta`, адресация и назначения Sprite не изменялись. Загрузка на бэкенд не выполнялась. Документ не подтверждает состояние каталога на сервере.

## Обновление документа

В папке находятся вспомогательные скрипты `inspect.mjs`, `map.mjs`, `build-document.mjs` и `verify-document.mjs`. Они читают проект и пишут только в эту папку. Для создания Excel нужен bundled Node и `@oai/artifact-tool`; `node_modules` является junction к runtime, а не копией зависимостей проекта.

Обычное обновление: `node normalize-sprites.mjs`, затем `node build-document.mjs`, затем `node verify-document.mjs`. Запускать из этой папки с bundled Node. Нормализатор сверяет hash источника и результата перед пропуском неизменившихся файлов. Сборщик всегда читает normalization.json. `map.mjs` для технической нормализации не запускать: он заново формирует привязки и может принять неподтверждённые generated-файлы.

Для обновления явных привязок: `node recovered-top-set.mjs` или `node integrate-missing.mjs` делают dry-run. С `--apply` они объединяют accepted61/64, Top Set, garlic,192 palette и42 source-restoration, затем нормализуют PNG. Перед первым `build-document.mjs` в операции выполнить один spreadsheet marker; команды в [SUPPORT-PALETTE-SOURCE-RESTORE.md](SUPPORT-PALETTE-SOURCE-RESTORE.md). Последний snapshot: backup-before-palette-source-restore. Прежние backup не перезаписываются. Не запускать map.mjs или исторические prepare/freeze для обычного обновления.

[jobs135](recovered-top-set/redraw-256/jobs.json) задаёт исходник и назначение каждой перерисовки. [Анализ палитры](recovered-top-set/redraw-256/chroma-analysis.json) считает видимые пиксели alpha>8 под основным chromakey matcher для magenta/cyan/yellow; обновляется командой `node analyze-chroma.mjs` без изменения PNG. Нулевое пересечение помогает выбрать фон, но не заменяет проверку обработки краёв и палитры нового рисунка. Режимы cyan/yellow передаются finishSprite явно; старые 61 PNG и garlic не переэкспортируются.

В `recovered-top-set/redraw-256/` сохранены135 raw/generated, QA, accepted и промпты. В `palette-recolor-256/` остаются323 исторических PNG/QA и настройки; действующий accepted содержит только192. В `palette-source-restore/masks-v1` ... `masks-v4` сохранены все версии восстановления, но подключаются только17 принятых по точным SHA. Обзор текущих42: [review.html](palette-source-restore/review.html); весь актуальный каталог: [index.html](index.html). Старые review-draft/pilot-review/review-fixes являются историческими снимками.

Сборщик переносит колонки "Проверка" и "Комментарий" из существующего Excel по коду в JSON/HTML/CSV. Изменение остальных исходных колонок Excel останавливает сборку с сообщением, чтобы решение не потерялось. Перед первой нормализацией исходные документы и workbook сохранены в `backup-before-512/`; имя папки историческое. Все 904 исходных статуса были "Не проверено".

Нормализация не является художественным утверждением и не меняет Unity.
