--- name: db-list description: Управление реестром баз данных 1С (.v8-project.json). Используй когда нужно работать с реестром баз — список баз, зарегистрировать базу в реестре, какие базы есть argument-hint: "[add|remove|show]" allowed-tools: - Read - Write - Glob - AskUserQuestion --- # /db-list — Управление реестром баз данных Управляет файлом `.v8-project.json` — реестром информационных баз проекта. Файл хранит параметры подключения, алиасы, привязку к веткам Git. ## Usage ``` /db-list — показать список баз /db-list add — добавить базу (интерактивно) /db-list remove — удалить базу из реестра /db-list show — подробности по базе ``` ## Формат `.v8-project.json` Файл размещается в корне проекта (рядом с `.git/`). ```json { "v8path": "C:\\Program Files\\1cv8\\8.3.25.1257\\bin", "databases": [ { "id": "dev", "name": "Разработка", "type": "file", "path": "C:\\Bases\\MyApp_Dev", "user": "Admin", "password": "", "aliases": ["dev", "разработка"], "branches": ["dev", "develop", "feature/*"], "configSrc": "C:\\WS\\myapp\\cfsrc" }, { "id": "test", "name": "Тестовая", "type": "server", "server": "srv01", "ref": "MyApp_Test", "user": "Admin", "password": "123", "aliases": ["test", "тест"] } ], "default": "dev" } ``` ### Поля корневого объекта | Поле | Тип | Описание | |------|-----|----------| | `v8path` | string | Каталог bin платформы 1С. Необязательный — если не задан, автоопределение | | `databases` | array | Массив баз данных | | `default` | string | id базы по умолчанию | ### Поля объекта базы данных | Поле | Тип | Обязательное | Описание | |------|-----|:------------:|----------| | `id` | string | да | Уникальный идентификатор (латиница, без пробелов) | | `name` | string | да | Человекочитаемое имя | | `type` | `"file"` / `"server"` | да | Тип подключения | | `path` | string | для file | Путь к каталогу файловой базы | | `server` | string | для server | Адрес сервера 1С | | `ref` | string | для server | Имя базы на сервере | | `user` | string | нет | Имя пользователя 1С | | `password` | string | нет | Пароль | | `aliases` | string[] | нет | Альтернативные имена для быстрого доступа | | `branches` | string[] | нет | Git-ветки или glob-паттерны (`release/*`, `feature/*`), привязанные к этой базе | | `configSrc` | string | нет | Каталог XML-выгрузки конфигурации | ## Алгоритм разрешения базы данных Этот алгоритм используется ВСЕМИ навыками (`db-*`, `epf-build`, `epf-dump`, `erf-build`, `erf-dump`) для определения целевой базы. 1. Если пользователь указал **параметры подключения** (путь, сервер) — используй напрямую 2. Если пользователь указал **базу по имени** — ищи совпадение в таком порядке: 1. По `id` (точное совпадение) 2. По `aliases` (совпадение в массиве с учётом морфологии: «тестовую» = «тестовая» = «тестовой») 3. По `name` (нечёткое совпадение с учётом морфологии и регистра) 3. Если пользователь **не указал** базу — сопоставь текущую ветку Git с `databases[].branches`: - Точное совпадение: ветка `dev` → `"branches": ["dev"]` - Glob-паттерн: ветка `release/2.1` → `"branches": ["release/*"]` 4. Если ветка не совпала — используй `default` 5. Если не найдено или неоднозначно — спроси пользователя 6. Если файл `.v8-project.json` не найден — спроси параметры подключения и предложи создать файл После выполнения: если использованная база не зарегистрирована — предложи добавить через `/db-list add`. ### Автоопределение платформы Если `v8path` не задан в конфиге: ```powershell $v8 = Get-ChildItem "C:\Program Files\1cv8\*\bin\1cv8.exe" | Sort-Object -Descending | Select-Object -First 1 ``` ## Операции ### Показать список баз Прочитай `.v8-project.json`, выведи таблицу: ``` ID Имя Тип Путь/Сервер По умолч. dev Разработка file C:\Bases\MyApp_Dev ✓ test Тестовая server srv01/MyApp_Test ``` ### Добавить базу Спроси у пользователя через AskUserQuestion: - id, name, type (file/server) - path (для file) или server + ref (для server) - user, password (необязательно) - aliases, branches (необязательно) Добавь в массив `databases`. Если это первая база — установи как `default`. ### Удалить базу Удали из массива `databases` по id. Если удаляемая была `default` — спросить новый default. ### Подробности по базе Выведи все поля конкретной базы. ## Формирование строки подключения Для использования в шаблонах команд других навыков: **Файловая база:** ``` /F "" ``` **Серверная база:** ``` /S "/" ``` **Аутентификация** (добавляется если user задан): ``` /N"" /P"" ``` > **Важно**: между `/N` и именем пробела нет. Между `/P` и паролем пробела нет. Если пароль пустой — опусти `/P` целиком.