mirror of
https://github.com/Nikolay-Shirokov/cc-1c-skills.git
synced 2026-06-10 16:14:54 +03:00
Refactor role-compile SKILL.md with progressive disclosure
Extract detailed preset tables, Russian synonym tables, and extra examples into dsl-reference.md (318 lines). Compact SKILL.md from 340 to 107 lines. Add role-dsl-spec.md project spec. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
# Спецификация Role JSON DSL
|
||||
|
||||
Формат JSON для описания ролей 1С, используемый навыком `/role-compile`.
|
||||
|
||||
## Обзор
|
||||
|
||||
Role JSON DSL — компактный JSON-формат, транслируемый скриптом в XML-файлы роли 1С:Предприятия (метаданные + Rights.xml). Поддерживает пресеты прав, русские синонимы типов и прав, шаблоны ограничений (RLS).
|
||||
|
||||
## Корневой объект
|
||||
|
||||
| Поле | Тип | Обяз. | По умолчанию | Описание |
|
||||
|------|-----|:-----:|:------------:|----------|
|
||||
| `name` | string | да | — | Программное имя роли |
|
||||
| `synonym` | string | нет | = name | Отображаемое имя |
|
||||
| `comment` | string | нет | `""` | Комментарий |
|
||||
| `setForNewObjects` | bool | нет | `false` | Устанавливать для новых объектов |
|
||||
| `setForAttributesByDefault` | bool | нет | `true` | Устанавливать для реквизитов по умолчанию |
|
||||
| `independentRightsOfChildObjects` | bool | нет | `false` | Независимые права подчинённых объектов |
|
||||
| `objects` | array | нет | `[]` | Массив объектов метаданных с правами |
|
||||
| `templates` | array | нет | `[]` | Шаблоны ограничений (RLS) |
|
||||
|
||||
## Элементы `objects`
|
||||
|
||||
Массив принимает два формата, которые можно смешивать.
|
||||
|
||||
### Строковый shorthand
|
||||
|
||||
```
|
||||
"Тип.Имя: @пресет"
|
||||
"Тип.Имя: Право1, Право2"
|
||||
```
|
||||
|
||||
Тип — английский (Catalog) или русский (Справочник). Права — английские (Read) или русские (Чтение).
|
||||
|
||||
### Объектная форма
|
||||
|
||||
| Поле | Тип | Обяз. | Описание |
|
||||
|------|-----|:-----:|----------|
|
||||
| `name` | string | да | Полное имя объекта: `Тип.Имя` |
|
||||
| `preset` | string | нет | Пресет: `"view"`, `"edit"`, `"use"` (без `@`) |
|
||||
| `rights` | object\|array | нет | Переопределения: `{"Right": bool}` или `["Right1", "Right2"]` |
|
||||
| `rls` | object | нет | RLS: `{"ИмяПрава": "текст условия или #шаблон"}` |
|
||||
|
||||
При наличии `preset` + `rights` — сначала применяется пресет, затем `rights` переопределяют отдельные права.
|
||||
|
||||
## Пресеты
|
||||
|
||||
Три встроенных пресета определяют набор прав в зависимости от типа объекта:
|
||||
|
||||
| Пресет | Назначение |
|
||||
|--------|------------|
|
||||
| `view` | Просмотр: Read, View (+InputByString для справочников/документов) |
|
||||
| `edit` | Полное редактирование: CRUD + Interactive* + Posting (документы) |
|
||||
| `use` | Использование: Use, View (обработки/отчёты/сервисы) |
|
||||
|
||||
Подробные таблицы прав для каждого типа объекта — в `.claude/skills/role-compile/dsl-reference.md`.
|
||||
|
||||
## Шаблоны ограничений (RLS)
|
||||
|
||||
Элементы массива `templates`:
|
||||
|
||||
| Поле | Тип | Описание |
|
||||
|------|-----|----------|
|
||||
| `name` | string | Имя шаблона с параметрами: `"ДляОбъекта(Модификатор)"` |
|
||||
| `condition` | string | Текст условия. `&` экранируется в `&` автоматически |
|
||||
|
||||
Ссылка на шаблон в `rls`: `"#ИмяШаблона(\"параметры\")"` — начинается с `#`.
|
||||
|
||||
## Русские синонимы
|
||||
|
||||
DSL принимает русские имена типов и прав, транслируя их в английские. Полные таблицы соответствий — в `.claude/skills/role-compile/dsl-reference.md`.
|
||||
|
||||
Примеры: `Справочник` → Catalog, `Документ` → Document, `Чтение` → Read, `Просмотр` → View.
|
||||
|
||||
## Пример
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "МенеджерПродаж",
|
||||
"synonym": "Менеджер продаж",
|
||||
"objects": [
|
||||
"Document.РеализацияТоваровУслуг: @edit",
|
||||
"Catalog.Контрагенты: @view",
|
||||
"Catalog.Номенклатура: @view",
|
||||
{
|
||||
"name": "Document.ЗаказКлиента",
|
||||
"preset": "view",
|
||||
"rls": { "Read": "#ДляОбъекта(\"\")" }
|
||||
}
|
||||
],
|
||||
"templates": [
|
||||
{
|
||||
"name": "ДляОбъекта(Модификатор)",
|
||||
"condition": "ГДЕ Организация = &ТекущаяОрганизация"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Генерируемые файлы
|
||||
|
||||
```
|
||||
Roles/
|
||||
ИмяРоли.xml # Метаданные (UUID, синоним, флаги)
|
||||
ИмяРоли/
|
||||
└── Ext/
|
||||
└── Rights.xml # Права доступа (объекты, права, RLS)
|
||||
```
|
||||
|
||||
## См. также
|
||||
|
||||
- [Роли (Rights.xml)](1c-role-spec.md) — XML-формат прав роли, типы объектов, RLS
|
||||
- [Гайд по ролям](role-guide.md) — сценарии использования, рабочий цикл
|
||||
+3
-2
@@ -67,7 +67,7 @@
|
||||
|
||||
### Русские синонимы
|
||||
|
||||
Скрипт принимает русские имена типов и прав: `Справочник` → Catalog, `Чтение` → Read, `Проведение` → Posting и т.д. Полный список — в [SKILL.md навыка](../.claude/skills/role-compile/SKILL.md).
|
||||
Скрипт принимает русские имена типов и прав: `Справочник` → Catalog, `Чтение` → Read, `Проведение` → Posting и т.д. Полный список — в [спецификации Role DSL](role-dsl-spec.md).
|
||||
|
||||
## Сценарии использования
|
||||
|
||||
@@ -152,4 +152,5 @@ Roles/
|
||||
|
||||
## Спецификация
|
||||
|
||||
Полная спецификация формата: [1c-role-spec.md](1c-role-spec.md) — типы объектов, права, RLS, шаблоны ограничений, версии формата.
|
||||
- [1c-role-spec.md](1c-role-spec.md) — XML-формат прав роли, типы объектов, RLS, шаблоны ограничений
|
||||
- [role-dsl-spec.md](role-dsl-spec.md) — JSON DSL для описания ролей (формат входных данных `/role-compile`)
|
||||
|
||||
Reference in New Issue
Block a user