mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-13 17:34:57 +03:00
3119700c71
Категория C — закрыта для однородных шаблонов с custom appearance. Refactor fingerprint → preset shape (11 полей: font/fontSize/bold/italic/ hAlign/vAlign/wrap/bgColor/textColor/borderColor/borders). vAlign теперь учитывается в matching (раньше игнорировался). Алгоритм: 1. При -OutputPath загружается existing skd-styles.json рядом (если есть); user presets накладываются на built-in по той же логике что и compile. 2. Каждая ячейка → Extract-CellPreset → Match-PresetByShape против effectivePresets (built-in + user). 3. Если не match — Allocate-CustomStyle: новый customN, регистрируется в effectivePresets и accumulator. 4. По окончании Save-UserStyles пишет skd-styles.json рядом с outputPath (preserved existing + новые customN). 5. Compile подхватит файл по своим search-путям (cwd/dirname/scan-up). В SKILL.md не добавляем (custom стили — для round-trip, не для написания модель с нуля; built-in `data/header/subheader/total/none` остаются основным интерфейсом для модели). - runner.mjs: новый preRun step `writeFile` для подготовки fixture-файлов в workDir (нужен для теста с предзаписанным skd-styles.json). - Новый тест template-custom-style: preRun пишет myHeader preset, скомпилирует темплейт, decompile reverse'ит → переиспользует имя myHeader (не создаёт customN). - v0.14 → v0.15. Метрики: - ERP-сэмпл 30: 24 → 0 sentinel'ов, clean 26 → 30/30 - Целевой корпус 40 отчётов: 39 → 25 sentinel'ов (часть закрыта), clean 19 → 20/40. Остаточные — шаблоны с разными стилями в разных ячейках одного шаблона (нужно per-cell style override — отдельная задача).