Skip to content

Repository files navigation

🧪 GenLab-1C Web

Веб-платформа коллективной экспертной оценки AI-генерированного кода 1С:Предприятие (BSL) по методике SMOP

Часть исследовательского инструментария GenLab-1C, разработанного в рамках научно-исследовательской работы

License: Noncommercial Научная работа Core Engine Stack


Веб-платформа — слой коллективной экспертной оценки поверх вычислительного ядра genlab-1c-core. Если ядро даёт пакетную генерацию и одиночную TUI-разметку, то GenLab-1C Web переводит оценку в многопользовательский режим: эксперты независимо размечают AI-сгенерированный код по критериям S·M·O·P (Syntax · Meaning · Optimization · Platform) через браузер, а результаты сводятся в общую статистику по моделям и задачам.

Создана в рамках научно-исследовательской работы — подробнее в разделе «Научный контекст».


🎬 Видео-обзор

GenLab-1C Web — демо

▶️ Полное видео — video.mp4


📖 Научный контекст

Платформа разработана как часть инструментария научно-исследовательской работы:

«Экспериментальная оценка эффективности искусственного интеллекта в генерации кода для доменно-специфичных платформ (на примере 1С:Предприятие 8)»

Автор Андреев Данила Сергеевич
Научный руководитель Гальцова Юлия Михайловна
Текст работы 4dand/1c-ai-codegen-research-paper

Проблема исследования. Стандартные бенчмарки генерации кода (HumanEval, MBPP) непригодны для доменно-специфичных языков, завязанных на метаданные конфигурации, — таких как BSL платформы 1С:Предприятие 8. Работа предлагает методику и инструментарий для воспроизводимой оценки LLM именно в этом контексте.

Что измеряется:

  • Модели: Claude Opus 4.5, GPT-5.2 Codex, Gemini 3 Flash (через единый шлюз OpenRouter).
  • Категории задач: A — алгоритмические (без контекста метаданных); B — платформенные, требующие контекста конфигурации (УТ 11), который доставляется через Model Context Protocol (MCP).
  • Методика SMOP — четыре равновзвешенных критерия с интегральной метрикой Q = (S + M + O + P) / 4 по дискретной шкале 0 / 2 / 4 / 6 / 8 / 10:
Критерий Что оценивает
S — Syntax Компилируемость кода в среде 1С:Предприятие
M — Meaning Соответствие требованиям задачи
O — Optimization Соблюдение стандартов и производительность
P — Platform Корректность работы с объектами метаданных

Роль этой платформы в исследовании. Ядро (genlab-1c-core) обеспечивает генерацию и одиночную экспертную разметку в TUI. GenLab-1C Web расширяет это до коллективной оценки несколькими экспертами через веб-интерфейс — что повышает надёжность разметки и позволяет считать согласованность оценок между экспертами.


✨ Возможности

  • 🎮 Песочница (Playground) — свободная генерация кода 1С из произвольного промпта: выбор модели, температуры и системного промпта, просмотр результата.
  • 🧪 Эксперименты — запуск по преднастроенным категориям задач A (алгоритмические) и B (платформенные), а также кастомные эксперименты со своими заданиями и параметрами; отслеживание прогресса в реальном времени.
  • 👥 Управление экспертами — создание учётных записей экспертов, роли admin / expert, деактивация (доступно администратору).
  • ✅ Экспертиза кода (SMOP) — независимая многопользовательская разметка: каждый эксперт оценивает прогоны по критериям S·M·O·P (0–10, авто-расчёт Q); оценки изолированы между экспертами — один не видит и не перезаписывает оценки другого.
  • 🔍 Просмотр кода и метаданных — подсветка BSL-кода и вкладка с объектами метаданных конфигурации (контекст через MCP).
  • 📊 Статистика и отчёты — агрегаты по моделям, задачам и экспертам, графики (matplotlib), экспорт в JSON / HTML / LaTeX.
  • ⚙️ Настройки — промпты по категориям (A / B / кастомные), параметры агента, подключение MCP-сервера метаданных.
  • 💳 Баланс OpenRouter и 📖 встроенная документация по методике SMOP.
  • 🔐 Аутентификация — JWT, ролевая модель, начальный администратор из переменных окружения; данные оценок и пользователей — в PostgreSQL.

🚀 Быстрый старт (Docker Compose)

# 1. Клонируем ВМЕСТЕ с ядром — флаг --recurse-submodules обязателен
git clone --recurse-submodules https://github.com/4dand/genlab-1c-web.git
cd genlab-1c-web

# 2. Один .env в корне проекта
cp .env.example .env
#   впишите SECRET_KEY (обязательно) и OPENROUTER_API_KEY (для генерации)

# 3. Запуск всего стека
docker compose up --build

Приложение: http://localhost  (nginx отдаёт SPA и проксирует /api/ на backend)

  • Логин по умолчанию: admin / admin (меняется через ADMIN_USERNAME / ADMIN_PASSWORD)
  • Поднимаются три контейнера: db (PostgreSQL) + backend (FastAPI с впечённым ядром) + frontend (nginx)
  • Миграции и начальный администратор создаются автоматически при первом старте

⚠️ Важно про submodule. Обычный git clone не скачивает ядро — папка core/ останется пустой и сборка упадёт. Если уже склонировали без флага, доберите ядро:

git submodule update --init --recursive

Docker сам сабмодули не тянет — это делает только git.


🛠️ Локальная разработка (без Docker)

Требования: Python 3.11+, Node.js 20+, PostgreSQL 16+.

git clone --recurse-submodules https://github.com/4dand/genlab-1c-web.git
cd genlab-1c-web

# Python-зависимости
pip install -r requirements.txt

