mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-26 15:04:34 +03:00
feat(meta-edit,meta-compile,meta-remove): support-guard перед правкой объектов на поддержке
Пилот энфорсмента issue #23: перед записью навыки-мутаторы проверяют состояние поддержки (Ext/ParentConfigurations.bin) и блокируют опасную правочку. Триггер — наличие bin (конфиг на поддержке); реакция из .v8-project.json editingAllowedCheck (deny|warn|off, по умолчанию deny). Assert-EditAllowed (нативная копия в каждом навыке, оба порта): walk-up резолвит uuid цели (объект / владелец / корень — по пути) и корень конфигурации, затем G-vs-f1 и консервативная свёртка min(f1). Два режима: require-editable (f1≥1, G≠1) для правок/добавлений; require-removed (f1=2) для удаления. - meta-edit (v1.7): editable на редактируемом объекте; - meta-compile (v1.13): editable на корне (добавление нового объекта); - meta-remove (v1.2): removed на удаляемом объекте. Диагностика через [Console]::Error.WriteLine + exit 1 (не Write-Error: под ErrorActionPreference=Stop тот бросает и был бы проглочен catch'ем). Тесты: малая on-support фикстура с рукотворным bin (root/Locked f1=0, Removed f1=2); guard-deny кейсы (expectError) — оба рантайма зелёные, старые кейсы не сломаны (конфиги без bin → allow). Поле editingAllowedCheck задокументировано в docs/v8-project-guide.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -57,6 +57,7 @@
|
||||
| `v8path` | string | да | — | Путь к каталогу `bin` платформы 1С | `/db-list add` или руками |
|
||||
| `databases` | array | да | — | Список баз данных | `/db-list add` |
|
||||
| `default` | string | нет | — | `id` базы по умолчанию | `/db-list` |
|
||||
| `editingAllowedCheck` | `"deny"`/`"warn"`/`"off"` | нет | `deny` | Глобальная реакция support-guard на правку объектов на замке (см. ниже) | Руками |
|
||||
| `webPath` | string | нет | `tools/apache24` | Каталог Apache HTTP Server | Руками |
|
||||
| `ffmpegPath` | string | нет | `tools/ffmpeg/bin/ffmpeg.exe` | Путь к ffmpeg | Руками |
|
||||
| `tts` | object | нет | Edge TTS, DmitryNeural | Настройки озвучки видео | Руками |
|
||||
@@ -76,8 +77,20 @@
|
||||
| `aliases` | string[] | нет | Альтернативные имена для обращения к базе | `/db-list add` или руками |
|
||||
| `branches` | string[] | нет | Git-ветки или glob-паттерны (`release/*`, `feature/*`) | Руками |
|
||||
| `configSrc` | string | нет | Каталог XML-выгрузки конфигурации | Руками |
|
||||
| `editingAllowedCheck` | `"deny"`/`"warn"`/`"off"` | нет | Override реакции support-guard для этой базы (см. ниже) | Руками |
|
||||
| `webUrl` | string | нет | URL веб-клиента для `/web-test` | Руками |
|
||||
|
||||
### Support-guard и `editingAllowedCheck`
|
||||
|
||||
Навыки-мутаторы (`meta-edit`, `meta-compile`, `meta-remove` и др.) перед изменением исходников проверяют состояние поддержки конфигурации (`Ext/ParentConfigurations.bin`, см. [1c-support-state-spec.md](1c-support-state-spec.md)). Если объект «на замке» поставщика (или вся конфигурация read-only, или удаляется не снятый с поддержки объект), правка по умолчанию **блокируется** — прямое изменение сломало бы обновления.
|
||||
|
||||
Реакцию задаёт `editingAllowedCheck`:
|
||||
- `deny` (по умолчанию, в т.ч. когда поле не задано) — блокировать с диагностикой;
|
||||
- `warn` — пропускать, но писать предупреждение;
|
||||
- `off` — проверку не выполнять.
|
||||
|
||||
Триггер проверки — наличие `ParentConfigurations.bin` (конфигурация на поддержке), а не регистрация в `.v8-project.json`. Поле лишь меняет реакцию. Берётся `databases[].editingAllowedCheck` базы, чей `configSrc` охватывает редактируемый путь; иначе — корневое `editingAllowedCheck`; иначе `deny`.
|
||||
|
||||
### Разрешение базы
|
||||
|
||||
Все навыки `/db-*`, `/epf-build`, `/epf-dump`, `/erf-build`, `/erf-dump`, `/web-publish` используют единый алгоритм:
|
||||
|
||||
Reference in New Issue
Block a user