Initial SFERA platform baseline

This commit is contained in:
2026-05-16 19:03:49 +03:00
commit 3b845c8fce
282 changed files with 55045 additions and 0 deletions
+21
View File
@@ -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.
+411
View File
@@ -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 после подключения реального загрузчика.
+46
View File
@@ -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`.
+104
View File
@@ -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
+72
View File
@@ -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 для важных действий
+34
View File
@@ -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.
+27
View File
@@ -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.
+17
View File
@@ -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.
+13
View File
@@ -0,0 +1,13 @@
# SPRINT 5 — Incremental Indexer
## Цель
Изменился один `.bsl` файл — пересобираем только fragment и применяем delta.
## Components
- source hash;
- change detector;
- SirDelta builder;
- snapshot transition;
- projection delta.
+167
View File
@@ -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
+207
View File
@@ -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 объясняют, почему объект менялся, какими задачами и решениями это было связано.
+81
View File
@@ -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 не использовать как основу.
+391
View File
@@ -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 `&lt;set locally&gt;` вместе с `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`.
+152
View File
@@ -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`.
+282
View File
@@ -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.
+167
View File
@@ -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.
+123
View File
@@ -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 не должны считать это ошибкой.
+96
View File
@@ -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
+49
View File
@@ -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.