# Frontend-зависимости
cd frontend && npm install && cd ..

# Конфигурация
cp .env.example .env   # как минимум задайте SECRET_KEY

Запуск:

python run.py          # только API на http://localhost:8000
python run.py --dev    # API + Vite dev-сервер с hot-reload на http://localhost:3000

В dev-режиме фронт работает на :3000 и проксирует /api на backend (:8000) — см. frontend/vite.config.ts.


🧩 Как это устроено (важно понимать)

Ядро не запускается отдельным сервисом. Оно подключено как git submodule — это вендоринг исходников: при клонировании код ядра приезжает в папку core/, а при сборке Docker COPY core/ core/ кладёт его внутрь backend-образа. Backend импортирует ядро (import src.*) в том же процессе — без сетевых вызовов к «контейнеру ядра».

genlab-1c-core (отдельный репо)         ← библиотека: evaluator, clients, config
        │  git submodule (пин на commit, только исходники)
        ▼
genlab-1c-web (этот репо)                ← + FastAPI backend + React frontend
        │  docker compose up --build
        ▼
[ db: PostgreSQL ] · [ backend: FastAPI + ядро внутри ] · [ frontend: nginx + SPA ]

То есть деплоится одна вещь — веб (ядро внутри). Отдельно «накатывать» или поднимать ядро не нужно.


⚙️ Переменные окружения

Все настройки — в одном файле .env в корне проекта (run.py и docker compose читают именно его).

Переменная Описание По умолчанию
SECRET_KEY Обязательно. Секрет для подписи JWT. Сгенерировать: python -c "import secrets; print(secrets.token_urlsafe(64))"
OPENROUTER_API_KEY Ключ OpenRouter — нужен для генерации кода. Без него платформа запускается, но /generate и запуск экспериментов работать не будут
DATABASE_URL Строка подключения к PostgreSQL postgresql+asyncpg://genlab:genlab@localhost:5432/genlab
ADMIN_USERNAME / ADMIN_PASSWORD Учётка начального администратора (создаётся при первом старте) admin / admin
CORS_ORIGINS Разрешённые origin'ы (через запятую) http://localhost:3000,http://127.0.0.1:3000
ACCESS_TOKEN_EXPIRE_HOURS Время жизни JWT, часы 24

🔸 Про core/.env. У ядра есть свой .env.example — он нужен только при автономном запуске ядра (его собственный CLI/Docker). В составе веб-платформы core/.env не читается: ключ OPENROUTER_API_KEY ядро берёт из окружения процесса, которое наполняет корневой .env. Для веба достаточно одного .env в корне.

🔒 Оба .env в .gitignore — в репозиторий не попадают. Коммитятся только *.env.example.


🗂️ Структура проекта

genlab-1c-web/
├── core/                   # git submodule → genlab-1c-core
│   ├── src/                # ядро: evaluator, clients, config, schemas
│   ├── configs/            # YAML: модели, задачи, SMOP-критерии, настройки
│   └── raw_results/        # результаты генерации (JSON) — наполняется при работе
├── backend/                # FastAPI REST API
│   ├── main.py             # точка входа + lifespan (миграции, сидинг админа)
│   ├── routers/            # auth, config, experiments, evaluations, generate, reports
│   ├── database/           # SQLAlchemy ORM (PostgreSQL: users, evaluations)
│   ├── auth/               # JWT-аутентификация
│   └── migrations/         # Alembic
├── frontend/               # React 18 + Vite + TypeScript + Tailwind
│   └── src/
│       ├── pages/          # Песочница, Эксперименты, Экспертиза, Статистика, Эксперты, Настройки, Login
│       ├── components/     # layout, chat, code viewer, score panel
│       ├── store/          # Zustand (appStore, evaluationStore, authStore)
│       └── api/            # типизированный API-клиент
├── run.py                  # запуск uvicorn (+ опциональный Vite в --dev)
├── docker-compose.yml      # db + backend + frontend
└── Dockerfile              # backend-образ (FastAPI + впечённое ядро)

🔌 API

Полная интерактивная документация — Swagger UI на /docs (в локальном режиме: http://localhost:8000/docs).

Метод Путь Описание
POST /api/v1/auth/login Логин → JWT-токен
GET /api/v1/auth/me Текущий пользователь
POST /api/v1/auth/users Создать эксперта (только админ)
GET /api/v1/models Список моделей
GET /api/v1/tasks Список задач
GET /api/v1/smop-criteria Критерии SMOP
GET /api/v1/experiments Список экспериментов
POST /api/v1/experiments/run Запустить эксперимент (админ)
GET /api/v1/evaluations/{id} Оценки эксперимента
POST /api/v1/evaluations/batch Сохранить SMOP-оценки
POST /api/v1/generate Генерация кода (Песочница)
GET /api/v1/statistics/{id} Статистика по эксперименту

🔗 Связанные репозитории

Репозиторий Описание
genlab-1c-core Вычислительное ядро: генерация, оценка, статистика
1c-ai-codegen-research-paper Текст научно-исследовательской работы

📄 Лицензия и авторство

Распространяется под лицензией PolyForm Noncommercial 1.0.0только для некоммерческого использования: научные исследования, образование, личное изучение. Любое коммерческое использование запрещено.

Разработано в рамках научно-исследовательской работы. Автор: Андреев Данила Сергеевич · Научный руководитель: Гальцова Юлия Михайловна.

При использовании в академических целях — ссылайтесь на текст научно-исследовательской работы.

About

Веб-платформа коллективной экспертной оценки LLM генерации кода 1С:Предприятие (BSL). Артефакт научно-исследовательской работы для НДР-2026. Развитие проекта: github.com/genlab-1c/prism

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages