diff --git a/.claude/skills/role-compile/SKILL.md b/.claude/skills/role-compile/SKILL.md index accf8f63..afcf83b9 100644 --- a/.claude/skills/role-compile/SKILL.md +++ b/.claude/skills/role-compile/SKILL.md @@ -42,6 +42,7 @@ powershell.exe -NoProfile -File .claude\skills\role-compile\scripts\role-compile "objects": [ "Catalog.Номенклатура: @view", "Document.Реализация: @edit", + "DataProcessor.Загрузка: @view", "InformationRegister.Цены: Read, Update", { "name": "Document.Продажа", "preset": "view", "rights": {"Delete": false}, "rls": {"Read": "#Шаблон(\"\")"} } ] @@ -54,12 +55,13 @@ powershell.exe -NoProfile -File .claude\skills\role-compile\scripts\role-compile | Пресет | Действие | |--------|----------| -| `@view` | Просмотр — Read, View (+InputByString для справочников/документов) | +| `@view` | Просмотр — Read, View (+InputByString для справочников/документов; Use+View для обработок/отчётов) | | `@edit` | Полное редактирование — CRUD + Interactive* + Posting (документы) | -| `@use` | Использование — Use, View (обработки/отчёты/сервисы) | `@` обязателен в shorthand. В объектной форме — `"preset": "view"` без `@`. +Для сервисов (WebService, HTTPService, IntegrationService) пресеты не определены — используй явные права: `"WebService.Имя: Use"`. + ### Русские синонимы Поддерживаются русские типы (`Справочник`→Catalog, `Документ`→Document) и права (`Чтение`→Read, `Просмотр`→View). Смешивание допустимо: `"Справочник.Контрагенты: Чтение, View"`. @@ -79,7 +81,7 @@ powershell.exe -NoProfile -File .claude\skills\role-compile\scripts\role-compile ```json { "name": "ЧтениеНоменклатуры", "synonym": "Чтение номенклатуры", - "objects": ["Catalog.Номенклатура: @view", "Catalog.Контрагенты: @view", "DataProcessor.Загрузка: @use"] + "objects": ["Catalog.Номенклатура: @view", "Catalog.Контрагенты: @view", "DataProcessor.Загрузка: @view"] } ``` diff --git a/.claude/skills/role-compile/dsl-reference.md b/.claude/skills/role-compile/dsl-reference.md index 59b7c101..ea352eed 100644 --- a/.claude/skills/role-compile/dsl-reference.md +++ b/.claude/skills/role-compile/dsl-reference.md @@ -39,7 +39,7 @@ "Catalog.Номенклатура: @view", "Document.Реализация: @edit", "InformationRegister.Цены: Read, Update", - "DataProcessor.Загрузка: @use" + "DataProcessor.Загрузка: @view" ] ``` @@ -54,7 +54,7 @@ } ``` -- `preset` — базовый набор прав (`"view"`, `"edit"`, `"use"`) +- `preset` — базовый набор прав (`"view"`, `"edit"`) - `rights` — переопределения: dict `{"Right": true/false}` или массив `["Right1", "Right2"]` - `rls` — RLS-ограничения: `{"ИмяПрава": "текст условия"}` @@ -70,6 +70,7 @@ | InformationRegister, AccumulationRegister, AccountingRegister, CalculationRegister, Constant, DocumentJournal | Read, View | | Sequence | Read | | CommonForm, CommonCommand, Subsystem, FilterCriterion, CommonAttribute | View | +| DataProcessor, Report | Use, View | | SessionParameter | Get | | Configuration | ThinClient, WebClient, Output, SaveUserData, MainWindowModeNormal | @@ -87,13 +88,7 @@ | SessionParameter | Get, Set | | CommonAttribute | View, Edit | -### `@use` — использование - -| Тип объекта | Права | -|-------------|-------| -| DataProcessor, Report | Use, View | -| CommonForm, CommonCommand, Subsystem | View | -| WebService, HTTPService, IntegrationService | Use | +Для сервисов (WebService, HTTPService, IntegrationService) пресеты не определены — используй явные права: `"WebService.Имя: Use"`. Если пресет не определён для типа объекта — предупреждение с подсказкой доступных. @@ -241,7 +236,7 @@ "objects": [ "Catalog.Номенклатура: @view", "Catalog.Контрагенты: @view", - "DataProcessor.Загрузка: @use" + "DataProcessor.Загрузка: @view" ] } ``` @@ -296,7 +291,7 @@ "Справочник.Контрагенты: @view", "Документ.Реализация: Чтение, Просмотр", "РегистрСведений.Цены: @edit", - "Обработка.ЗагрузкаДанных: @use" + "Обработка.ЗагрузкаДанных: @view" ] } ``` diff --git a/.claude/skills/role-compile/scripts/role-compile.ps1 b/.claude/skills/role-compile/scripts/role-compile.ps1 index 8583ddcb..32e2db71 100644 --- a/.claude/skills/role-compile/scripts/role-compile.ps1 +++ b/.claude/skills/role-compile/scripts/role-compile.ps1 @@ -264,7 +264,7 @@ $script:knownRights = @{ $script:nestedRights = @("View","Edit") $script:commandRights = @("View") -# --- 4. Presets (@view, @edit, @use) --- +# --- 4. Presets (@view, @edit) --- $script:presets = @{ "view" = @{ @@ -289,6 +289,8 @@ $script:presets = @{ "FilterCriterion" = @("View") "SessionParameter" = @("Get") "CommonAttribute" = @("View") + "DataProcessor" = @("Use","View") + "Report" = @("Use","View") "Configuration" = @("ThinClient","WebClient","Output","SaveUserData","MainWindowModeNormal") } "edit" = @{ @@ -309,16 +311,6 @@ $script:presets = @{ "SessionParameter" = @("Get","Set") "CommonAttribute" = @("View","Edit") } - "use" = @{ - "DataProcessor" = @("Use","View") - "Report" = @("Use","View") - "CommonForm" = @("View") - "CommonCommand" = @("View") - "Subsystem" = @("View") - "WebService" = @("Use") - "HTTPService" = @("Use") - "IntegrationService" = @("Use") - } } # --- 5. Helpers --- @@ -341,7 +333,7 @@ function Resolve-Preset { $preset = $presetName.TrimStart('@') if (-not $script:presets.ContainsKey($preset)) { - Write-Warning "Unknown preset '@$preset'. Known: @view, @edit, @use" + Write-Warning "Unknown preset '@$preset'. Known: @view, @edit" return @() } diff --git a/docs/role-dsl-spec.md b/docs/role-dsl-spec.md index 662db465..300fa000 100644 --- a/docs/role-dsl-spec.md +++ b/docs/role-dsl-spec.md @@ -37,7 +37,7 @@ Role JSON DSL — компактный JSON-формат, транслируем | Поле | Тип | Обяз. | Описание | |------|-----|:-----:|----------| | `name` | string | да | Полное имя объекта: `Тип.Имя` | -| `preset` | string | нет | Пресет: `"view"`, `"edit"`, `"use"` (без `@`) | +| `preset` | string | нет | Пресет: `"view"`, `"edit"` (без `@`) | | `rights` | object\|array | нет | Переопределения: `{"Right": bool}` или `["Right1", "Right2"]` | | `rls` | object | нет | RLS: `{"ИмяПрава": "текст условия или #шаблон"}` | @@ -49,9 +49,8 @@ Role JSON DSL — компактный JSON-формат, транслируем | Пресет | Назначение | |--------|------------| -| `view` | Просмотр: Read, View (+InputByString для справочников/документов) | +| `view` | Просмотр: Read, View (+InputByString для справочников/документов; Use+View для обработок/отчётов) | | `edit` | Полное редактирование: CRUD + Interactive* + Posting (документы) | -| `use` | Использование: Use, View (обработки/отчёты/сервисы) | Подробные таблицы прав для каждого типа объекта — в `.claude/skills/role-compile/dsl-reference.md`. diff --git a/docs/role-guide.md b/docs/role-guide.md index ccee91e8..44dd08b7 100644 --- a/docs/role-guide.md +++ b/docs/role-guide.md @@ -35,7 +35,7 @@ "objects": [ "Catalog.Номенклатура: @view", "Catalog.Контрагенты: @view", - "DataProcessor.Загрузка: @use" + "DataProcessor.Загрузка: @view" ] } ``` @@ -59,9 +59,8 @@ | Пресет | Действие | |--------|----------| -| `@view` | Просмотр: Read, View, InputByString (для справочников/документов); Read, View (для регистров) | +| `@view` | Просмотр: Read, View (+InputByString для справочников/документов; Use+View для обработок/отчётов) | | `@edit` | Полное редактирование: CRUD + Interactive* + Posting (для документов) | -| `@use` | Использование: Use, View (для обработок/отчётов/сервисов) | `@` обязателен в строковом shorthand. В объектной форме — ключ `preset` без `@`.