Initial SFERA platform baseline
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
# 1C Metadata Object Catalog
|
||||
|
||||
This catalog is the product source of truth for the 1C metadata tree. It is backed by the official EDT mdclass metamodel and exposed by `/metadata/catalog`.
|
||||
|
||||
Primary sources:
|
||||
|
||||
- EDT mdclass package: https://edt.1c.ru/dev/edt/2024.2/apidocs/com/_1c/g5/v8/dt/metadata/mdclass/package-summary.html
|
||||
- EDT HTTPService: https://edt.1c.ru/dev/edt/2024.2/apidocs/com/_1c/g5/v8/dt/metadata/mdclass/HTTPService.html
|
||||
- 1C HTTP services guide: https://1c-dn.com/1c_enterprise/http_services/
|
||||
|
||||
Root configuration objects are maintained in `packages/one-c-normalizer/src/one_c_normalizer/metadata_catalog.py` as `METADATA_TYPE_SPECS` plus descriptions in `METADATA_TYPE_DESCRIPTIONS`.
|
||||
|
||||
Child metadata elements are maintained in the same module as `METADATA_CHILD_OBJECT_SPECS`.
|
||||
|
||||
Important documented structures:
|
||||
|
||||
- HTTP service: HTTP service -> URL templates -> methods -> module.
|
||||
- Web service: Web service -> operations -> parameters -> module.
|
||||
- Integration service: Integration service -> channels -> messages -> module.
|
||||
- Registers: register -> dimensions -> resources -> requisites -> forms -> commands -> templates -> rights -> record set/manager modules.
|
||||
- Catalogs/plans/documents: object -> requisites -> tabular sections -> forms -> commands -> templates -> rights -> modules, with type-specific groups such as movements or predefined data.
|
||||
@@ -0,0 +1,411 @@
|
||||
# Структура объектов метаданных 1С для дерева SFERA
|
||||
|
||||
Дата фиксации: 2026-05-09.
|
||||
|
||||
Назначение документа: единая опорная модель для загрузчика метаданных из 1С и дерева SFERA IDE. Реальные объекты, имена и состав узлов должны приходить из выгрузки конфигурации 1С/SIR. В коде интерфейса допустимо хранить только типы объектов, правила группировки, иконки и шаблоны подчинённых узлов.
|
||||
|
||||
## Источники
|
||||
|
||||
- 1C:Enterprise 8.3.23 Developer Guide, "Configuration objects": https://kb.1ci.com/1C_Enterprise_Platform/Guides/Developer_Guides/1C_Enterprise_8.3.23_Developer_Guide/Chapter_1._General_concepts/1.3._Basic_concepts/1.3.2._Configuration_objects/
|
||||
- 1C:Enterprise 8.3.23 Developer Guide, "The concept of configuration": https://kb.1ci.com/1C_Enterprise_Platform/Guides/Developer_Guides/1C_Enterprise_8.3.23_Developer_Guide/Chapter_1._General_concepts/1.3._Basic_concepts/1.3.1._The_concept_of__configuration_/
|
||||
- 1C:Enterprise 8.3.23 Developer Guide, "Modules": https://kb.1ci.com/1C_Enterprise_Platform/Guides/Developer_Guides/1C_Enterprise_8.3.23_Developer_Guide/Chapter_1._General_concepts/1.3._Basic_concepts/1.3.5._Modules/
|
||||
- 1C:Enterprise 8.3.23 Developer Guide, "Common attributes": https://kb.1ci.com/1C_Enterprise_Platform/Guides/Developer_Guides/1C_Enterprise_8.3.23_Developer_Guide/Chapter_5._Configuration_objects/5.3.__Common__configuration_branch/5.3.5._Common_attributes/
|
||||
- 1C:Enterprise 8.3.23 Developer Guide, "Functional options": https://kb.1ci.com/1C_Enterprise_Platform/Guides/Developer_Guides/1C_Enterprise_8.3.23_Developer_Guide/Chapter_5._Configuration_objects/5.3.__Common__configuration_branch/5.3.10._Functional_options_and_functional_option_parameters/
|
||||
- 1C:Enterprise 8.3.23 Developer Guide, "Commands": https://kb.1ci.com/1C_Enterprise_Platform/Guides/Developer_Guides/1C_Enterprise_8.3.23_Developer_Guide/Chapter_6._Command_interface/6.2._Global_command_interface_structure/6.2.2._Commands/
|
||||
- 1C:Enterprise 8.3.23 Developer Guide, "Templates": https://kb.1ci.com/1C_Enterprise_Platform/Guides/Developer_Guides/1C_Enterprise_8.3.23_Developer_Guide/Chapter_1._General_concepts/1.3._Basic_concepts/1.3.6._Templates/
|
||||
|
||||
Отдельной публичной документации `1C:Enterprise 8.5 Developer Guide` на kb.1ci.com при проверке не найдено. До появления официальной ветки 8.5 используем модель 8.3 как базовую и оставляем место под версионные отличия.
|
||||
|
||||
## Принципы дерева
|
||||
|
||||
1. В Designer/Конфигураторе типы объектов метаданных сгруппированы в дереве конфигурации.
|
||||
2. Объект метаданных описывает структуру и поведение, но не хранит конкретные пользовательские данные.
|
||||
3. Внутри объектов есть подчинённые объекты: реквизиты, табличные части, формы, команды, макеты, модули, измерения, ресурсы, права и т.д.
|
||||
4. SFERA не должна создавать плоский список. Дерево строится по типу объекта и подчинённым коллекциям.
|
||||
5. Узел `Задачи 1С` внутри конфигуратора является типом метаданных 1С. Узел `Задачи` верхнего уровня SFERA является системой разработки.
|
||||
|
||||
## Корневые ветки конфигурации
|
||||
|
||||
```text
|
||||
Конфигурация
|
||||
├── Общие
|
||||
├── Константы
|
||||
├── Справочники
|
||||
├── Документы
|
||||
├── Журналы документов
|
||||
├── Перечисления
|
||||
├── Отчеты
|
||||
├── Обработки
|
||||
├── Планы видов характеристик
|
||||
├── Планы счетов
|
||||
├── Планы видов расчета
|
||||
├── Регистры сведений
|
||||
├── Регистры накопления
|
||||
├── Регистры бухгалтерии
|
||||
├── Регистры расчета
|
||||
├── Бизнес-процессы
|
||||
├── Задачи
|
||||
├── Внешние источники данных
|
||||
└── Расширения конфигурации
|
||||
```
|
||||
|
||||
## Ветка "Общие"
|
||||
|
||||
```text
|
||||
Общие
|
||||
├── Подсистемы
|
||||
├── Общие модули
|
||||
├── Параметры сеанса
|
||||
├── Роли
|
||||
├── Общие реквизиты
|
||||
├── Планы обмена
|
||||
├── Критерии отбора
|
||||
├── Подписки на события
|
||||
├── Регламентные задания
|
||||
├── Функциональные опции
|
||||
├── Параметры функциональных опций
|
||||
├── Определяемые типы
|
||||
├── Хранилища настроек
|
||||
├── Общие команды
|
||||
├── Группы команд
|
||||
├── Общие формы
|
||||
├── Общие макеты
|
||||
├── Общие картинки
|
||||
├── XDTO-пакеты
|
||||
├── Web-сервисы
|
||||
├── HTTP-сервисы
|
||||
├── WS-ссылки
|
||||
├── WebSocket-клиенты
|
||||
├── Сервисы интеграции
|
||||
├── Цвета палитры
|
||||
├── Элементы стиля
|
||||
├── Стили
|
||||
└── Языки
|
||||
```
|
||||
|
||||
## Шаблоны подчинённых узлов
|
||||
|
||||
### Справочник
|
||||
|
||||
```text
|
||||
Справочники
|
||||
└── <ИмяСправочника>
|
||||
├── Реквизиты
|
||||
├── Табличные части
|
||||
│ └── <ИмяТабличнойЧасти>
|
||||
│ ├── Реквизиты
|
||||
│ └── Индексы
|
||||
├── Формы
|
||||
├── Команды
|
||||
├── Макеты
|
||||
├── Модуль объекта
|
||||
├── Модуль менеджера
|
||||
├── Права
|
||||
├── Предопределенные данные
|
||||
└── SFERA: Версии / Проверки / Инциденты / Знания
|
||||
```
|
||||
|
||||
### Документ
|
||||
|
||||
```text
|
||||
Документы
|
||||
└── <ИмяДокумента>
|
||||
├── Реквизиты
|
||||
├── Табличные части
|
||||
│ └── <ИмяТабличнойЧасти>
|
||||
│ ├── Реквизиты
|
||||
│ └── Индексы
|
||||
├── Формы
|
||||
├── Команды
|
||||
├── Макеты
|
||||
├── Движения
|
||||
│ ├── Регистры сведений
|
||||
│ ├── Регистры накопления
|
||||
│ ├── Регистры бухгалтерии
|
||||
│ └── Регистры расчета
|
||||
├── Последовательности
|
||||
├── Нумераторы
|
||||
├── Модуль объекта
|
||||
├── Модуль менеджера
|
||||
├── Права
|
||||
└── SFERA: Версии / Проверки / Инциденты / Знания
|
||||
```
|
||||
|
||||
### Журнал документов
|
||||
|
||||
```text
|
||||
Журналы документов
|
||||
└── <ИмяЖурнала>
|
||||
├── Графы
|
||||
├── Формы
|
||||
├── Команды
|
||||
├── Макеты
|
||||
├── Модуль менеджера
|
||||
└── Права
|
||||
```
|
||||
|
||||
### Перечисление
|
||||
|
||||
```text
|
||||
Перечисления
|
||||
└── <ИмяПеречисления>
|
||||
├── Значения
|
||||
├── Формы
|
||||
├── Команды
|
||||
├── Макеты
|
||||
├── Модуль менеджера
|
||||
└── Права
|
||||
```
|
||||
|
||||
### Отчет
|
||||
|
||||
```text
|
||||
Отчеты
|
||||
└── <ИмяОтчета>
|
||||
├── СКД
|
||||
│ ├── Наборы данных
|
||||
│ ├── Запросы
|
||||
│ ├── Поля
|
||||
│ ├── Ресурсы
|
||||
│ ├── Группировки
|
||||
│ ├── Отборы
|
||||
│ └── Варианты
|
||||
├── Реквизиты
|
||||
├── Табличные части
|
||||
├── Формы
|
||||
├── Команды
|
||||
├── Макеты
|
||||
├── Модуль объекта
|
||||
├── Модуль менеджера
|
||||
└── Права
|
||||
```
|
||||
|
||||
### Обработка
|
||||
|
||||
```text
|
||||
Обработки
|
||||
└── <ИмяОбработки>
|
||||
├── Реквизиты
|
||||
├── Табличные части
|
||||
├── Формы
|
||||
├── Команды
|
||||
├── Макеты
|
||||
├── Модуль объекта
|
||||
├── Модуль менеджера
|
||||
└── Права
|
||||
```
|
||||
|
||||
### План видов характеристик
|
||||
|
||||
```text
|
||||
Планы видов характеристик
|
||||
└── <ИмяПВХ>
|
||||
├── Реквизиты
|
||||
├── Табличные части
|
||||
├── Формы
|
||||
├── Команды
|
||||
├── Макеты
|
||||
├── Модуль объекта
|
||||
├── Модуль менеджера
|
||||
├── Предопределенные данные
|
||||
└── Права
|
||||
```
|
||||
|
||||
### План счетов
|
||||
|
||||
```text
|
||||
Планы счетов
|
||||
└── <ИмяПланаСчетов>
|
||||
├── Признаки учета
|
||||
├── Признаки учета субконто
|
||||
├── Табличные части
|
||||
├── Формы
|
||||
├── Команды
|
||||
├── Макеты
|
||||
├── Модуль объекта
|
||||
├── Модуль менеджера
|
||||
├── Предопределенные данные
|
||||
└── Права
|
||||
```
|
||||
|
||||
### План видов расчета
|
||||
|
||||
```text
|
||||
Планы видов расчета
|
||||
└── <ИмяПВР>
|
||||
├── Реквизиты
|
||||
├── Табличные части
|
||||
├── Вытесняющие виды расчета
|
||||
├── Ведущие виды расчета
|
||||
├── Базовые виды расчета
|
||||
├── Формы
|
||||
├── Команды
|
||||
├── Макеты
|
||||
├── Модуль объекта
|
||||
├── Модуль менеджера
|
||||
└── Права
|
||||
```
|
||||
|
||||
### Регистр сведений
|
||||
|
||||
```text
|
||||
Регистры сведений
|
||||
└── <ИмяРегистра>
|
||||
├── Измерения
|
||||
├── Ресурсы
|
||||
├── Реквизиты
|
||||
├── Формы
|
||||
├── Команды
|
||||
├── Макеты
|
||||
├── Модуль набора записей
|
||||
├── Модуль менеджера
|
||||
├── Кто пишет
|
||||
├── Кто читает
|
||||
└── Права
|
||||
```
|
||||
|
||||
### Регистр накопления
|
||||
|
||||
```text
|
||||
Регистры накопления
|
||||
└── <ИмяРегистра>
|
||||
├── Измерения
|
||||
├── Ресурсы
|
||||
├── Реквизиты
|
||||
├── Формы
|
||||
├── Команды
|
||||
├── Макеты
|
||||
├── Модуль набора записей
|
||||
├── Модуль менеджера
|
||||
├── Кто пишет
|
||||
├── Кто читает
|
||||
└── Права
|
||||
```
|
||||
|
||||
### Регистр бухгалтерии
|
||||
|
||||
```text
|
||||
Регистры бухгалтерии
|
||||
└── <ИмяРегистра>
|
||||
├── Измерения
|
||||
├── Ресурсы
|
||||
├── Реквизиты
|
||||
├── Признаки учета
|
||||
├── Признаки учета субконто
|
||||
├── Формы
|
||||
├── Команды
|
||||
├── Макеты
|
||||
├── Модуль набора записей
|
||||
├── Модуль менеджера
|
||||
└── Права
|
||||
```
|
||||
|
||||
### Регистр расчета
|
||||
|
||||
```text
|
||||
Регистры расчета
|
||||
└── <ИмяРегистра>
|
||||
├── Измерения
|
||||
├── Ресурсы
|
||||
├── Реквизиты
|
||||
├── Перерасчеты
|
||||
├── Формы
|
||||
├── Команды
|
||||
├── Макеты
|
||||
├── Модуль набора записей
|
||||
├── Модуль менеджера
|
||||
└── Права
|
||||
```
|
||||
|
||||
### Бизнес-процесс
|
||||
|
||||
```text
|
||||
Бизнес-процессы
|
||||
└── <ИмяБизнесПроцесса>
|
||||
├── Реквизиты
|
||||
├── Табличные части
|
||||
├── Карта маршрута
|
||||
├── Точки маршрута
|
||||
├── Формы
|
||||
├── Команды
|
||||
├── Макеты
|
||||
├── Модуль объекта
|
||||
├── Модуль менеджера
|
||||
└── Права
|
||||
```
|
||||
|
||||
### Задача 1С
|
||||
|
||||
```text
|
||||
Задачи
|
||||
└── <ИмяЗадачи>
|
||||
├── Реквизиты
|
||||
├── Табличные части
|
||||
├── Адресация
|
||||
├── Формы
|
||||
├── Команды
|
||||
├── Макеты
|
||||
├── Модуль объекта
|
||||
├── Модуль менеджера
|
||||
└── Права
|
||||
```
|
||||
|
||||
### Внешний источник данных
|
||||
|
||||
```text
|
||||
Внешние источники данных
|
||||
└── <ИмяИсточника>
|
||||
├── Таблицы
|
||||
│ └── <ИмяТаблицы>
|
||||
│ └── Поля
|
||||
├── Кубы
|
||||
├── Функции
|
||||
├── Формы
|
||||
├── Команды
|
||||
└── Макеты
|
||||
```
|
||||
|
||||
## Универсальные подчинённые узлы
|
||||
|
||||
Эти узлы могут встречаться у разных типов объектов. Загрузчик должен брать фактический состав из 1С, а не создавать все узлы всегда.
|
||||
|
||||
- `Реквизиты`
|
||||
- `Табличные части`
|
||||
- `Формы`
|
||||
- `Команды`
|
||||
- `Макеты`
|
||||
- `Модуль объекта`
|
||||
- `Модуль менеджера`
|
||||
- `Модуль набора записей`
|
||||
- `Права`
|
||||
- `Предопределенные данные`
|
||||
- `Измерения`
|
||||
- `Ресурсы`
|
||||
- `Графы`
|
||||
- `Значения`
|
||||
- `Перерасчеты`
|
||||
- `Движения`
|
||||
- `Адресация`
|
||||
- `СКД`
|
||||
- `URL-шаблоны`
|
||||
- `Методы`
|
||||
- `Контракты`
|
||||
- `Обработчики`
|
||||
|
||||
## Правило для SFERA
|
||||
|
||||
Загрузчик метаданных должен сохранять:
|
||||
|
||||
- `metadata_type`: тип объекта 1С;
|
||||
- `name`: имя объекта из конфигурации;
|
||||
- `synonym`: синоним;
|
||||
- `qualified_name`: полное имя вида `Документ.Имя`, `Справочник.Имя.Форма.ФормаЭлемента`;
|
||||
- `parent`: родительский узел;
|
||||
- `children`: подчинённые коллекции;
|
||||
- `module_kind`: тип модуля, если узел является модулем;
|
||||
- `rights`: права/ограничения доступа;
|
||||
- `extension_origin`: основная конфигурация или расширение;
|
||||
- `version_origin`: снимок/версия/задача;
|
||||
- `sfera_overlays`: проверки, инциденты, знания, владельцы, runtime-события.
|
||||
|
||||
UI-дерево обязано строиться из этой структуры. Любые демонстрационные имена объектов должны быть заменены данными из SIR после подключения реального загрузчика.
|
||||
@@ -0,0 +1,46 @@
|
||||
# Codex Instructions for SFERA Docs
|
||||
|
||||
## Frontend Contract Rules
|
||||
|
||||
Перед любым изменением frontend:
|
||||
|
||||
1. Прочитать `docs/frontend/SFERA_FRONTEND_PRODUCT_CONTRACT.md`.
|
||||
2. Прочитать `docs/frontend/SFERA_IDE_UI_CONTRACT.md`.
|
||||
3. Если меняется дерево 1С - прочитать `docs/frontend/SFERA_METADATA_TREE_CONTRACT.md`.
|
||||
4. Если меняются настройки проекта - прочитать `docs/frontend/SFERA_PROJECT_SETTINGS_CONTRACT.md`.
|
||||
5. Если контракт устарел - сначала обновить контракт, затем код.
|
||||
6. Все UI-изменения фиксировать в `docs/frontend/SFERA_FRONTEND_CHANGELOG.md`.
|
||||
|
||||
Frontend SFERA нельзя переводить в dashboard, CRM или файловый редактор. Принятая модель сохраняется:
|
||||
|
||||
- SFERA = metadata-first semantic configurator for 1C;
|
||||
- основной экран = IDE последнего проекта;
|
||||
- проект выбирается сверху;
|
||||
- левая панель = дерево текущего проекта;
|
||||
- основная конфигурация и расширения = configuration-like roots одного уровня;
|
||||
- центр = рабочая область;
|
||||
- правая панель = контекстные свойства;
|
||||
- низ = открытые объекты, tools и status.
|
||||
|
||||
Для 1C-specific поведения использовать официальную документацию:
|
||||
|
||||
- ITS;
|
||||
- v8.1c.ru;
|
||||
- 1C DN;
|
||||
- локальные knowledge packs.
|
||||
|
||||
ITS credentials передаются только через `.env.local`:
|
||||
|
||||
```dotenv
|
||||
SFERA_ITS_URL=<ITS_URL>
|
||||
SFERA_ITS_USERNAME=<ITS_USERNAME>
|
||||
SFERA_ITS_PASSWORD=<ITS_PASSWORD>
|
||||
```
|
||||
|
||||
Запрещено:
|
||||
|
||||
- хранить реальные ITS credentials в репозитории;
|
||||
- писать реальные логины или пароли в markdown;
|
||||
- писать реальные логины или пароли в Dockerfile;
|
||||
- выводить реальные логины или пароли в logs;
|
||||
- коммитить `.env.local` и `.env.*.local`.
|
||||
@@ -0,0 +1,104 @@
|
||||
# Architecture Index
|
||||
|
||||
## Core
|
||||
- SIR
|
||||
- Rust Parser
|
||||
- `rust/crates/bsl-parser`
|
||||
- JSON CLI contract: `cargo run -p bsl-parser -- <module.bsl>`
|
||||
- output sections: `procedures`, `calls`, `queries`, `writes`, `diagnostics`
|
||||
- Semantic Kernel
|
||||
- Projection Engine
|
||||
- Incremental Indexer
|
||||
- project-level delta rebuild for 1C `.bsl` and `.xml`
|
||||
- preserves metadata object links and object-level impact consistency
|
||||
- refreshes Neo4j projection after incremental updates for already-projected projects
|
||||
- Impact Engine
|
||||
- routine-level impact
|
||||
- 1C object-level impact from metadata owner to attributes/tabular sections/tabular section columns/modules/routines/tables/writes/forms/commands/command handlers
|
||||
- role access included in object impact
|
||||
- in-memory and Neo4j API surfaces
|
||||
|
||||
## 1C Native
|
||||
- Designer CLI adapter primary
|
||||
- EDT optional
|
||||
- EPF/CFE agent later
|
||||
- XML metadata extraction
|
||||
- Catalog / Document / Register / CommonModule
|
||||
- ExchangePlan / ScheduledJob / BusinessProcess / Task / Role
|
||||
- Form / Command / Attribute / TabularSection / Element
|
||||
- Role rights as `GRANTS_ACCESS` edges
|
||||
- metadata object `CONTAINS` BSL module links from 1C export paths
|
||||
- Form commands linked to BSL handlers with `HANDLES`
|
||||
- Object-scoped UI API for 1C forms, commands, elements, and handlers
|
||||
- Scheduled jobs linked to routines with `RUNS`
|
||||
- Integration topology from BSL and XML ExchangePlan metadata
|
||||
- BSL integrations as `INTEGRATION_ENDPOINT` nodes and `USES_INTEGRATION` edges
|
||||
|
||||
## Versioning
|
||||
- Semantic Object Store primary
|
||||
- Git optional adapter
|
||||
|
||||
## Knowledge
|
||||
- Global / Workspace / Project / Session scopes
|
||||
- Knowledge packs
|
||||
- BSP/vendor documentation pack import
|
||||
- pack/vendor metadata enrichment for records
|
||||
- Vendor configs
|
||||
- BSP detection
|
||||
- 1C schema knowledge coverage
|
||||
- review findings for schema nodes without knowledge records
|
||||
- Pattern mining
|
||||
- repeated table read/write patterns
|
||||
- repeated routine IO shapes
|
||||
|
||||
## Collaboration
|
||||
- Users / workspaces / projects
|
||||
- Tasks / active task context / change sessions
|
||||
- Comments / discussions
|
||||
- project comments API
|
||||
- target-scoped discussion lookup
|
||||
- Activity feed
|
||||
- 1C object ownership
|
||||
- project ownership API
|
||||
- object-scoped owner lookup
|
||||
- persisted ownership assignments
|
||||
|
||||
## Governance
|
||||
- RBAC
|
||||
- 1C role rights graph
|
||||
- object -> roles access API
|
||||
- role -> objects access API
|
||||
- project report security summary
|
||||
- review warnings for objects without role access
|
||||
- Integration governance
|
||||
- project report integration counters
|
||||
- review findings for outbound external integration endpoints
|
||||
- Schema governance
|
||||
- project report counters for attributes, tabular sections, columns, and empty tabular sections
|
||||
- review findings for tabular sections without columns
|
||||
- review hints for tabular sections without common subject columns
|
||||
- UI governance
|
||||
- review findings for form commands with missing BSL handlers
|
||||
- Ownership governance
|
||||
- project report ownership counters
|
||||
- review findings for 1C objects without an assigned owner
|
||||
- Privacy modes
|
||||
- Privacy classification
|
||||
- project privacy marker API
|
||||
- object-scoped privacy lookup
|
||||
- review hints for sensitive 1C fields without classification
|
||||
- project report privacy counters
|
||||
- AI governance
|
||||
- answer policy gate for knowledge context, privacy markers, token budget, and external model calls
|
||||
- AI usage governance
|
||||
- AI usage event API
|
||||
- project/user/model/operation usage summaries
|
||||
- token limit policy endpoint
|
||||
- project report AI usage counters
|
||||
- Token usage limits
|
||||
|
||||
## Operations
|
||||
- Jobs / workers / queues
|
||||
- Admin console
|
||||
- Observability
|
||||
- Marketplace/download center
|
||||
@@ -0,0 +1,72 @@
|
||||
# Codex UI Guidelines для SFERA
|
||||
|
||||
## Роль Codex
|
||||
|
||||
Codex должен работать как senior frontend engineer + product designer.
|
||||
|
||||
Он обязан:
|
||||
- соблюдать design system
|
||||
- использовать русский язык интерфейса и команд по умолчанию
|
||||
- предусматривать выбор английского языка интерфейса
|
||||
- не генерировать случайные стили
|
||||
- переиспользовать компоненты
|
||||
- писать TypeScript
|
||||
- не ломать архитектуру
|
||||
- добавлять loading/error/empty states
|
||||
- учитывать права доступа
|
||||
- думать о масштабируемости IDE/authoring-среды для 1С
|
||||
|
||||
## Перед генерацией экрана Codex должен определить
|
||||
|
||||
1. Какая 1С-сущность или IDE-сущность?
|
||||
2. Какие действия доступны пользователю?
|
||||
3. Какие статусы есть?
|
||||
4. Какие поля обязательные?
|
||||
5. Нужен ли editor, designer, graph, table, inspector или diff?
|
||||
6. Нужен ли AI Copilot?
|
||||
7. Нужны ли права доступа?
|
||||
8. Нужна ли история изменений?
|
||||
9. Нужна ли интеграция с внешним источником?
|
||||
10. Нужно ли preview/diff/apply для изменения 1С-кода или metadata?
|
||||
|
||||
## Запреты
|
||||
|
||||
Codex НЕ должен:
|
||||
- использовать inline styles
|
||||
- создавать хаотичные цвета
|
||||
- использовать Bootstrap
|
||||
- делать огромный компонент на 1000 строк
|
||||
- хранить business logic в JSX
|
||||
- игнорировать loading states
|
||||
- игнорировать empty states
|
||||
- генерировать mock API без явной пометки
|
||||
- смешивать entity-компоненты и базовый UI
|
||||
|
||||
## Обязательные states
|
||||
|
||||
Каждый экран должен иметь:
|
||||
|
||||
- loading
|
||||
- error
|
||||
- empty
|
||||
- success
|
||||
- permission denied
|
||||
- dirty form / unsaved changes
|
||||
- semantic diff / preview
|
||||
- guarded apply result
|
||||
|
||||
## UI quality checklist
|
||||
|
||||
Перед финалом Codex обязан проверить:
|
||||
|
||||
- интерфейс адаптивный
|
||||
- все кнопки имеют понятный action
|
||||
- статусы представлены Badge
|
||||
- опасные действия требуют confirmation
|
||||
- таблицы имеют фильтры
|
||||
- формы валидируются через Zod
|
||||
- редактор/дизайнер имеет problems panel и состояние несохранённых изменений
|
||||
- дата/время форматируются единообразно
|
||||
- AI действия показывают token/cost impact
|
||||
- AI-подсказки учитывают текущий BSL-код, объект 1С, переменные, реквизиты, формы и связи
|
||||
- есть audit trail для важных действий
|
||||
@@ -0,0 +1,34 @@
|
||||
# SPRINT 1 — SIR Core
|
||||
|
||||
## Цель
|
||||
|
||||
Создать `packages/sir`.
|
||||
|
||||
## Files
|
||||
|
||||
- `enums.py`
|
||||
- `source_ref.py`
|
||||
- `lineage.py`
|
||||
- `nodes.py`
|
||||
- `edges.py`
|
||||
- `diagnostics.py`
|
||||
- `references.py`
|
||||
- `snapshot.py`
|
||||
- `delta.py`
|
||||
- `validation.py`
|
||||
- `serialization.py`
|
||||
- `hashing.py`
|
||||
|
||||
## DoD
|
||||
|
||||
```bash
|
||||
pytest packages/sir/tests
|
||||
```
|
||||
|
||||
Должно проходить:
|
||||
|
||||
- snapshot validation ok;
|
||||
- dangling edge detected;
|
||||
- serialization roundtrip;
|
||||
- snapshot hash deterministic;
|
||||
- diagnostics/unresolved references serializable.
|
||||
@@ -0,0 +1,27 @@
|
||||
# SPRINT 2 — Rust BSL Parser MVP
|
||||
|
||||
## Цель
|
||||
|
||||
`rust/crates/bsl-parser` должен возвращать `ParsedSemanticUnit`:
|
||||
|
||||
- procedures;
|
||||
- functions;
|
||||
- calls;
|
||||
- queries;
|
||||
- query tables;
|
||||
- writes;
|
||||
- diagnostics.
|
||||
|
||||
## Важное
|
||||
|
||||
Поддержать RU/EN keywords.
|
||||
|
||||
## MVP ограничение
|
||||
|
||||
Можно начать с deterministic line-based parser. Позже заменить на полноценный lexer/parser.
|
||||
|
||||
## DoD
|
||||
|
||||
```bash
|
||||
cd rust && cargo test
|
||||
```
|
||||
@@ -0,0 +1,27 @@
|
||||
# SPRINT 3 — Semantic Kernel
|
||||
|
||||
## Цель
|
||||
|
||||
`packages/semantic-kernel` конвертирует parsed result в SIR snapshot.
|
||||
|
||||
## Вход
|
||||
|
||||
`.bsl` файлы.
|
||||
|
||||
## Выход
|
||||
|
||||
`SirSnapshot` с nodes/edges:
|
||||
|
||||
- MODULE;
|
||||
- PROCEDURE/FUNCTION;
|
||||
- QUERY;
|
||||
- TABLE/REGISTER;
|
||||
- DECLARES;
|
||||
- CALLS;
|
||||
- OWNS_QUERY;
|
||||
- READS_TABLE;
|
||||
- WRITES.
|
||||
|
||||
## DoD
|
||||
|
||||
`index_project(path)` возвращает валидный snapshot.
|
||||
@@ -0,0 +1,17 @@
|
||||
# SPRINT 4 — Neo4j Projection
|
||||
|
||||
## Цель
|
||||
|
||||
`SirSnapshot → Neo4j graph`.
|
||||
|
||||
## Queries
|
||||
|
||||
- find procedures;
|
||||
- find callers;
|
||||
- find callees;
|
||||
- find query tables;
|
||||
- find writes.
|
||||
|
||||
## Rule
|
||||
|
||||
Only `projection-engine` can mutate Neo4j.
|
||||
@@ -0,0 +1,13 @@
|
||||
# SPRINT 5 — Incremental Indexer
|
||||
|
||||
## Цель
|
||||
|
||||
Изменился один `.bsl` файл — пересобираем только fragment и применяем delta.
|
||||
|
||||
## Components
|
||||
|
||||
- source hash;
|
||||
- change detector;
|
||||
- SirDelta builder;
|
||||
- snapshot transition;
|
||||
- projection delta.
|
||||
@@ -0,0 +1,167 @@
|
||||
# Component Architecture
|
||||
|
||||
## Рекомендуемая структура
|
||||
|
||||
```txt
|
||||
src/
|
||||
app/
|
||||
(auth)/
|
||||
(workspace)/
|
||||
dashboard/
|
||||
projects/
|
||||
objects/
|
||||
graph/
|
||||
editor/
|
||||
designer/
|
||||
review/
|
||||
impact/
|
||||
knowledge/
|
||||
integrations/
|
||||
jobs/
|
||||
ai/
|
||||
settings/
|
||||
components/
|
||||
ui/
|
||||
layout/
|
||||
data-table/
|
||||
editor/
|
||||
designer/
|
||||
graph/
|
||||
command/
|
||||
ai/
|
||||
entities/
|
||||
one-c-projects/
|
||||
one-c-objects/
|
||||
bsl-modules/
|
||||
forms/
|
||||
reports/
|
||||
roles/
|
||||
features/
|
||||
one-c-projects/
|
||||
semantic-graph/
|
||||
bsl-editor/
|
||||
object-designer/
|
||||
form-designer/
|
||||
report-designer/
|
||||
impact-analysis/
|
||||
review/
|
||||
ai-authoring/
|
||||
ai-usage/
|
||||
integrations/
|
||||
scheduled-jobs/
|
||||
lib/
|
||||
api/
|
||||
auth/
|
||||
permissions/
|
||||
validators/
|
||||
formatters/
|
||||
one-c/
|
||||
store/
|
||||
styles/
|
||||
```
|
||||
|
||||
## Правило разделения
|
||||
|
||||
### `components/ui`
|
||||
|
||||
Только базовые shadcn-like компоненты:
|
||||
- Button
|
||||
- Input
|
||||
- Dialog
|
||||
- Drawer
|
||||
- Badge
|
||||
- Card
|
||||
- Tabs
|
||||
|
||||
### `components/editor`
|
||||
|
||||
IDE primitives:
|
||||
- BslEditor
|
||||
- ProblemsPanel
|
||||
- ReferencesPanel
|
||||
- OutlinePanel
|
||||
- SemanticDiffView
|
||||
- CompletionList
|
||||
|
||||
### `components/designer`
|
||||
|
||||
Object/form/report designer primitives:
|
||||
- ObjectTree
|
||||
- MetadataInspector
|
||||
- FormCanvas
|
||||
- FormElementPalette
|
||||
- PropertiesInspector
|
||||
- ReportDesigner
|
||||
|
||||
### `components/entities`
|
||||
|
||||
Переиспользуемые 1С entity-компоненты:
|
||||
- OneCProjectCard
|
||||
- OneCObjectBadge
|
||||
- ObjectKindBadge
|
||||
- RoleAccessBadge
|
||||
- ReviewSeverityBadge
|
||||
- SnapshotStatusBadge
|
||||
|
||||
### `features`
|
||||
|
||||
Полные feature-модули:
|
||||
- список 1С-проектов
|
||||
- дерево конфигурации
|
||||
- карточка объекта 1С
|
||||
- BSL editor workspace
|
||||
- дизайнер формы
|
||||
- дизайнер отчёта
|
||||
- semantic graph
|
||||
- impact analysis
|
||||
- AI authoring panel
|
||||
- AI usage dashboard
|
||||
|
||||
## Data Table стандарт
|
||||
|
||||
Каждая таблица должна иметь:
|
||||
|
||||
- search
|
||||
- filters
|
||||
- saved views
|
||||
- column visibility
|
||||
- sorting
|
||||
- pagination / virtualization
|
||||
- row actions
|
||||
- bulk actions
|
||||
- export
|
||||
- audit-friendly row details
|
||||
|
||||
## IDE Page Standard
|
||||
|
||||
Каждая IDE-страница строится по шаблону:
|
||||
|
||||
```txt
|
||||
PageHeader
|
||||
Toolbar
|
||||
ObjectTree
|
||||
PrimaryEditorOrDesigner
|
||||
RightInspector
|
||||
ProblemsPanel
|
||||
SemanticDiffPreview
|
||||
AIAssistantContext
|
||||
```
|
||||
|
||||
## Naming conventions
|
||||
|
||||
```txt
|
||||
OneCProjectList
|
||||
OneCObjectTree
|
||||
BslEditorWorkspace
|
||||
BslCompletionPanel
|
||||
FormDesignerCanvas
|
||||
MetadataPropertiesInspector
|
||||
SemanticDiffPreview
|
||||
AiAuthoringPanel
|
||||
```
|
||||
|
||||
Не использовать абстрактные имена вроде:
|
||||
- MainTable
|
||||
- CustomCard
|
||||
- ModalWindow
|
||||
- BigForm
|
||||
@@ -0,0 +1,207 @@
|
||||
# Design System SFERA
|
||||
|
||||
## UI концепция
|
||||
|
||||
**SFERA — Enterprise AI Operating System**
|
||||
|
||||
Интерфейс должен ощущаться как:
|
||||
- Linear
|
||||
- Stripe Dashboard
|
||||
- Notion
|
||||
- Attio
|
||||
- ClickUp 3.0
|
||||
- Plane
|
||||
- VS Code / JetBrains IDE для authoring-сценариев 1С
|
||||
|
||||
SFERA не CRM. Основной UI — это современная IDE/операционная среда для 1С: semantic workspace, редактор кода, дерево объектов, дизайнер форм/отчётов, инспектор свойств, diff/preview/apply и AI-помощник.
|
||||
|
||||
Классический 1С Конфигуратор используется как reference workflow, а не как visual style. Мы берём рабочие паттерны 1С-разработчика: дерево конфигурации, вкладки объектов, модуль/форма/свойства/события, правый инспектор, нижние панели диагностики и поиск. Визуально это должно быть современно, плотно, спокойно и удобно для долгой работы.
|
||||
|
||||
## Визуальный стиль
|
||||
|
||||
- чистый enterprise minimalism
|
||||
- dark/light режим
|
||||
- спокойные нейтральные цвета
|
||||
- акцентный цвет для действий
|
||||
- cards with soft shadows
|
||||
- rounded-2xl
|
||||
- минимальный glassmorphism только для важных overlay
|
||||
- плотная, но не перегруженная информационная сетка
|
||||
|
||||
## Layout principles
|
||||
|
||||
### Главная структура
|
||||
|
||||
```txt
|
||||
AppShell
|
||||
├── Sidebar
|
||||
├── Topbar
|
||||
├── CommandPalette
|
||||
├── Workspace
|
||||
│ ├── PageHeader
|
||||
│ ├── Toolbar
|
||||
│ ├── ContentGrid
|
||||
│ └── RightInspector
|
||||
├── EditorWorkspace
|
||||
│ ├── ObjectTree
|
||||
│ ├── WorkspaceModeBar
|
||||
│ ├── CodeEditor
|
||||
│ ├── FormDesigner
|
||||
│ ├── PropertiesInspector
|
||||
│ ├── EventsInspector
|
||||
│ ├── VersionsPanel
|
||||
│ ├── DocumentationPanel
|
||||
│ ├── KnowledgePanel
|
||||
│ ├── LearningPanel
|
||||
│ ├── ProblemsPanel
|
||||
│ └── SemanticDiff
|
||||
└── AI Copilot Panel
|
||||
```
|
||||
|
||||
## Основные зоны
|
||||
|
||||
### Sidebar
|
||||
|
||||
- Dashboard
|
||||
- Проекты 1С
|
||||
- Объекты 1С
|
||||
- Редактор BSL
|
||||
- Дизайнер объектов
|
||||
- Дизайнер форм
|
||||
- Отчёты
|
||||
- Семантический граф
|
||||
- Impact analysis
|
||||
- Review
|
||||
- Знания
|
||||
- AI
|
||||
- Интеграции
|
||||
- Регламентные задания
|
||||
- Настройки
|
||||
|
||||
### Topbar
|
||||
|
||||
- поиск
|
||||
- command palette
|
||||
- быстрые действия
|
||||
- уведомления
|
||||
- профиль
|
||||
- переключение проекта/организации
|
||||
|
||||
### Right Inspector
|
||||
|
||||
Контекстная панель для:
|
||||
- объекта 1С
|
||||
- процедуры или функции
|
||||
- формы, команды или элемента формы
|
||||
- реквизита или табличной части
|
||||
- отчёта
|
||||
- AI анализа
|
||||
- истории изменений
|
||||
- связанных сущностей
|
||||
|
||||
## Компонентные правила
|
||||
|
||||
### Карточки
|
||||
|
||||
- `rounded-2xl`
|
||||
- `border`
|
||||
- `bg-card`
|
||||
- `shadow-sm`
|
||||
- padding минимум `p-4`
|
||||
|
||||
### Таблицы
|
||||
|
||||
- sticky header
|
||||
- фильтры
|
||||
- saved views
|
||||
- быстрый поиск
|
||||
- column visibility
|
||||
- bulk actions
|
||||
- inline status badge
|
||||
- row details через drawer/inspector
|
||||
|
||||
### Формы
|
||||
|
||||
- разделять на logical sections
|
||||
- использовать progressive disclosure
|
||||
- показывать validation inline
|
||||
- сохранять drafts
|
||||
- audit trail для важных изменений
|
||||
|
||||
## Цветовые токены
|
||||
|
||||
```txt
|
||||
background
|
||||
foreground
|
||||
card
|
||||
card-foreground
|
||||
muted
|
||||
muted-foreground
|
||||
border
|
||||
input
|
||||
primary
|
||||
primary-foreground
|
||||
secondary
|
||||
destructive
|
||||
warning
|
||||
success
|
||||
info
|
||||
```
|
||||
|
||||
## Статусы
|
||||
|
||||
### Задача
|
||||
|
||||
```txt
|
||||
Новая
|
||||
В работе
|
||||
На проверке
|
||||
Выполнена
|
||||
Отменена
|
||||
Просрочена
|
||||
```
|
||||
|
||||
### Сделка
|
||||
|
||||
```txt
|
||||
Активна
|
||||
Неактивна
|
||||
На бординге
|
||||
Ожидает документов
|
||||
Приостановлена
|
||||
Закрыта
|
||||
```
|
||||
|
||||
### Терминал
|
||||
|
||||
```txt
|
||||
Подключен
|
||||
Не подключен
|
||||
Отключен банком
|
||||
Ошибка настройки
|
||||
```
|
||||
|
||||
## AI UX
|
||||
|
||||
AI должен быть не отдельной страницей, а частью workflow:
|
||||
|
||||
- AI Copilot справа
|
||||
- подсказки в карточках
|
||||
- inline completion в BSL editor
|
||||
- context-aware suggestions по текущим переменным, реквизитам, табличным частям, форме и объекту 1С
|
||||
- генерация кода, объектов, форм, команд и отчётов через preview/diff/apply
|
||||
- объяснение текущего кода и структуры объекта
|
||||
- генерация безопасных изменений 1С
|
||||
- продолжение кода по текущему контексту
|
||||
- объяснение изменений
|
||||
- статистика токенов и лимитов
|
||||
|
||||
## Knowledge, Docs, Training UX
|
||||
|
||||
SFERA должна показывать знания рядом с местом работы, а не прятать их в отдельную wiki:
|
||||
|
||||
- документация объекта, формы, отчёта и бизнес-правила доступны из IDE-контекста;
|
||||
- база знаний связывается с lineage объекта, процедурами, запросами и событиями формы;
|
||||
- training/onboarding показывает рекомендации по текущему коду, стандартам команды и типовым ошибкам;
|
||||
- AI отвечает только с учётом доступных знаний, прав и privacy policy;
|
||||
- history/versions объясняют, почему объект менялся, какими задачами и решениями это было связано.
|
||||
@@ -0,0 +1,81 @@
|
||||
# Frontend Stack для SFERA
|
||||
|
||||
## Core
|
||||
|
||||
```txt
|
||||
Next.js
|
||||
React
|
||||
TypeScript
|
||||
Tailwind CSS
|
||||
shadcn/ui
|
||||
Radix UI
|
||||
lucide-react
|
||||
```
|
||||
|
||||
## Data layer
|
||||
|
||||
```txt
|
||||
TanStack Query
|
||||
Zustand
|
||||
Zod
|
||||
React Hook Form
|
||||
```
|
||||
|
||||
## Tables / Grids
|
||||
|
||||
```txt
|
||||
TanStack Table
|
||||
TanStack Virtual
|
||||
```
|
||||
|
||||
Использовать для:
|
||||
- 1С-проектов
|
||||
- объектов 1С
|
||||
- процедур и функций
|
||||
- форм и команд
|
||||
- ролей и прав
|
||||
- review findings
|
||||
- журналов изменений
|
||||
- AI usage статистики
|
||||
- лимитов
|
||||
- интеграций
|
||||
|
||||
## Charts
|
||||
|
||||
```txt
|
||||
Recharts
|
||||
Apache ECharts
|
||||
```
|
||||
|
||||
Для простых dashboard — Recharts.
|
||||
Для тяжелой аналитики и сложных графиков — ECharts.
|
||||
|
||||
## Animations
|
||||
|
||||
```txt
|
||||
Framer Motion
|
||||
```
|
||||
|
||||
Использовать аккуратно:
|
||||
- открытие панелей
|
||||
- command palette
|
||||
- sidebar
|
||||
- drawer
|
||||
- карточки задач
|
||||
- state transitions
|
||||
|
||||
## UI generation tools
|
||||
|
||||
```txt
|
||||
v0 by Vercel
|
||||
shadcn/ui
|
||||
shadcn/studio
|
||||
Cursor
|
||||
Codex
|
||||
```
|
||||
|
||||
## Почему не Ant Design / Bootstrap
|
||||
|
||||
Ant Design подходит для быстрых корпоративных систем, но SFERA должна выглядеть как современный AI enterprise workspace, а не как старая админка.
|
||||
|
||||
Bootstrap и старые admin templates не использовать как основу.
|
||||
@@ -0,0 +1,391 @@
|
||||
# SFERA Frontend Changelog
|
||||
|
||||
## Правило
|
||||
|
||||
Каждое изменение frontend должно фиксироваться здесь.
|
||||
|
||||
Формат:
|
||||
|
||||
```text
|
||||
Дата:
|
||||
Автор/Codex task:
|
||||
Что изменено:
|
||||
Какие файлы:
|
||||
Затронутые экраны:
|
||||
Изменен ли UI contract:
|
||||
Нужны ли новые smoke tests:
|
||||
```
|
||||
|
||||
## Записи
|
||||
|
||||
### 2026-05-11
|
||||
|
||||
Initial UI contract created.
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Корневой маршрут frontend переведен на IDE последнего проекта; существующий экран настройки проекта вынесен на `/project-settings`; Top Project Bar дополнен настройками проекта, созданием проекта, уведомлениями и профилем; smoke-тесты обновлены под IDE-first модель и новый route настроек проекта.
|
||||
Какие файлы: `frontend/sfera-web/src/app/page.tsx`, `frontend/sfera-web/src/app/project-settings/page.tsx`, `frontend/sfera-web/src/components/layout/app-shell.tsx`, `frontend/sfera-web/src/lib/i18n.ts`, `frontend/sfera-web/scripts/smoke-editor-modes.mjs`, `frontend/sfera-web/scripts/smoke-project-setup.mjs`
|
||||
Затронутые экраны: основной вход frontend, IDE workspace, project settings
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, HTML smoke покрывает redirect `/` -> IDE и доступность `/project-settings`
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Fallback metadata tree приведен к контрактной модели: проект содержит top-level `Основная конфигурация`, `Расширение: <Имя>`, `SFERA`, `Среды`; расширение использует тот же configuration-like каркас без fake-объектов.
|
||||
Какие файлы: `frontend/sfera-web/src/components/editor/ide-workspace.tsx`, `frontend/sfera-web/scripts/smoke-editor-modes.mjs`
|
||||
Затронутые экраны: IDE workspace, левая панель metadata tree
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, HTML smoke проверяет ключевые top-level узлы левой панели
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Server-side metadata tree приведен к той же top-level модели для lazy/large-project режима; пути раскрытия теперь идут через `main-configuration`, а lazy tree сохраняет раскрытие `Основная конфигурация`.
|
||||
Какие файлы: `services/api-server/src/api_server/main.py`, `services/api-server/tests/test_api.py`, `frontend/sfera-web/src/components/editor/lazy-metadata-tree.tsx`
|
||||
Затронутые экраны: IDE workspace, lazy metadata tree
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, API tests покрывают структуру, HTML smoke покрывает видимые top-level узлы
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Project Settings sidebar переименован из wizard в контрактный экран настроек, добавлен список разделов настроек, AI policy и ITS/documentation access с безопасными env placeholders без реальных credentials; default privacy для нового fallback проекта изменен на `METADATA_ONLY`.
|
||||
Какие файлы: `frontend/sfera-web/src/components/project-setup/project-setup-client.tsx`, `frontend/sfera-web/src/app/project-settings/page.tsx`, `frontend/sfera-web/scripts/smoke-editor-modes.mjs`
|
||||
Затронутые экраны: Project Settings, Top Project Bar, Import Center
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, HTML smoke проверяет Project Settings и ITS env placeholders
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Lazy metadata tree получил полный маппинг contract-first иконок на существующие 1C SVG assets, чтобы top-level проект, основная конфигурация, ветки metadata, группы макетов/событий/движений, бизнес-процессы, задачи и внешние источники не ссылались на отсутствующие файлы.
|
||||
Какие файлы: `frontend/sfera-web/src/components/editor/lazy-metadata-tree.tsx`
|
||||
Затронутые экраны: IDE workspace, lazy metadata tree
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, существующий editor smoke покрывает lazy metadata tree shell
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Lazy metadata tree очищен от старого `dashboard` route variant; все переходы из дерева теперь строятся напрямую на `/editor`, включая SFERA overview как `mode=overview`.
|
||||
Какие файлы: `frontend/sfera-web/src/components/editor/lazy-metadata-tree.tsx`, `frontend/sfera-web/src/components/editor/ide-workspace.tsx`
|
||||
Затронутые экраны: IDE workspace, lazy metadata tree
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, существующий editor smoke покрывает IDE route
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: `/project-settings` закреплен как экран Project Settings при любом статусе проекта; INDEXED-проект больше не подменяет настройки старым workbench, поэтому настройки проекта остаются доступны из Top Project Bar по контракту.
|
||||
Какие файлы: `frontend/sfera-web/src/components/project-setup/project-setup-client.tsx`, `frontend/sfera-web/scripts/smoke-project-setup.mjs`
|
||||
Затронутые экраны: Project Settings
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, project setup smoke обновлен под contract-first Project Settings route
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: IDE workspace получил contract-first управление панелями: левая навигация сворачивается и меняет ширину, правая Context Inspector и нижняя tool panel сворачиваются, добавлены горячие клавиши `Alt+1`, `Alt+2`, `Alt+3`, `Ctrl+Tab`, `Ctrl+Shift+Tab`, `Ctrl+W`.
|
||||
Какие файлы: `frontend/sfera-web/src/components/editor/ide-workspace.tsx`, `frontend/sfera-web/scripts/smoke-editor-modes.mjs`
|
||||
Затронутые экраны: IDE workspace, Left Navigation Panel, Main Workspace, Right Context Inspector, Bottom Tool Panel, Open Objects Bar
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, editor smoke расширен проверкой contract layout markers
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Runtime smoke расширен интерактивной проверкой contract controls: `Alt+1`, `Alt+2`, `Alt+3` скрывают соответствующие панели, rail/buttons возвращают их, `Ctrl+Tab` и `Ctrl+Shift+Tab` переключают открытые объекты; после переходов между editor modes нижняя tool panel сворачивается для focused editor workflows.
|
||||
Какие файлы: `frontend/sfera-web/src/components/editor/ide-workspace.tsx`, `frontend/sfera-web/scripts/smoke-editor-runtime.mjs`
|
||||
Затронутые экраны: IDE workspace, панель открытых объектов, левая/правая/нижняя панели
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, runtime smoke обновлен
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Open Objects Bar получил fallback-набор IDE tabs (`Обзор`, `Модуль`, `Форма`, `TASK-123`) для пустого или минимального metadata tree, чтобы workspace сохранял contract-first модель переключаемых открытых объектов.
|
||||
Какие файлы: `frontend/sfera-web/src/components/editor/ide-workspace.tsx`, `frontend/sfera-web/scripts/smoke-editor-runtime.mjs`
|
||||
Затронутые экраны: IDE workspace, Open Objects Bar
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, runtime smoke проверяет минимум два переключаемых объекта
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: IDE workspace убран жесткий `min-h-[760px]`, из-за которого нижняя tool panel и fixed status bar могли перекрывать рабочую область и перехватывать клики в metadata editor на невысоких viewport.
|
||||
Какие файлы: `frontend/sfera-web/src/components/editor/ide-workspace.tsx`
|
||||
Затронутые экраны: IDE workspace, Main Workspace, Bottom Tool Panel, Status Bar
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, runtime smoke ловит перекрытие кликов
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Top Project Bar получил настоящий global search input; IDE workspace обрабатывает `Ctrl+K` для фокуса глобального поиска и `F5` для запуска проверки с открытием bottom tool panel и статусом запуска.
|
||||
Какие файлы: `frontend/sfera-web/src/components/layout/app-shell.tsx`, `frontend/sfera-web/src/components/editor/ide-workspace.tsx`, `frontend/sfera-web/scripts/smoke-editor-runtime.mjs`
|
||||
Затронутые экраны: Top Project Bar, IDE workspace, Bottom Tool Panel
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, runtime smoke расширен проверкой `Ctrl+K` и `F5`
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Fallback Left Navigation Panel получил поиск по дереву, фильтры `Все / 1C / SFERA / Среды`, отдельный scroll marker и сохранение раскрытия веток через `localStorage`.
|
||||
Какие файлы: `frontend/sfera-web/src/components/editor/ide-workspace.tsx`, `frontend/sfera-web/scripts/smoke-editor-modes.mjs`, `frontend/sfera-web/scripts/smoke-editor-runtime.mjs`
|
||||
Затронутые экраны: IDE workspace, Left Navigation Panel
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, editor smoke и runtime smoke расширены проверкой поиска/фильтров fallback tree
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Open Objects Bar получил pin/close controls, `Ctrl+W` закрывает активный незакрепленный объект, состояние закрытых и закрепленных объектов сохраняется в `localStorage` и восстанавливается для проекта.
|
||||
Какие файлы: `frontend/sfera-web/src/components/editor/ide-workspace.tsx`, `frontend/sfera-web/scripts/smoke-editor-modes.mjs`, `frontend/sfera-web/scripts/smoke-editor-runtime.mjs`
|
||||
Затронутые экраны: IDE workspace, Open Objects Bar
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, editor smoke и runtime smoke расширены проверкой pin/close/persist поведения
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Open Objects Bar поднят над рабочей областью (`z-index`) и сделан `shrink-0`, чтобы Monaco/editor canvas не перекрывал pin/close controls и не перехватывал клики.
|
||||
Какие файлы: `frontend/sfera-web/src/components/editor/ide-workspace.tsx`
|
||||
Затронутые экраны: IDE workspace, Open Objects Bar
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, runtime smoke ловит перекрытие кликов
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Project Settings получил недостающие контрактные секции `Пользователи и доступ`, `Интеграции задач`, `Docker/runtime adapter`, `Audit`, `Backup/restore`; sidebar anchors обновлены под эти секции, без хранения credentials.
|
||||
Какие файлы: `frontend/sfera-web/src/components/project-setup/project-setup-client.tsx`, `frontend/sfera-web/scripts/smoke-editor-modes.mjs`, `frontend/sfera-web/scripts/smoke-project-setup.mjs`
|
||||
Затронутые экраны: Project Settings
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, существующие smoke расширены проверкой полного набора settings sections
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Status Bar приведен к полному набору контрактных индикаторов, добавлен `Current user`, стабильные `data-status-item` markers и горизонтальный overflow для узких viewport.
|
||||
Какие файлы: `frontend/sfera-web/src/components/layout/app-shell.tsx`, `frontend/sfera-web/scripts/smoke-editor-modes.mjs`, `frontend/sfera-web/scripts/smoke-editor-runtime.mjs`
|
||||
Затронутые экраны: IDE workspace, Status Bar
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, editor smoke и runtime smoke расширены проверкой status markers
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Источники структуры 1С дополнены `REFERENCE_CONFIGURATION` end-to-end: backend import source registry/preflight, frontend selector/action button/source configurator и smoke checks.
|
||||
Какие файлы: `services/api-server/src/api_server/main.py`, `frontend/sfera-web/src/components/project-setup/project-setup-client.tsx`, `frontend/sfera-web/scripts/smoke-editor-modes.mjs`, `frontend/sfera-web/scripts/smoke-project-setup.mjs`
|
||||
Затронутые экраны: Project Settings, Import Center
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, существующие smoke расширены проверкой reference configuration source
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Metadata tree дополнен контрактными configuration-like roots для context/reference источников: при `CONTEXT_ONLY` добавляется `Context-only configuration`, при `REFERENCE_CONFIGURATION` добавляется `Reference configuration` с тем же каркасом веток, что у основной конфигурации/расширений.
|
||||
Какие файлы: `services/api-server/src/api_server/main.py`, `services/api-server/tests/test_api.py`
|
||||
Затронутые экраны: IDE workspace, левая панель metadata tree (lazy/server data)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, покрыто API tests для metadata tree response
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: В `LazyMetadataTree` добавлен настоящий virtual scroll для списка видимых узлов (viewport-based windowing с overscan), чтобы левая панель масштабировалась на больших деревьях без полной отрисовки всех root-level элементов.
|
||||
Какие файлы: `frontend/sfera-web/src/components/editor/lazy-metadata-tree.tsx`
|
||||
Затронутые экраны: IDE workspace, левая панель metadata tree (lazy mode)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, существующий `smoke:editor` проходит; typecheck зеленый
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Runtime smoke расширен проверкой контрактного scroll-контейнера левой панели (`data-virtual-scroll` для lazy tree или `data-fallback-tree-scroll` для fallback tree), чтобы регресс virtual scroll ловился автоматически.
|
||||
Какие файлы: `frontend/sfera-web/scripts/smoke-editor-runtime.mjs`
|
||||
Затронутые экраны: IDE workspace, левая панель metadata tree
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлен существующий runtime smoke
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: API test coverage дерева метаданных расширено для `CONTEXT_CONFIGURATION`: добавлен тест, подтверждающий появление `Context-only configuration` как configuration-like root с контрактным набором первых веток (`Сведения`, `Общие`, `Константы`).
|
||||
Какие файлы: `services/api-server/tests/test_api.py`
|
||||
Затронутые экраны: IDE workspace, левая панель metadata tree (server/lazy data)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, покрыто API tests
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: В `LazyMetadataTree` добавлены контрактные фильтры левой панели (`Все / 1C / SFERA / Среды`) для lazy/server режима, чтобы поведение фильтрации было единым с fallback tree.
|
||||
Какие файлы: `frontend/sfera-web/src/components/editor/lazy-metadata-tree.tsx`
|
||||
Затронутые экраны: IDE workspace, левая панель metadata tree (lazy mode)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, существующий runtime smoke проходит; typecheck зеленый
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Runtime smoke расширен проверкой lazy-tree фильтров: при наличии `data-lazy-tree-filter` тест переключает `SFERA`/`All` и подтверждает доступность узла `SFERA`, чтобы зафиксировать поведение новых фильтров.
|
||||
Какие файлы: `frontend/sfera-web/scripts/smoke-editor-runtime.mjs`
|
||||
Затронутые экраны: IDE workspace, левая панель metadata tree (lazy mode)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлен существующий runtime smoke
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Project Settings runtime smoke усилен проверкой отображения `.env.local` в секции `ITS/documentation access`, чтобы policy "credentials only via .env.local" оставалась закрепленной на UI-уровне.
|
||||
Какие файлы: `frontend/sfera-web/scripts/smoke-project-setup.mjs`
|
||||
Затронутые экраны: Project Settings (`ITS/documentation access`)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлен существующий project-setup runtime smoke
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: HTML smoke (`smoke:editor`) усилен контрактными маркерами Top Project Bar на корневом IDE-экране: добавлены проверки `Компания`, `Среда`, `Задача`, `Ctrl+K`, `API доступен`, `Агент онлайн`.
|
||||
Какие файлы: `frontend/sfera-web/scripts/smoke-editor-modes.mjs`
|
||||
Затронутые экраны: основной IDE экран, Top Project Bar
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлен существующий editor smoke
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: HTML smoke для `/project-settings` расширен security-маркерами секции `ITS/documentation access`: добавлены проверки `.env.local` и placeholder `<set locally>` вместе с `SFERA_ITS_USERNAME`.
|
||||
Какие файлы: `frontend/sfera-web/scripts/smoke-editor-modes.mjs`
|
||||
Затронутые экраны: Project Settings (`ITS/documentation access`)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлен существующий editor smoke
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Добавлен защитный API-тест на metadata tree: для обычных источников (`XML_DUMP`) в корне проекта не должны появляться contract-only roots `CONTEXT_CONFIGURATION` и `REFERENCE_CONFIGURATION`.
|
||||
Какие файлы: `services/api-server/tests/test_api.py`
|
||||
Затронутые экраны: IDE workspace, левая панель metadata tree (server/lazy data)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, покрыто API tests
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Runtime smoke расширен проверкой горячей клавиши `Ctrl+W`: тест выбирает немодульный открытый объект (если доступен), закрывает его через `Ctrl+W` и проверяет, что tab удален без runtime ошибок; сценарий стабилизирован возвратом к module-tab при необходимости.
|
||||
Какие файлы: `frontend/sfera-web/scripts/smoke-editor-runtime.mjs`
|
||||
Затронутые экраны: IDE workspace, Open Objects Bar, горячие клавиши
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлен существующий runtime smoke
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: ITS security-policy smoke-покрытие расширено: в HTML smoke добавлены `SFERA_ITS_URL`/`SFERA_ITS_PASSWORD`, в runtime smoke `Project Settings` добавлены проверки `SFERA_ITS_URL`, `SFERA_ITS_PASSWORD` и presence примера ITS URL через `input[value*='its.1c.ru/db/v838doc']`.
|
||||
Какие файлы: `frontend/sfera-web/scripts/smoke-editor-modes.mjs`, `frontend/sfera-web/scripts/smoke-project-setup.mjs`
|
||||
Затронутые экраны: Project Settings (`ITS/documentation access`)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлены существующие `smoke:editor` и `smoke:project-setup`
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: HTML smoke расширен англоязычной проверкой корневого IDE-экрана (`lang=en`) для Top Project Bar: `Workspace`, `Env`, `Task`, `Ctrl+K`, `API online`, `Agent online`.
|
||||
Какие файлы: `frontend/sfera-web/scripts/smoke-editor-modes.mjs`
|
||||
Затронутые экраны: основной IDE экран, Top Project Bar (EN UI)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлен существующий editor smoke
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Добавлен API-тест порядка top-level узлов metadata tree: при `CONTEXT_ONLY` и `REFERENCE_CONFIGURATION` соответствующие configuration-like roots должны располагаться перед `SFERA` в корне проекта.
|
||||
Какие файлы: `services/api-server/tests/test_api.py`
|
||||
Затронутые экраны: IDE workspace, левая панель metadata tree (server/lazy data)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, покрыто API tests
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Runtime smoke расширен проверкой восстановления `Open Objects Bar` после перезагрузки: тест сохраняет состояние закрытых/закрепленных табов, делает `page.reload`, подтверждает сохранность `localStorage` и проверяет, что закрытый таб снова скрыт после применения состояния.
|
||||
Какие файлы: `frontend/sfera-web/scripts/smoke-editor-runtime.mjs`
|
||||
Затронутые экраны: IDE workspace, Open Objects Bar
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлен существующий runtime smoke
|
||||
|
||||
Дата: 2026-05-11
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: API tests для `CONTEXT_CONFIGURATION` и `REFERENCE_CONFIGURATION` расширены проверкой lazy-режима (`object_limit_per_branch=0`): условные configuration-like roots должны присутствовать не только в полном, но и в lazy metadata tree response.
|
||||
Какие файлы: `services/api-server/tests/test_api.py`
|
||||
Затронутые экраны: IDE workspace, левая панель metadata tree (server/lazy data)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, покрыто API tests
|
||||
|
||||
Дата: 2026-05-12
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: API-тест порядка корневых узлов расширен и на lazy metadata tree: для `CONTEXT_ONLY` и `REFERENCE_CONFIGURATION` условные configuration-like roots должны располагаться перед `SFERA` как в полном, так и в lazy-ответе (`object_limit_per_branch=0`).
|
||||
Какие файлы: `services/api-server/tests/test_api.py`
|
||||
Затронутые экраны: IDE workspace, левая панель metadata tree (server/lazy data)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, покрыто API tests
|
||||
|
||||
Дата: 2026-05-12
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Runtime smoke расширен проверкой состава `Bottom Tool Panel`: тест подтверждает видимость вкладок `Проблемы`, `Semantic diff`, `Вывод`, `История`, `Тесты`, `AI` после открытия нижней панели.
|
||||
Какие файлы: `frontend/sfera-web/scripts/smoke-editor-runtime.mjs`
|
||||
Затронутые экраны: IDE workspace, Bottom Tool Panel
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлен существующий runtime smoke
|
||||
|
||||
Дата: 2026-05-12
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: HTML smoke расширен англоязычной проверкой `Project Settings` (`lang=en`): закреплены `Project Settings`, `Import Center`, `Task/session policy`, `Docker/runtime adapter`, `ITS/documentation access`, `Audit`, `Backup/restore` и ITS env placeholders.
|
||||
Какие файлы: `frontend/sfera-web/scripts/smoke-editor-modes.mjs`
|
||||
Затронутые экраны: Project Settings (EN UI)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлен существующий editor smoke
|
||||
|
||||
Дата: 2026-05-12
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Защитный API-тест для обычных источников (`XML_DUMP`) расширен и на lazy metadata tree: `CONTEXT_CONFIGURATION` и `REFERENCE_CONFIGURATION` не должны появляться в корне ни полного, ни lazy-ответа.
|
||||
Какие файлы: `services/api-server/tests/test_api.py`
|
||||
Затронутые экраны: IDE workspace, левая панель metadata tree (server/lazy data)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, покрыто API tests
|
||||
|
||||
Дата: 2026-05-12
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Runtime smoke `Project Settings` расширен англоязычным сценарием (`lang=en`): подтверждаются `Task/session policy`, `Docker/runtime adapter`, `ITS/documentation access`, `Audit`, `Backup/restore` и ITS env placeholders на реальном интерактивном экране.
|
||||
Какие файлы: `frontend/sfera-web/scripts/smoke-project-setup.mjs`
|
||||
Затронутые экраны: Project Settings (EN UI)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлен существующий project-setup runtime smoke
|
||||
|
||||
Дата: 2026-05-12
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Runtime smoke IDE расширен англоязычным сценарием (`lang=en`) для Top Project Bar и status bar; дополнительно smoke фиксирован на desktop viewport `1680x1050`, чтобы контрактные desktop-элементы вроде `Task` проверялись в реальном видимом layout.
|
||||
Какие файлы: `frontend/sfera-web/scripts/smoke-editor-runtime.mjs`
|
||||
Затронутые экраны: основной IDE экран, Top Project Bar, Status Bar (EN UI)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлен существующий editor runtime smoke
|
||||
|
||||
Дата: 2026-05-12
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: EN runtime smoke `Project Settings` расширен проверкой `REFERENCE_CONFIGURATION` и кнопки `Reference config`, чтобы import/source contract был закреплен и в английском интерактивном сценарии.
|
||||
Какие файлы: `frontend/sfera-web/scripts/smoke-project-setup.mjs`
|
||||
Затронутые экраны: Project Settings (EN UI)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлен существующий project-setup runtime smoke
|
||||
|
||||
Дата: 2026-05-12
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: EN runtime smoke IDE расширен проверкой `Bottom Tool Panel`: в английском сценарии подтверждаются вкладки `Problems`, `Semantic diff`, `Output`, `Change history`, `Tests`, `AI`.
|
||||
Какие файлы: `frontend/sfera-web/scripts/smoke-editor-runtime.mjs`
|
||||
Затронутые экраны: основной IDE экран, Bottom Tool Panel (EN UI)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлен существующий editor runtime smoke
|
||||
|
||||
Дата: 2026-05-12
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: Кнопки действий `Project Settings` получили стабильный маркер `data-import-action=<SOURCE>:<mode>`; runtime smoke переведен на этот маркер и EN-сценарий теперь интерактивно запускает `Source preflight`, а не зависит от русского текста кнопки.
|
||||
Какие файлы: `frontend/sfera-web/src/components/project-setup/project-setup-client.tsx`, `frontend/sfera-web/scripts/smoke-project-setup.mjs`
|
||||
Затронутые экраны: Project Settings, Import Center (RU/EN UI)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлен существующий project-setup runtime smoke
|
||||
|
||||
Дата: 2026-05-12
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: HTML smoke для `Project Settings` (RU/EN) расширен проверкой стабильных action markers `data-import-action="REFERENCE_CONFIGURATION:import"` и `data-import-action="XML_DUMP:check"`, чтобы import actions ловились быстрым контуром без Playwright.
|
||||
Какие файлы: `frontend/sfera-web/scripts/smoke-editor-modes.mjs`
|
||||
Затронутые экраны: Project Settings, Import Center (RU/EN UI)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлен существующий editor smoke
|
||||
|
||||
Дата: 2026-05-12
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: `Top Project Bar` получил стабильные `data-*` маркеры для logo, selectors, actions, status badges, language switcher и profile button; `Badge` обновлен с passthrough `HTMLAttributes`, чтобы `data-*` атрибуты доходили до DOM. HTML и runtime smoke IDE переведены на эти маркеры. Дополнительно runtime smoke после reload явно возвращается на module-tab перед проверкой Monaco.
|
||||
Какие файлы: `frontend/sfera-web/src/components/layout/app-shell.tsx`, `frontend/sfera-web/src/components/ui/badge.tsx`, `frontend/sfera-web/scripts/smoke-editor-modes.mjs`, `frontend/sfera-web/scripts/smoke-editor-runtime.mjs`
|
||||
Затронутые экраны: основной IDE экран, Top Project Bar, Open Objects Bar
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлены существующие `smoke:editor` и `smoke:editor:runtime`
|
||||
|
||||
Дата: 2026-05-12
|
||||
Автор/Codex task: Codex
|
||||
Что изменено: `Project Settings` секции получили стабильный маркер `data-settings-section`; HTML и runtime smoke переведены на него для ключевых разделов `task-session-policy`, `docker-runtime-adapter`, `its-documentation-access` в RU/EN сценариях.
|
||||
Какие файлы: `frontend/sfera-web/src/components/project-setup/project-setup-client.tsx`, `frontend/sfera-web/scripts/smoke-editor-modes.mjs`, `frontend/sfera-web/scripts/smoke-project-setup.mjs`
|
||||
Затронутые экраны: Project Settings (RU/EN UI)
|
||||
Изменен ли UI contract: нет
|
||||
Нужны ли новые smoke tests: нет, обновлены существующие `smoke:editor` и `smoke:project-setup`
|
||||
@@ -0,0 +1,35 @@
|
||||
# SFERA Frontend Product Contract
|
||||
|
||||
SFERA - это серверная semantic IDE-платформа для 1С, а не dashboard, CRM или файловый редактор.
|
||||
|
||||
## Главная модель
|
||||
|
||||
- Проект выбирается в верхней панели.
|
||||
- Пользователь долго работает внутри одного проекта.
|
||||
- Основной экран - IDE workspace последнего проекта.
|
||||
- Если проекта нет - пустой workspace с выбором или созданием проекта.
|
||||
- Левая панель - навигация по текущему проекту.
|
||||
- Центр - рабочая область.
|
||||
- Правая панель - контекстные свойства.
|
||||
- Нижняя зона - открытые объекты, служебные панели и status bar.
|
||||
|
||||
## Product Principles
|
||||
|
||||
SFERA должна быть metadata-first: в 1С дерево объектов конфигурации представляет прикладное решение как древовидную структуру логически связанных объектов.
|
||||
|
||||
Расширения являются configuration-like структурами: расширение похоже на обычную конфигурацию и тоже представляется деревом объектов.
|
||||
|
||||
Формы - visual-first: формы 1С предназначены для просмотра и редактирования данных и могут принадлежать объектам конфигурации или быть общими.
|
||||
|
||||
Окно объекта конфигурации в 1С предназначено для редактирования свойств, управления подчиненными объектами и настройки взаимодействия объектов. SFERA должна расширять эту модель, а не заменять ее dashboard-карточками.
|
||||
|
||||
## Official 1C Documentation
|
||||
|
||||
При проектировании 1C-specific поведения использовать официальные источники:
|
||||
|
||||
- ITS;
|
||||
- v8.1c.ru;
|
||||
- 1C DN;
|
||||
- локальные knowledge packs.
|
||||
|
||||
ITS credentials нельзя хранить в документации или репозитории. Доступ передается только через `.env.local`.
|
||||
@@ -0,0 +1,152 @@
|
||||
# SFERA IDE UI Contract
|
||||
|
||||
## 1. Основной экран
|
||||
|
||||
После входа открывается:
|
||||
|
||||
- последний проект пользователя;
|
||||
- либо пустой IDE shell, если проекта нет.
|
||||
|
||||
Проект выбирается только в верхней панели.
|
||||
|
||||
Запрещено:
|
||||
|
||||
- показывать список проектов в левой панели;
|
||||
- делать dashboard главным экраном;
|
||||
- показывать fake-данные без импортированного проекта.
|
||||
|
||||
## 2. Главный Layout
|
||||
|
||||
Экран состоит из:
|
||||
|
||||
```text
|
||||
Top Project Bar
|
||||
Left Navigation Panel
|
||||
Main Workspace
|
||||
Right Context Inspector
|
||||
Open Objects Bar
|
||||
Bottom Tool Panel
|
||||
Status Bar
|
||||
```
|
||||
|
||||
## 3. Top Project Bar
|
||||
|
||||
Содержит:
|
||||
|
||||
- SFERA logo;
|
||||
- Workspace selector;
|
||||
- Project selector;
|
||||
- Project settings button;
|
||||
- Create project button;
|
||||
- Environment selector;
|
||||
- Active task selector;
|
||||
- Global search;
|
||||
- Agent/API status;
|
||||
- Notifications;
|
||||
- Language;
|
||||
- User profile.
|
||||
|
||||
Пример:
|
||||
|
||||
```text
|
||||
SFERA | Workspace v | Project v | Настройки | + Проект | Env v | Task v | Search...
|
||||
```
|
||||
|
||||
## 4. Левая Панель
|
||||
|
||||
Левая панель - навигация текущего проекта.
|
||||
|
||||
Она содержит:
|
||||
|
||||
```text
|
||||
Проект: ERP Demo
|
||||
├── Основная конфигурация
|
||||
├── Расширение: <Имя>
|
||||
├── Расширение: <Имя>
|
||||
├── SFERA
|
||||
└── Среды
|
||||
```
|
||||
|
||||
Левая панель должна:
|
||||
|
||||
- сворачиваться;
|
||||
- менять ширину;
|
||||
- поддерживать поиск;
|
||||
- поддерживать фильтры;
|
||||
- поддерживать lazy loading;
|
||||
- поддерживать virtual scroll;
|
||||
- сохранять состояние раскрытия узлов.
|
||||
|
||||
## 5. Центр
|
||||
|
||||
Центр - основная рабочая область.
|
||||
|
||||
Там открываются:
|
||||
|
||||
- Object Workspace;
|
||||
- Code Workspace;
|
||||
- Form Designer;
|
||||
- Report Designer;
|
||||
- СКД Designer;
|
||||
- Layout Designer;
|
||||
- Project Settings;
|
||||
- Task Workspace;
|
||||
- Review Workspace;
|
||||
- Runtime Workspace;
|
||||
- Knowledge Workspace.
|
||||
|
||||
## 6. Правая Панель
|
||||
|
||||
Правая панель - Context Inspector.
|
||||
|
||||
Она показывает свойства выбранного объекта, элемента формы, процедуры, задачи, отчета, регистра, расширения.
|
||||
|
||||
Она не является навигацией.
|
||||
|
||||
## 7. Open Objects Bar
|
||||
|
||||
Внизу отображается панель открытых объектов:
|
||||
|
||||
```text
|
||||
[Документ.ЗаказКлиента] [ФормаДокумента] [Модуль объекта] [TASK-123]
|
||||
```
|
||||
|
||||
Поддерживает:
|
||||
|
||||
- быстрое переключение;
|
||||
- закрытие;
|
||||
- закрепление;
|
||||
- восстановление после перезагрузки.
|
||||
|
||||
## 8. Bottom Tool Panel
|
||||
|
||||
Сворачиваемая служебная панель:
|
||||
|
||||
- Проблемы;
|
||||
- Semantic diff;
|
||||
- Вывод;
|
||||
- История;
|
||||
- Тесты;
|
||||
- AI.
|
||||
|
||||
## 9. Status Bar
|
||||
|
||||
- Snapshot;
|
||||
- Agent;
|
||||
- Parser;
|
||||
- Diagnostics;
|
||||
- Active Task;
|
||||
- Privacy;
|
||||
- AI tokens;
|
||||
- Current user.
|
||||
|
||||
## 10. Горячие Клавиши
|
||||
|
||||
- `Alt+1` - левая панель;
|
||||
- `Alt+2` - правая панель;
|
||||
- `Alt+3` - нижняя панель;
|
||||
- `Ctrl+Tab` - следующий открытый объект;
|
||||
- `Ctrl+Shift+Tab` - предыдущий объект;
|
||||
- `Ctrl+W` - закрыть текущий объект;
|
||||
- `Ctrl+K` - глобальный поиск;
|
||||
- `F5` - запустить проверку.
|
||||
@@ -0,0 +1,301 @@
|
||||
# SFERA Metadata Tree Contract
|
||||
|
||||
## 1. Верхний Уровень
|
||||
|
||||
```text
|
||||
Проект
|
||||
├── Основная конфигурация
|
||||
├── Расширение: <name>
|
||||
├── Расширение: <name>
|
||||
├── SFERA
|
||||
└── Среды
|
||||
```
|
||||
|
||||
## 2. ConfigurationLikeRoot
|
||||
|
||||
Один компонент используется для:
|
||||
|
||||
- основной конфигурации;
|
||||
- расширений;
|
||||
- context-only конфигураций;
|
||||
- reference конфигураций.
|
||||
|
||||
Типы:
|
||||
|
||||
- `MAIN_CONFIGURATION`;
|
||||
- `EXTENSION`;
|
||||
- `CONTEXT_CONFIGURATION`;
|
||||
- `REFERENCE_CONFIGURATION`.
|
||||
|
||||
## 3. Структура ConfigurationLikeRoot
|
||||
|
||||
- Сведения;
|
||||
- Общие;
|
||||
- Константы;
|
||||
- Справочники;
|
||||
- Документы;
|
||||
- Журналы документов;
|
||||
- Перечисления;
|
||||
- Отчеты;
|
||||
- Обработки;
|
||||
- Планы видов характеристик;
|
||||
- Планы счетов;
|
||||
- Планы видов расчета;
|
||||
- Регистры сведений;
|
||||
- Регистры накопления;
|
||||
- Регистры бухгалтерии;
|
||||
- Регистры расчета;
|
||||
- Бизнес-процессы;
|
||||
- Задачи 1С;
|
||||
- Внешние источники данных.
|
||||
|
||||
## 4. Узел "Общие"
|
||||
|
||||
- Подсистемы;
|
||||
- Общие модули;
|
||||
- Параметры сеанса;
|
||||
- Роли;
|
||||
- Общие реквизиты;
|
||||
- Планы обмена;
|
||||
- Критерии отбора;
|
||||
- Подписки на события;
|
||||
- Регламентные задания;
|
||||
- Боты;
|
||||
- Функциональные опции;
|
||||
- Параметры функциональных опций;
|
||||
- Определяемые типы;
|
||||
- Хранилища настроек;
|
||||
- Общие команды;
|
||||
- Группы команд;
|
||||
- Общие формы;
|
||||
- Общие макеты;
|
||||
- Общие картинки;
|
||||
- XDTO-пакеты;
|
||||
- Web-сервисы;
|
||||
- HTTP-сервисы;
|
||||
- WS-ссылки;
|
||||
- WebSocket-клиенты;
|
||||
- Сервисы интеграции;
|
||||
- Цвета палитры;
|
||||
- Элементы стиля;
|
||||
- Стили;
|
||||
- Языки.
|
||||
|
||||
## 5. Object Tree Templates
|
||||
|
||||
### Справочник
|
||||
|
||||
- Обзор;
|
||||
- Свойства;
|
||||
- Реквизиты;
|
||||
- Табличные части;
|
||||
- Формы;
|
||||
- Команды;
|
||||
- Макеты;
|
||||
- Модуль объекта;
|
||||
- Модуль менеджера;
|
||||
- Права;
|
||||
- Данные;
|
||||
- Где используется;
|
||||
- Кто читает;
|
||||
- Кто записывает;
|
||||
- Версии;
|
||||
- Проверки.
|
||||
|
||||
### Документ
|
||||
|
||||
- Обзор;
|
||||
- Свойства;
|
||||
- Реквизиты;
|
||||
- Табличные части;
|
||||
- Формы;
|
||||
- Команды;
|
||||
- Макеты;
|
||||
- Движения;
|
||||
- Модуль объекта;
|
||||
- Модуль менеджера;
|
||||
- Права;
|
||||
- Данные;
|
||||
- Где используется;
|
||||
- Кто создает;
|
||||
- Кто проводит;
|
||||
- Версии;
|
||||
- Проверки.
|
||||
|
||||
### Регистр Сведений
|
||||
|
||||
- Обзор;
|
||||
- Свойства;
|
||||
- Измерения;
|
||||
- Ресурсы;
|
||||
- Реквизиты;
|
||||
- Формы;
|
||||
- Команды;
|
||||
- Макеты;
|
||||
- Модуль набора записей;
|
||||
- Модуль менеджера;
|
||||
- Права;
|
||||
- Данные;
|
||||
- Кто читает;
|
||||
- Кто записывает;
|
||||
- Версии;
|
||||
- Проверки.
|
||||
|
||||
### Регистр Накопления
|
||||
|
||||
- Обзор;
|
||||
- Свойства;
|
||||
- Измерения;
|
||||
- Ресурсы;
|
||||
- Реквизиты;
|
||||
- Формы;
|
||||
- Команды;
|
||||
- Макеты;
|
||||
- Модуль набора записей;
|
||||
- Модуль менеджера;
|
||||
- Права;
|
||||
- Данные;
|
||||
- Кто читает;
|
||||
- Кто записывает;
|
||||
- Документы-регистраторы;
|
||||
- Версии;
|
||||
- Проверки.
|
||||
|
||||
### Отчет
|
||||
|
||||
- Обзор;
|
||||
- Свойства;
|
||||
- СКД;
|
||||
- Формы;
|
||||
- Команды;
|
||||
- Макеты;
|
||||
- Модуль объекта;
|
||||
- Права;
|
||||
- Данные;
|
||||
- Версии;
|
||||
- Проверки.
|
||||
|
||||
### Обработка
|
||||
|
||||
- Обзор;
|
||||
- Свойства;
|
||||
- Формы;
|
||||
- Команды;
|
||||
- Макеты;
|
||||
- Модуль объекта;
|
||||
- Права;
|
||||
- Данные;
|
||||
- Интеграции;
|
||||
- Версии;
|
||||
- Проверки.
|
||||
|
||||
### Общий Модуль
|
||||
|
||||
- Обзор;
|
||||
- Свойства;
|
||||
- Процедуры;
|
||||
- Функции;
|
||||
- Экспортные методы;
|
||||
- Запросы;
|
||||
- Записи;
|
||||
- Вызовы;
|
||||
- Кто вызывает;
|
||||
- Транзакции;
|
||||
- Runtime;
|
||||
- Версии;
|
||||
- Проверки.
|
||||
|
||||
### Форма
|
||||
|
||||
- Дизайнер формы;
|
||||
- Свойства;
|
||||
- Реквизиты формы;
|
||||
- Элементы;
|
||||
- Команды;
|
||||
- События;
|
||||
- Модуль формы;
|
||||
- Связи с объектом;
|
||||
- Данные;
|
||||
- Версии;
|
||||
- Проверки.
|
||||
|
||||
### Роль
|
||||
|
||||
- Обзор;
|
||||
- Свойства;
|
||||
- Права на объекты;
|
||||
- Права на реквизиты;
|
||||
- Права на табличные части;
|
||||
- RLS;
|
||||
- Унаследованные права;
|
||||
- Отличия от default rights;
|
||||
- Пользователи с ролью;
|
||||
- Проверки безопасности;
|
||||
- Версии;
|
||||
- Данные.
|
||||
|
||||
### HTTP-Сервис
|
||||
|
||||
- Обзор;
|
||||
- Свойства;
|
||||
- URL-шаблоны;
|
||||
- Методы;
|
||||
- Обработчики;
|
||||
- Контракты JSON;
|
||||
- Безопасность;
|
||||
- Runtime;
|
||||
- Тестовые запросы;
|
||||
- Версии;
|
||||
- Проверки.
|
||||
|
||||
### План Обмена
|
||||
|
||||
- Обзор;
|
||||
- Свойства;
|
||||
- Узлы;
|
||||
- Состав обмена;
|
||||
- Авторегистрация;
|
||||
- Правила регистрации;
|
||||
- Формы;
|
||||
- Команды;
|
||||
- Модуль объекта;
|
||||
- Модуль менеджера;
|
||||
- Runtime;
|
||||
- Данные;
|
||||
- Версии;
|
||||
- Проверки.
|
||||
|
||||
### Регламентное Задание
|
||||
|
||||
- Обзор;
|
||||
- Свойства;
|
||||
- Расписание;
|
||||
- Обработчик;
|
||||
- Параметры;
|
||||
- Runtime;
|
||||
- Связанные интеграции;
|
||||
- Версии;
|
||||
- Проверки.
|
||||
|
||||
## 6. Узел "Данные"
|
||||
|
||||
Узел "Данные" добавляется к объектам, где это применимо.
|
||||
|
||||
Режимы:
|
||||
|
||||
- `METADATA_ONLY`;
|
||||
- `SANITIZED_SAMPLE`;
|
||||
- `TEST_DATA`;
|
||||
- `FULL_DATA`.
|
||||
|
||||
По умолчанию:
|
||||
|
||||
- `METADATA_ONLY`.
|
||||
|
||||
Правила:
|
||||
|
||||
- `FULL_DATA` только по RBAC;
|
||||
- `FULL_DATA` всегда audit logged;
|
||||
- AI не получает данные без explicit approval;
|
||||
- данные привязаны к environment;
|
||||
- данные маскируются по умолчанию.
|
||||
@@ -0,0 +1,194 @@
|
||||
# SFERA Project Settings Contract
|
||||
|
||||
## 1. Назначение
|
||||
|
||||
Настройки проекта - один из главных экранов SFERA.
|
||||
|
||||
Открывается из Top Project Bar через кнопку рядом с Project selector.
|
||||
|
||||
## 2. Разделы Настроек
|
||||
|
||||
```text
|
||||
Основные сведения
|
||||
Источники структуры 1С
|
||||
Импорт конфигурации
|
||||
Среды
|
||||
Агенты
|
||||
Расширения
|
||||
Knowledge sources
|
||||
Privacy
|
||||
AI policy
|
||||
Task/session policy
|
||||
Пользователи и доступ
|
||||
Интеграции задач
|
||||
Docker/runtime adapter
|
||||
ITS/documentation access
|
||||
Audit
|
||||
Backup/restore
|
||||
```
|
||||
|
||||
## 3. Основные Сведения
|
||||
|
||||
Поля:
|
||||
|
||||
- Название проекта;
|
||||
- Код проекта;
|
||||
- Описание;
|
||||
- Workspace;
|
||||
- Владелец;
|
||||
- Тип проекта;
|
||||
- Язык интерфейса;
|
||||
- Язык кода 1С по умолчанию: русский / английский;
|
||||
- Версия платформы;
|
||||
- Режим совместимости.
|
||||
|
||||
## 4. Источники Структуры 1С
|
||||
|
||||
Поддерживаемые источники:
|
||||
|
||||
- `.cf` файл;
|
||||
- `.cfe` файл;
|
||||
- XML dump;
|
||||
- Live infobase через Designer CLI;
|
||||
- EPF agent snapshot;
|
||||
- CFE agent snapshot;
|
||||
- EDT project;
|
||||
- Архив выгрузки;
|
||||
- BSL/XML file tree;
|
||||
- Context-only configuration;
|
||||
- Reference configuration.
|
||||
|
||||
Для каждого источника:
|
||||
|
||||
- тип;
|
||||
- статус;
|
||||
- последний импорт;
|
||||
- последняя ошибка;
|
||||
- версия платформы;
|
||||
- режим совместимости;
|
||||
- количество объектов;
|
||||
- количество модулей;
|
||||
- количество форм;
|
||||
- количество расширений.
|
||||
|
||||
## 5. Среды
|
||||
|
||||
- Dev;
|
||||
- Test;
|
||||
- Stage;
|
||||
- Prod.
|
||||
|
||||
Для среды:
|
||||
|
||||
- тип;
|
||||
- подключение;
|
||||
- агент;
|
||||
- источник данных;
|
||||
- privacy mode;
|
||||
- разрешение data preview;
|
||||
- версия платформы;
|
||||
- активные расширения.
|
||||
|
||||
## 6. Агенты
|
||||
|
||||
- EPF agent;
|
||||
- CFE agent;
|
||||
- runtime agent;
|
||||
- diagnostic agent.
|
||||
|
||||
Поля:
|
||||
|
||||
- agent id;
|
||||
- version;
|
||||
- environment;
|
||||
- last heartbeat;
|
||||
- status;
|
||||
- compatibility;
|
||||
- download/update.
|
||||
|
||||
## 7. Расширения
|
||||
|
||||
Таблица:
|
||||
|
||||
- имя;
|
||||
- версия;
|
||||
- назначение;
|
||||
- активно;
|
||||
- безопасный режим;
|
||||
- защита от опасных действий;
|
||||
- область действия;
|
||||
- источник;
|
||||
- последний import;
|
||||
- статус применимости.
|
||||
|
||||
Действия:
|
||||
|
||||
- загрузить `.cfe`;
|
||||
- получить из live base;
|
||||
- обновить snapshot;
|
||||
- проверить применимость;
|
||||
- сравнить с основной конфигурацией;
|
||||
- построить effective configuration.
|
||||
|
||||
## 8. ITS/Documentation Access
|
||||
|
||||
Документация 1С используется для проверки 1С-specific поведения.
|
||||
|
||||
Источники:
|
||||
|
||||
- ITS;
|
||||
- v8.1c.ru;
|
||||
- 1C DN;
|
||||
- локальные knowledge packs.
|
||||
|
||||
ITS credentials нельзя хранить в репозитории.
|
||||
|
||||
Использовать только переменные окружения:
|
||||
|
||||
```dotenv
|
||||
SFERA_ITS_URL=<ITS_URL>
|
||||
SFERA_ITS_USERNAME=<ITS_USERNAME>
|
||||
SFERA_ITS_PASSWORD=<ITS_PASSWORD>
|
||||
```
|
||||
|
||||
Локальный файл:
|
||||
|
||||
```text
|
||||
.env.local
|
||||
```
|
||||
|
||||
Пример для локальной настройки:
|
||||
|
||||
```dotenv
|
||||
SFERA_ITS_URL=https://its.1c.ru/db/v838doc#browse:13:-1:7
|
||||
SFERA_ITS_USERNAME=<set locally>
|
||||
SFERA_ITS_PASSWORD=<set locally>
|
||||
```
|
||||
|
||||
Запрещено:
|
||||
|
||||
- коммитить логин или пароль;
|
||||
- писать логин или пароль в markdown;
|
||||
- писать логин или пароль в Dockerfile;
|
||||
- выводить логин или пароль в logs.
|
||||
|
||||
## 9. Privacy
|
||||
|
||||
- `METADATA_ONLY`;
|
||||
- `SANITIZED_SAMPLE`;
|
||||
- `TEST_DATA`;
|
||||
- `FULL_DATA`.
|
||||
|
||||
По умолчанию:
|
||||
|
||||
- `METADATA_ONLY`.
|
||||
|
||||
## 10. Task/Session Policy
|
||||
|
||||
- `STRICT`;
|
||||
- `SOFT`;
|
||||
- `LOCAL_DEV`.
|
||||
|
||||
Enterprise default:
|
||||
|
||||
- `STRICT`.
|
||||
@@ -0,0 +1,282 @@
|
||||
# SFERA Stand Runbook
|
||||
|
||||
## Network API
|
||||
|
||||
- API: `http://192.168.200.60:8000`
|
||||
- Swagger: `http://192.168.200.60:8000/docs`
|
||||
- Health: `GET /health`
|
||||
- Summary: `GET /admin/summary`
|
||||
|
||||
## Docker
|
||||
|
||||
This OS runs inside a VM. Do not install or use a local Docker Engine here.
|
||||
|
||||
Use the shared Docker host for Docker/integration stands:
|
||||
|
||||
```bash
|
||||
docker -H ssh://test-docker ps
|
||||
```
|
||||
|
||||
Shared host:
|
||||
|
||||
- SSH alias: `test-docker` / `docker-test`
|
||||
- Host: `docker-test.cin.su`
|
||||
- User: `test`
|
||||
|
||||
Integrated SFERA testing must be deployed on `docker-test`, including both backend/server
|
||||
services and the frontend service. Do not fall back to local Docker Engine for project testing.
|
||||
|
||||
## Neo4j
|
||||
|
||||
Neo4j runs on `docker-test` as container `sfera-neo4j`.
|
||||
|
||||
- Browser: `http://docker-test.cin.su:17474`
|
||||
- Bolt: `bolt://docker-test.cin.su:17687`
|
||||
- User: `neo4j`
|
||||
- Password: `password`
|
||||
|
||||
API uses:
|
||||
|
||||
```text
|
||||
NEO4J_URI=bolt://docker-test.cin.su:17687
|
||||
NEO4J_USER=neo4j
|
||||
NEO4J_PASSWORD=password
|
||||
```
|
||||
|
||||
## Rust BSL Parser
|
||||
|
||||
Build the parser locally:
|
||||
|
||||
```bash
|
||||
cd rust
|
||||
cargo build -p bsl-parser
|
||||
```
|
||||
|
||||
API indexing consumes the Rust JSON contract automatically when the built parser is found at
|
||||
`rust\target\debug\bsl-parser.exe`. To force a specific parser binary, set:
|
||||
|
||||
```text
|
||||
SFERA_BSL_PARSER=rust\target\debug\bsl-parser.exe
|
||||
```
|
||||
|
||||
If no parser binary is configured or auto-discovered, `semantic-kernel` uses the built-in Python parser fallback.
|
||||
|
||||
## Runtime Adapter / 1C Access
|
||||
|
||||
`sfera-runtime-adapter` is a separate container/service. It must stay separate from `sfera-api`.
|
||||
|
||||
Modes:
|
||||
|
||||
```text
|
||||
RUNTIME_ADAPTER_MODE=mock
|
||||
RUNTIME_ADAPTER_MODE=local_1c
|
||||
RUNTIME_ADAPTER_MODE=remote_worker
|
||||
```
|
||||
|
||||
`mock` is the default Docker mode and does not require a 1C platform inside Linux containers. `local_1c` can normalize EDT/XML/file-tree sources without executing Designer. For `.cf`, `.cfe`, archive, and live infobase sources it first returns a safe `designer_dump_planned` response unless execution is explicitly enabled on a trusted worker.
|
||||
|
||||
Platform discovery:
|
||||
|
||||
- Set `ONEC_DESIGNER_PATH` when the worker has a known Designer CLI path.
|
||||
- If it is empty, runtime-adapter tries common install roots such as `C:\Program Files\1cv8\*\bin\1cv8.exe`.
|
||||
- Set `ONEC_DISABLE_AUTO_DISCOVERY=true` to turn discovery off in tests.
|
||||
- Check `GET /runtime/platform` for `platform_found`, `designer_path`, `discovered_paths`, capabilities, and diagnostics.
|
||||
|
||||
Credentials rule:
|
||||
|
||||
- Do not store live 1C credentials in repository files, compose files, docs, fixtures, or logs.
|
||||
- Use `credentials_ref` such as `runtime://prompt/live-upo` or a real vault reference.
|
||||
- Runtime dump plans redact password-like keys in connection strings before returning diagnostics.
|
||||
|
||||
Useful local checks, without storing secrets:
|
||||
|
||||
```powershell
|
||||
Test-Path "C:\EDT\projects\iFCM-UPO"
|
||||
Invoke-WebRequest -UseBasicParsing -Uri "http://192.168.200.95/upo/ru_RU/" -TimeoutSec 10
|
||||
Get-ChildItem "C:\Program Files\1cv8","C:\Program Files (x86)\1cv8" -Recurse -Filter 1cv8.exe -ErrorAction SilentlyContinue
|
||||
```
|
||||
|
||||
## Smoke Flow
|
||||
|
||||
```bash
|
||||
POST /projects/demo/index
|
||||
POST /projects/{project_id}/incremental/file
|
||||
POST /projects/demo/graph/neo4j/project
|
||||
GET /projects/demo/graph/neo4j/callees/Проведение
|
||||
GET /projects/demo/graph/neo4j/writes/Проведение
|
||||
GET /projects/{project_id}/objects/impact/{object_name}
|
||||
GET /projects/{project_id}/objects/attributes/{object_name}
|
||||
GET /projects/{project_id}/objects/schema/{object_name}
|
||||
GET /projects/{project_id}/objects/tabular-sections/{object_name}
|
||||
GET /projects/{project_id}/objects/tabular-sections/{object_name}/columns
|
||||
GET /projects/{project_id}/objects/ui/{object_name}
|
||||
GET /projects/{project_id}/graph/neo4j/objects/attributes/{object_name}
|
||||
GET /projects/{project_id}/graph/neo4j/objects/schema/{object_name}
|
||||
GET /projects/{project_id}/graph/neo4j/objects/tabular-sections/{object_name}
|
||||
GET /projects/{project_id}/graph/neo4j/objects/tabular-sections/{object_name}/columns
|
||||
GET /projects/{project_id}/graph/neo4j/objects/impact/{object_name}
|
||||
GET /projects/{project_id}/graph/neo4j/objects/ui/{object_name}
|
||||
GET /projects/{project_id}/access/objects/{object_name}/roles
|
||||
GET /projects/{project_id}/access/roles/{role_name}/objects
|
||||
GET /projects/{project_id}/jobs/scheduled
|
||||
GET /projects/{project_id}/integrations
|
||||
GET /projects/{project_id}/graph/neo4j/integrations
|
||||
GET /projects/{project_id}/graph/neo4j/integrations/{integration_name}/modules
|
||||
GET /projects/{project_id}/graph/neo4j/access/objects/{object_name}/roles
|
||||
GET /projects/{project_id}/graph/neo4j/access/roles/{role_name}/objects
|
||||
POST /knowledge/packs
|
||||
GET /knowledge/packs
|
||||
GET /projects/{project_id}/knowledge/schema-coverage
|
||||
GET /projects/{project_id}/patterns
|
||||
POST /projects/{project_id}/comments
|
||||
GET /projects/{project_id}/comments
|
||||
GET /projects/{project_id}/comments/{target_id}
|
||||
POST /projects/{project_id}/ownership
|
||||
GET /projects/{project_id}/ownership
|
||||
GET /projects/{project_id}/objects/ownership/{object_name}
|
||||
POST /projects/{project_id}/privacy/markers
|
||||
GET /projects/{project_id}/privacy/markers
|
||||
GET /projects/{project_id}/objects/privacy/{object_name}
|
||||
POST /ai/usage
|
||||
GET /ai/usage
|
||||
GET /ai/usage/summary
|
||||
GET /ai/policy
|
||||
POST /projects/{project_id}/ai/answer-policy
|
||||
GET /projects/{project_id}/review
|
||||
GET /projects/{project_id}/report
|
||||
GET /graph/neo4j/status
|
||||
```
|
||||
|
||||
## Frontend
|
||||
|
||||
Frontend app:
|
||||
|
||||
```text
|
||||
Z:\codex\SFERA\frontend\sfera-web
|
||||
```
|
||||
|
||||
Use the mapped `Z:` drive. It points to `\\nas\MST` and avoids Windows tooling issues with UNC current directories:
|
||||
|
||||
```bat
|
||||
cd /d Z:\codex\SFERA\frontend\sfera-web
|
||||
npm run dev
|
||||
```
|
||||
|
||||
Always run frontend `npm` commands from the mapped `Z:` drive. Do not use `\\nas\MST\...` as the current directory: Windows `cmd.exe` does not support UNC current directories and falls back to `C:\Windows`, which makes npm scripts fail with missing `package.json`.
|
||||
|
||||
Default URL:
|
||||
|
||||
```text
|
||||
http://192.168.200.60:3000
|
||||
```
|
||||
|
||||
Editor direct links:
|
||||
|
||||
```text
|
||||
http://192.168.200.60:3000/editor?project=demo&mode=module
|
||||
http://192.168.200.60:3000/editor?project=demo&mode=form
|
||||
http://192.168.200.60:3000/editor?project=demo&mode=events
|
||||
http://192.168.200.60:3000/editor?project=demo&mode=learning
|
||||
```
|
||||
|
||||
Lightweight frontend smoke check against the running stand:
|
||||
|
||||
```bat
|
||||
cd /d Z:\codex\SFERA\frontend\sfera-web
|
||||
npm run smoke:editor
|
||||
```
|
||||
|
||||
Browser runtime smoke check against the running stand:
|
||||
|
||||
```bat
|
||||
cd /d Z:\codex\SFERA\frontend\sfera-web
|
||||
npm run smoke:editor:runtime
|
||||
```
|
||||
|
||||
Project Setup / Import Center runtime smoke check against the running stand:
|
||||
|
||||
```bat
|
||||
cd /d Z:\codex\SFERA\frontend\sfera-web
|
||||
npm run smoke:project-setup
|
||||
```
|
||||
|
||||
Full editor smoke check:
|
||||
|
||||
```bat
|
||||
cd /d Z:\codex\SFERA\frontend\sfera-web
|
||||
npm run smoke:editor:all
|
||||
```
|
||||
|
||||
Override the checked frontend URL when needed:
|
||||
|
||||
```bat
|
||||
set SFERA_WEB_URL=http://docker-test.cin.su:3000
|
||||
npm run smoke:editor:all
|
||||
```
|
||||
|
||||
`smoke:editor` checks server-rendered HTML for the overview and editor modes and retries briefly while a freshly started stand settles. `smoke:editor:runtime` launches the installed Chrome/Edge through `playwright-core`, catches browser runtime errors, verifies Monaco in module mode, opens the Versions tab, clicks a version row, checks full version payload details, and exercises metadata draft preview/apply through the API. `smoke:project-setup` prepares the `default` project through the web API proxy, verifies the new Project Setup / IDE Shell route, and saves a metadata draft to workspace history. Set `SFERA_BROWSER_PATH` if Chrome/Edge is installed in a non-standard location.
|
||||
|
||||
Docker health smoke can include the Project Setup browser smoke:
|
||||
|
||||
```powershell
|
||||
.\scripts\smoke-test-docker.ps1 `
|
||||
-ApiUrl http://docker-test.cin.su:8000 `
|
||||
-WebUrl http://docker-test.cin.su:3000 `
|
||||
-Neo4jUrl http://docker-test.cin.su:7474 `
|
||||
-QdrantUrl http://docker-test.cin.su:6333 `
|
||||
-ObjectStorageUrl http://docker-test.cin.su:9000 `
|
||||
-IncludeProjectSetupSmoke
|
||||
```
|
||||
|
||||
The frontend resolves the API endpoint in this order:
|
||||
|
||||
1. `SFERA_API_URL`
|
||||
2. `NEXT_PUBLIC_SFERA_API_URL`
|
||||
3. the current panel host with API port `8000`
|
||||
|
||||
Examples:
|
||||
|
||||
```text
|
||||
http://192.168.200.60:3000 -> http://192.168.200.60:8000
|
||||
http://docker-test.cin.su:3000 -> http://docker-test.cin.su:8000
|
||||
http://127.0.0.1:3001 -> http://localhost:8000
|
||||
```
|
||||
|
||||
If the API moves to another address or port, set:
|
||||
|
||||
```text
|
||||
SFERA_API_URL=http://api-host:8080
|
||||
```
|
||||
|
||||
If only the derived API port changes, set:
|
||||
|
||||
```text
|
||||
SFERA_API_PORT=8080
|
||||
```
|
||||
|
||||
Do not use `127.0.0.1:8000` as the panel default, because browsers are normally opened from another computer in the LAN. Full Docker stands should run on `docker-test`; local mode is only for the current API + Next.js development loop without a local Docker Engine.
|
||||
|
||||
Browser-side editor actions call the API directly, so API CORS must allow the panel origin. By default the API allows localhost, LAN `192.168.*.*` origins, and `docker-test.cin.su`. Override with `SFERA_CORS_ORIGIN_REGEX` only when the stand moves to a different trusted host pattern.
|
||||
|
||||
Expected demo projection:
|
||||
|
||||
```text
|
||||
nodes: 5
|
||||
edges: 6
|
||||
```
|
||||
|
||||
After a project has been projected once to Neo4j, `POST /projects/{project_id}/incremental/file` automatically applies the SIR delta to that project's Neo4j graph. Check `neo4j_projected` / `neo4j_error` in the response.
|
||||
|
||||
Object impact includes 1C role access when XML contains role rights, for example `Role -> Right object="Документ.ЗаказПокупателя"`.
|
||||
|
||||
Knowledge packs are stored in `knowledge_packs`; importing a BSP/vendor pack also persists enriched `knowledge` records with `pack:{pack_id}` and `vendor:{vendor}` tags for search and coverage.
|
||||
|
||||
Pattern mining is available via `GET /projects/{project_id}/patterns?min_support=2` and reports repeated table reads/writes and repeated routine read/write shapes.
|
||||
|
||||
Ownership is stored in `collaboration_ownership` and is scoped by project + target lineage. Project review reports `Missing 1C object owner` for root 1C objects without an assigned owner; project report includes ownership and unowned-object counters.
|
||||
|
||||
Privacy markers are stored in `privacy_markers` and are scoped by project + target lineage. Review reports `Unclassified sensitive 1C field` for likely sensitive 1C attributes such as ИНН, паспорт, телефон, email, адрес when no privacy classification exists.
|
||||
|
||||
AI usage records are stored in `ai_usage`. Use `GET /ai/usage/summary?project_id=...` for dashboard counters and `GET /ai/policy?user_id=...` before AI actions to show token limits and remaining allowance.
|
||||
|
||||
AI answer policy is available via `POST /projects/{project_id}/ai/answer-policy`. It does not generate an answer; it returns `allowed`, blocking reasons, warnings, matching knowledge records, privacy markers, and remaining token budget.
|
||||
@@ -0,0 +1,167 @@
|
||||
# SFERA Completion Plan
|
||||
|
||||
Дата аудита: 2026-05-10.
|
||||
|
||||
Этот план фиксирует путь к завершению SFERA как продукта. Он не подменяет
|
||||
`IMPLEMENTATION_ORDER.md`, а добавляет проверяемые критерии готовности и текущий статус.
|
||||
|
||||
## Текущее состояние
|
||||
|
||||
SFERA уже содержит рабочий backend/API, Rust BSL parser, SIR, semantic kernel,
|
||||
projection/incremental контур, runtime/governance/knowledge/collaboration пакеты и Next.js IDE.
|
||||
|
||||
Текущая проверенная база:
|
||||
|
||||
- Python/API tests: `161 passed`.
|
||||
- Rust tests: `14 passed`.
|
||||
- Frontend `typecheck`: passed.
|
||||
- Frontend production `next build`: passed.
|
||||
- Editor smoke: passed.
|
||||
- Editor runtime smoke: passed.
|
||||
|
||||
## Definition Of Done
|
||||
|
||||
Проект считается завершённым для production-ready milestone, когда выполнены все пункты:
|
||||
|
||||
1. Все фазы из `IMPLEMENTATION_ORDER.md` имеют deterministic implementation без placeholder/stub.
|
||||
2. Все parser bugs покрыты golden fixtures.
|
||||
3. SIR snapshot validates для BSL/XML metadata projects.
|
||||
4. Projection and incremental update pass against in-memory and Neo4j-compatible contracts.
|
||||
5. API exposes project, semantic, governance, knowledge, collaboration and IDE workflows.
|
||||
6. Frontend builds production bundle and passes editor smoke/runtime checks.
|
||||
7. Stand runbook is executable on local/NAS and shared Docker host.
|
||||
8. A single verification command can reproduce core/backend/Rust/frontend checks.
|
||||
|
||||
## Phase Plan
|
||||
|
||||
### Phase 1 — Semantic Core
|
||||
|
||||
Status: mostly complete.
|
||||
|
||||
Completed:
|
||||
|
||||
- `packages/sir`.
|
||||
- `rust/crates/bsl-parser`.
|
||||
- Rust `query-parser` foundation.
|
||||
- Rust `semantic-engine` foundation.
|
||||
- `packages/semantic-kernel`.
|
||||
- `packages/projection-engine`.
|
||||
- `packages/incremental-indexer`.
|
||||
- Golden fixtures for mixed RU/EN syntax, calls, queries, writes, object writes and recordset writes.
|
||||
- Same-module routine resolution priority for duplicate routine names.
|
||||
- SIR diagnostics for malformed BSL routine/query boundaries.
|
||||
- Incremental diagnostic refresh for changed BSL fragments.
|
||||
- Routine `Экспорт` / `Export` flags preserved in SIR node attributes.
|
||||
- BSL control-flow fixture for calls/writes inside loops and try/except blocks.
|
||||
- Form event handler links from XML metadata to BSL routines.
|
||||
|
||||
Remaining:
|
||||
|
||||
- Keep parser and XML fixtures expanding as new 1C export patterns are encountered.
|
||||
|
||||
### Phase 2 — Object Runtime
|
||||
|
||||
Status: implemented with tests, needs broader fixtures.
|
||||
|
||||
Completed:
|
||||
|
||||
- XML metadata fixtures preserve register dimensions/resources as SIR attributes.
|
||||
- Semantic versioning classifies object rename/move/update changes.
|
||||
- Object impact includes form event handlers and their register writes.
|
||||
- XML fixtures cover child-element forms, commands and role rights.
|
||||
- Query intelligence reports register read/write dependencies.
|
||||
- Transaction topology groups routines by written register target.
|
||||
- Object impact can include scheduled-job integration endpoints from the owning module.
|
||||
|
||||
Remaining:
|
||||
|
||||
- Add more impact/review fixtures for object-level dependency edge cases as new patterns are found.
|
||||
|
||||
### Phase 3 — Runtime Intelligence
|
||||
|
||||
Status: implemented with tests, needs integration depth.
|
||||
|
||||
Remaining:
|
||||
|
||||
- Expand transaction/query intelligence with register movement patterns.
|
||||
- Connect UI semantics to editor panels and review findings.
|
||||
- Add scheduled job and integration cross-links to impact reports.
|
||||
|
||||
### Phase 4 — Knowledge System
|
||||
|
||||
Status: implemented with tests.
|
||||
|
||||
Remaining:
|
||||
|
||||
- Add import fixtures for larger BSP/vendor packs.
|
||||
- Add coverage reports by metadata subtree.
|
||||
|
||||
### Phase 5 — Collaboration
|
||||
|
||||
Status: implemented with tests.
|
||||
|
||||
Remaining:
|
||||
|
||||
- Enforce task/session binding for mutations outside Phase 1 placeholders.
|
||||
- Add UI flow coverage for comments/ownership/activity.
|
||||
|
||||
### Phase 6 — Governance/Operations
|
||||
|
||||
Status: implemented with tests.
|
||||
|
||||
Remaining:
|
||||
|
||||
- Verify full stand runbook on `test-docker`.
|
||||
- Add backup/restore and migration smoke checks.
|
||||
|
||||
### Phase 7 — 1C IDE / Authoring
|
||||
|
||||
Status: working Next.js IDE exists and passes smoke; advanced authoring remains product work.
|
||||
|
||||
Completed:
|
||||
|
||||
- Backend and typed frontend API client for symbol search, go to definition and find references.
|
||||
|
||||
Remaining:
|
||||
|
||||
- Wire editor actions for go to definition, find references and symbol search into IDE panels.
|
||||
- Complete semantic autocomplete from SIR + metadata context.
|
||||
- Complete guarded apply with preview, semantic diff, impact, review, RBAC/privacy and version record.
|
||||
- Complete object/form/report designer flows.
|
||||
- Add browser smoke for key authoring flows.
|
||||
|
||||
### AI Layer
|
||||
|
||||
Status: intentionally gated until semantic truth is stronger.
|
||||
|
||||
Remaining:
|
||||
|
||||
- Add answer/generation policy enforcement to every AI-facing endpoint.
|
||||
- Add prompt/context builders over SIR, metadata, knowledge, privacy and task/session.
|
||||
- Add preview-only AI code generation and guarded apply workflow.
|
||||
|
||||
## Execution Order From Here
|
||||
|
||||
1. Keep all current green checks green with `scripts/check_all.ps1`.
|
||||
2. Finish Phase 1 hardening fixtures and diagnostics.
|
||||
3. Expand Phase 2/3 fixtures around metadata, impact, query and runtime topology.
|
||||
4. Finish guarded apply and object-level authoring API.
|
||||
5. Finish IDE authoring UI and smoke coverage.
|
||||
6. Add AI pair-programmer only after guarded apply is deterministic.
|
||||
7. Verify full stand on local/NAS and shared Docker host.
|
||||
|
||||
## Verification
|
||||
|
||||
Use:
|
||||
|
||||
```powershell
|
||||
.\scripts\check_all.ps1
|
||||
```
|
||||
|
||||
Expected checks:
|
||||
|
||||
- `cargo test && cargo build -p bsl-parser`
|
||||
- `uv run pytest`
|
||||
- `npm run typecheck`
|
||||
- `next build`
|
||||
- optional frontend smoke checks when API/frontend stand is running.
|
||||
@@ -0,0 +1,123 @@
|
||||
# Реальный порядок реализации
|
||||
|
||||
## Phase 1 — Semantic Core
|
||||
|
||||
1. `packages/sir`
|
||||
2. `rust/crates/bsl-parser`
|
||||
- deterministic BSL parser;
|
||||
- JSON CLI contract for Python semantic-kernel integration.
|
||||
3. `packages/semantic-kernel`
|
||||
- current Python parser remains compatible;
|
||||
- consumes Rust parser JSON as canonical BSL parse source when the CLI is configured or auto-discovered;
|
||||
- metadata object to BSL module links via `CONTAINS`.
|
||||
4. `packages/projection-engine`
|
||||
5. `packages/incremental-indexer`
|
||||
|
||||
## Phase 2 — Object Runtime
|
||||
|
||||
1. `packages/one-c-normalizer`
|
||||
- BSL source normalization;
|
||||
- XML metadata extraction for core 1C objects.
|
||||
2. `packages/semantic-versioning`
|
||||
3. `packages/semantic-search`
|
||||
4. `packages/impact-engine`
|
||||
5. `packages/review-engine`
|
||||
|
||||
## Phase 3 — Runtime Intelligence
|
||||
|
||||
1. `runtime-overlays`
|
||||
2. `transaction-topology`
|
||||
3. `query-intelligence`
|
||||
4. `ui-semantics`
|
||||
5. `integration-topology`
|
||||
6. `job-topology`
|
||||
|
||||
## Phase 4 — Knowledge System
|
||||
|
||||
1. global/workspace/project knowledge; ✅
|
||||
2. BSP/vendor docs; ✅
|
||||
3. pattern mining; ✅
|
||||
4. knowledge coverage; ✅
|
||||
5. AI answer policy. ✅
|
||||
|
||||
## Phase 5 — Collaboration
|
||||
|
||||
1. users/workspaces/projects; ✅
|
||||
2. tasks/sessions; ✅
|
||||
3. comments/discussions; ✅
|
||||
4. activity feed; ✅
|
||||
5. ownership. ✅
|
||||
|
||||
## Phase 6 — Governance/Operations
|
||||
|
||||
RBAC ✅, privacy ✅, AI usage ✅, jobs ✅, observability ✅, reports ✅, marketplace ✅, licensing ✅, admin ✅.
|
||||
|
||||
## Phase 7 — 1C IDE / Authoring
|
||||
|
||||
Reference workflow: берём лучшие рабочие паттерны 1С Конфигуратора, но реализуем их как современную AI IDE. Обязательны дерево конфигурации, вкладки открытых объектов, режимы модуль/форма/свойства/события, инспектор, нижние панели проблем/output/diff и быстрый поиск. Дополнительно SFERA должна объединять версии, документацию, знания, обучение, audit и guarded apply.
|
||||
|
||||
1. BSL editor foundation:
|
||||
- syntax highlighting;
|
||||
- diagnostics;
|
||||
- outline;
|
||||
- go to definition;
|
||||
- find references;
|
||||
- symbol search.
|
||||
2. Semantic autocomplete:
|
||||
- current procedure/function context;
|
||||
- local variables and parameters;
|
||||
- object attributes;
|
||||
- tabular sections and columns;
|
||||
- form elements and commands;
|
||||
- known 1C platform APIs;
|
||||
- mixed Russian/English 1C syntax.
|
||||
3. AI pair programmer:
|
||||
- code continuation;
|
||||
- procedure/function generation;
|
||||
- query generation;
|
||||
- register movement generation;
|
||||
- command/form handler generation;
|
||||
- explanation of proposed code.
|
||||
4. 1C object designer:
|
||||
- create/update document/catalog/register/common module metadata;
|
||||
- create/update attributes and tabular sections;
|
||||
- create/update commands, forms, form elements and reports.
|
||||
5. Semantic diff and guarded apply:
|
||||
- preview every manual or AI change;
|
||||
- impact analysis before apply;
|
||||
- review findings before apply;
|
||||
- privacy/RBAC checks;
|
||||
- object-level version record;
|
||||
- rollback point.
|
||||
6. IDE-grade UX:
|
||||
- editor workspace;
|
||||
- object tree;
|
||||
- mode bar: module/form/properties/events/versions/docs/knowledge/training;
|
||||
- properties inspector;
|
||||
- form/report designer;
|
||||
- terminal/command palette;
|
||||
- AI assistant panel;
|
||||
- problems/references/output panels.
|
||||
|
||||
7. Documentation/knowledge/training inside IDE:
|
||||
- docs linked to objects, forms, reports, events and routines;
|
||||
- project/vendor/BSP knowledge available next to the code;
|
||||
- team patterns, decisions and examples surfaced by current context;
|
||||
- learning hints for the selected object and available variables;
|
||||
- search across code, metadata, docs, versions and discussions.
|
||||
|
||||
## Frontend/UI Gate
|
||||
|
||||
Перед началом UI-этапа перечитать и применить актуальные требования:
|
||||
|
||||
- `docs/design-system.md`
|
||||
- `docs/codex-ui-guidelines.md`
|
||||
- `docs/ui-ux-roadmap.md`
|
||||
- `docs/component-architecture.md`
|
||||
- `docs/frontend-stack.md`
|
||||
- `prompts/system-frontend-architect.md`
|
||||
- `prompts/ui-generation-prompt.md`
|
||||
|
||||
Ключевой принцип: SFERA UI должен ощущаться как современная Enterprise AI IDE / Operating System для 1С, а не legacy CRM. Каждый экран обязан иметь AppShell-compatible layout, loading/error/empty/permission states, адаптивность, права доступа, audit trail для важных действий, таблицы с фильтрами/saved views/bulk actions и AI token/cost impact для AI-действий. Для authoring-экранов обязательны editor/object tree/properties inspector/problems/diff/preview/apply states.
|
||||
|
||||
Язык UI/команд: русский по умолчанию, но каждый пользовательский экран должен иметь выбор английского интерфейса. Команды в интерфейсе также проектируются с русским вариантом по умолчанию и английским вариантом как доступным режимом. 1С-код может смешивать русские и английские ключевые слова в одном тексте; parser/review/UI не должны считать это ошибкой.
|
||||
@@ -0,0 +1,96 @@
|
||||
# UI/UX Roadmap SFERA
|
||||
|
||||
SFERA UI — это современная IDE/операционная среда для 1С, а не CRM.
|
||||
|
||||
Для authoring-экранов 1С Конфигуратор является источником сильных workflow-паттернов: дерево конфигурации, вкладки открытых объектов, режимы модуль/форма/свойства/события, правый инспектор и нижние панели. SFERA не повторяет legacy-внешний вид, а переносит эти паттерны в современную AI IDE.
|
||||
|
||||
## Этап 1 — Foundation
|
||||
|
||||
- AppShell
|
||||
- Sidebar
|
||||
- Topbar
|
||||
- theme tokens
|
||||
- auth layout
|
||||
- workspace layout
|
||||
- command palette
|
||||
- базовый 1С dashboard
|
||||
- permissions scaffold
|
||||
- audit trail scaffold
|
||||
|
||||
## Этап 2 — 1С Semantic Workspace
|
||||
|
||||
- дерево проектов 1С
|
||||
- дерево объектов конфигурации
|
||||
- SIR snapshots
|
||||
- semantic graph view
|
||||
- object details inspector
|
||||
- impact analysis
|
||||
- review findings
|
||||
- knowledge coverage
|
||||
- роли и права 1С
|
||||
- privacy markers
|
||||
|
||||
## Этап 3 — IDE Workspace
|
||||
|
||||
- BSL code editor
|
||||
- рабочие режимы: модуль, форма, свойства, события, версии, документация, знания, обучение
|
||||
- подсветка синтаксиса
|
||||
- diagnostics/problems panel
|
||||
- outline
|
||||
- go to definition
|
||||
- find references
|
||||
- rename/refactor preview
|
||||
- semantic search
|
||||
- command palette для IDE-действий
|
||||
|
||||
## Этап 4 — AI Pair Programmer
|
||||
|
||||
- inline code completion
|
||||
- продолжение BSL-кода по текущему контексту
|
||||
- подсказки по доступным переменным, параметрам, реквизитам, табличным частям и формам
|
||||
- генерация процедур, функций, запросов и движений регистров
|
||||
- генерация обработчиков команд и форм
|
||||
- объяснение предложенного кода
|
||||
- token/cost impact перед AI-действием
|
||||
- AI decision audit
|
||||
- объяснение текущих переменных, доступных реквизитов, событий формы и связанных объектов перед генерацией
|
||||
|
||||
## Этап 5 — Object/Form/Report Designer
|
||||
|
||||
- создание и изменение документов, справочников, регистров и общих модулей
|
||||
- создание реквизитов и табличных частей
|
||||
- создание команд
|
||||
- visual form designer
|
||||
- form elements inspector
|
||||
- command handler binding
|
||||
- report designer
|
||||
- metadata diff
|
||||
|
||||
## Этап 5.5 — Documentation, Knowledge, Training
|
||||
|
||||
- документация объекта и формы рядом с редактором
|
||||
- связь знаний с lineage, процедурами, запросами, событиями и задачами
|
||||
- командные паттерны и стандарты кодирования 1С
|
||||
- обучение разработчика на текущем объекте: что можно безопасно написать, какие переменные доступны, какие риски есть
|
||||
- поиск по документации, базе знаний, версиям, обсуждениям и изменениям
|
||||
|
||||
## Этап 6 — Guarded Apply
|
||||
|
||||
- preview всех изменений
|
||||
- semantic diff
|
||||
- impact analysis до применения
|
||||
- review до применения
|
||||
- RBAC/privacy checks
|
||||
- object-level version record
|
||||
- task/session binding
|
||||
- rollback point
|
||||
|
||||
## Этап 7 — Runtime And Operations
|
||||
|
||||
- регламентные задания
|
||||
- интеграции
|
||||
- runtime overlays
|
||||
- operations jobs
|
||||
- observability
|
||||
- marketplace/download center
|
||||
- license/admin panels
|
||||
@@ -0,0 +1,49 @@
|
||||
# VSCode / Cursor Extensions
|
||||
|
||||
## Обязательно
|
||||
|
||||
```txt
|
||||
Tailwind CSS IntelliSense
|
||||
ESLint
|
||||
Prettier
|
||||
Pretty TypeScript Errors
|
||||
Error Lens
|
||||
GitLens
|
||||
```
|
||||
|
||||
## Для UI
|
||||
|
||||
```txt
|
||||
shadcn/studio
|
||||
v0 integration / paste workflow
|
||||
Figma for VS Code
|
||||
Iconify IntelliSense
|
||||
```
|
||||
|
||||
## Для качества кода
|
||||
|
||||
```txt
|
||||
SonarLint
|
||||
Import Cost
|
||||
TypeScript Importer
|
||||
Path Intellisense
|
||||
```
|
||||
|
||||
## Для AI workflow
|
||||
|
||||
```txt
|
||||
Cursor
|
||||
GitHub Copilot
|
||||
Continue
|
||||
Codeium / Windsurf, если используется отдельно
|
||||
```
|
||||
|
||||
## Рекомендация
|
||||
|
||||
Основной UI генерировать через:
|
||||
|
||||
```txt
|
||||
v0 → вставка в проект → Codex refactor → Cursor review
|
||||
```
|
||||
|
||||
Codex не должен генерировать финальный UI без design system rules.
|
||||
Reference in New Issue
Block a user