mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-07-14 06:45:17 +03:00
feat(meta-compile,meta-decompile): HE-эвристика аббревиатур в авто-синониме + регистрочувствительный авто-вывод (v1.61/v0.52)
Корень: split_camel_case слепо лоуэркейзил хвост, теряя аббревиатуры (НДС/ЕГАИС/ОС/ЭП), которые платформа сохраняет. Вскрыто py-раундтрипом на маке (АбонентыЭДО: синоним "Абоненты ЭДО" регенерился как "эдо"). Дважды замаскировано: декомпилятор опускал синоним регистронезависимо (ne_ci), харнес Compare-Object был без -CaseSensitive. Масштаб survey: 7706. Фикс (правило подтверждено эмпирически по корпусу): сохранять максимальный прогон заглавных >=2, если сразу за ним НЕ буква (пробел/цифра/спецсимвол/конец). ">=2" ловит ОС/ЭП; граница "не буква" отсекает предлоги (РасчетыСКлиентами->склиентами) и бренды (ЮКасса). - Компилятор Split-CamelCase -> HE (ps1+py), радиус = авто-синонимы + авто-описания предопределённых. - Декомпилятор Split-CamelWords -> HE (зеркало) + регистрочувствительная страховка (-ne->-cne / ne_ci->ne_cs) в 9 точках: кастом-синонимы (ВетИС/МИР) эмитятся дословно. Валидация 8.3.24 (1765): синонимы/описания закрыты полностью, ноль case-диффов. Декомпилятор ps1==py 189/189. Регресс 511/511 ps+py. spec §2. Снэпшоты meta-compile — казинг аббревиатур. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+14
-4
@@ -35,19 +35,29 @@ JSON DSL для описания объектов метаданных конф
|
||||
|
||||
## 2. Автогенерация синонима (CamelCase → слова)
|
||||
|
||||
Если `synonym` не указан, имя автоматически разбивается на слова:
|
||||
Если `synonym` не указан, имя автоматически разбивается на слова (зеркало эвристики платформы):
|
||||
|
||||
| Вход | Результат |
|
||||
|------|-----------|
|
||||
| `АвансовыйОтчет` | `Авансовый отчет` |
|
||||
| `ОсновнаяВалюта` | `Основная валюта` |
|
||||
| `НДС20` | `НДС20` |
|
||||
| `АбонентыЭДО` | `Абоненты ЭДО` |
|
||||
| `ВыработкаОС` | `Выработка ОС` |
|
||||
| `СчетУчетаНДС` | `Счет учета НДС` |
|
||||
| `СтатусЭДО2` | `Статус ЭДО2` |
|
||||
| `РасчетыСКлиентами` | `Расчеты склиентами` |
|
||||
| `ЮКассаЛоготип` | `Юкасса логотип` |
|
||||
| `IncomingDocument` | `Incoming document` |
|
||||
|
||||
Правила:
|
||||
- Граница на переходе `[а-яё][А-ЯЁ]` и `[a-z][A-Z]`
|
||||
- Первое слово сохраняет заглавную, остальные — строчные
|
||||
- Явный `synonym` перекрывает автогенерацию
|
||||
- Первое слово сохраняет заглавную, остальные — строчные, **кроме аббревиатур**: максимальный прогон
|
||||
заглавных длиной **≥2, если сразу за ним НЕ буква** (пробел/цифра/спецсимвол/конец строки) — остаётся
|
||||
заглавным (`НДС`, `ЕГАИС`, `ОС`, `ЭП`)
|
||||
- Прилипшие предлоги и бренды (`СКлиентами`, `ЮКасса`) стоят перед буквой → строчные (не аббревиатура)
|
||||
- То же правило — для авто-Наименования предопределённых (§7.1.2) и авто-описаний
|
||||
- Явный `synonym` перекрывает автогенерацию; при расхождении с авто хотя бы в регистре синоним
|
||||
сохраняется дословно (напр. брендовый `ВетИС`, `МИР`)
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user