Initial commit: VoIdeaAI - voice-first AI idea assistant
This commit is contained in:
@@ -0,0 +1,453 @@
|
||||
# VoIdea - Session Context
|
||||
# Этот файл самопополняется при каждом общении
|
||||
# Структурирован для понимания AI-агентами и разработчиками
|
||||
|
||||
Last Updated: 2026-05-12T22:45:00.000000+00:00
|
||||
================================================================================
|
||||
# ИНСТРУКЦИЯ ДЛЯ AI (OpenCode)
|
||||
Last Updated: 2026-05-10T21:00:00.000000+00:00
|
||||
================================================================================
|
||||
|
||||
ПЕРЕД НАЧАЛОМ РАБОТЫ ОБЯЗАТЕЛЬНО ПРОЧТИ ЭТОТ ФАЙЛ!
|
||||
|
||||
Этот файл — единая точка входа для понимания проекта и контекста общения.
|
||||
Обновляется автоматически после каждой сессии.
|
||||
|
||||
Last Updated: 2026-05-10T15:41:04.073549+00:00
|
||||
================================================================================
|
||||
# ПРОЕКТ: VoIdea
|
||||
Last Updated: 2026-05-10T15:41:04.073549+00:00
|
||||
================================================================================
|
||||
|
||||
## Описание
|
||||
VoIdea ("Голос Идей") — гибридное приложение (мобильное + веб) для фиксации
|
||||
и проработки идей с помощью группового ИИ-анализа.
|
||||
|
||||
## Ключевые требования
|
||||
- Работа в условиях нестабильного интернета или оффлайн
|
||||
- Максимальная защита данных пользователя
|
||||
- Гибкий выбор ИИ-моделей (локальных и облачных)
|
||||
- Синхронизация данных между устройствами через VPS
|
||||
|
||||
## Технологический стек
|
||||
- Backend: Python FastAPI, Port 8020
|
||||
- Database: PostgreSQL
|
||||
- Cache/Queue: Redis + Celery
|
||||
- Frontend: React + TypeScript + Tailwind CSS (PWA)
|
||||
- Mobile: iOS/Android (параллельно с вебом)
|
||||
- AI: Yandex GPT, GigaChat
|
||||
|
||||
## Лицензия
|
||||
AGPL-3.0
|
||||
|
||||
Last Updated: 2026-05-10T15:41:04.073549+00:00
|
||||
================================================================================
|
||||
# ДОГОВОРЁННОСТИ И ПРАВИЛА
|
||||
Last Updated: 2026-05-10T15:41:04.073549+00:00
|
||||
================================================================================
|
||||
|
||||
## ОБЯЗАТЕЛЬНЫЕ ПРАВИЛА
|
||||
|
||||
1. **ЯЗЫК**: Все вопросы — на русском языке
|
||||
2. **РЕКОМЕНДАЦИИ**: Всегда даю рекомендации с пояснениями
|
||||
- Объясняю почему рекомендую именно это
|
||||
- Учитываю правильность кодирования и перспективу проекта
|
||||
3. **КАЧЕСТВО КОДА**: Кривой код = переписать сразу
|
||||
- Не тянем "как-нибудь" дальше
|
||||
- Лучше потратить время сейчас чем потом переписывать
|
||||
4. **ПРИОРИТЕТ ПРАВИЛ**: docs/blocks/00-rules.md — основа всего
|
||||
- Если что-то не описано в блоке — смотрим 00-rules.md
|
||||
- Только потом задаём вопрос пользователю
|
||||
|
||||
## АРХИТЕКТУРНЫЕ РЕШЕНИЯ (ADR)
|
||||
|
||||
### ADR-001: PostgreSQL как БД
|
||||
- Выбрана PostgreSQL для всех данных
|
||||
- ACID транзакции, JSONB для гибкости
|
||||
- Масштабируемость до тысяч пользователей
|
||||
|
||||
### ADR-002: 11 системных агентов
|
||||
- DocAgent, AuditAgent, SecurityAgent, SpecAgent, ObserverAgent
|
||||
- QATesterAgent, FixAgent, UITestAgent, RolloutAgent
|
||||
- EvolutionAgent, BacklogAgent
|
||||
|
||||
### ADR-003: OAuth схема — один пользователь = один провайдер
|
||||
- НЕЛЬЗЯ привязать Google к аккаунту зарегистрированному через Яндекс
|
||||
- Нельзя добавить второй OAuth провайдер
|
||||
- Провайдеры: Email, Яндекс, Google, Apple (отложен)
|
||||
|
||||
### ADR-004: Постепенное развёртывание (Rollout)
|
||||
- Stage 0: Development (тесты агентов)
|
||||
- Stage 1: 3 пользователя
|
||||
- Stage 2: 1%
|
||||
- Stage 3: 5%
|
||||
- Stage 4: 15%
|
||||
- Stage 5: 100% (Production)
|
||||
- Решение принимает RolloutAgent + человек
|
||||
|
||||
### ADR-005: Design Tokens (JSON)
|
||||
- Единый источник истины: docs/design-system/tokens.json
|
||||
- Генераторы для CSS, Swift, Kotlin
|
||||
- 3 темы: system (auto), dark, light
|
||||
|
||||
### ADR-006: Agent Versioning
|
||||
- Каждый агент версионируется независимо (A.B.C)
|
||||
- Changelog: CHANGELOG/agents/<name>.md
|
||||
- Авто-детект через SHA256 checksum от __file__
|
||||
- EvolutionAgent управляет minor/major, агенты — patch
|
||||
|
||||
## СИСТЕМНЫЕ АГЕНТЫ (11 штук)
|
||||
|
||||
| Агент | Ответственность | Триггеры |
|
||||
|-------|-----------------|----------|
|
||||
| DocAgent | Документация, комментарии, Runbook | pre-commit, push, manual |
|
||||
| AuditAgent | Соблюдение правил, прогресс проекта | pre-commit, daily, manual |
|
||||
| SecurityAgent | Безопасность, уязвимости, 152-ФЗ | pre-commit, weekly, manual |
|
||||
| SpecAgent | Спецификации, версионирование **проекта**, CHANGELOG | tag creation, push |
|
||||
| ObserverAgent | Наблюдение за пользователями | continuous, daily report |
|
||||
| QATesterAgent | Функциональное тестирование | pre-commit, daily, manual |
|
||||
| FixAgent | Исправление багов (создаёт PR) | QATesterAgent results |
|
||||
| UITestAgent | Визуальное тестирование | weekly, manual |
|
||||
| RolloutAgent | Постепенное развёртывание | after tests, manual |
|
||||
| EvolutionAgent | Саморазвитие и **версионирование агентов** | daily, learning |
|
||||
| BacklogAgent | Управление отложенными задачами | continuous |
|
||||
|
||||
### Особенности агентов:
|
||||
- Автоматический запуск (pre-commit, push, cron)
|
||||
- Ручной запуск через админ-панель (кнопка)
|
||||
- Делегирование между собой при необходимости
|
||||
- Саморазвитие через EvolutionAgent
|
||||
- Чёткое описание ролей и поведения
|
||||
|
||||
## ИИ-АГЕНТЫ (11 ролей для анализа идей)
|
||||
|
||||
| Роль | Провайдер | Описание |
|
||||
|------|-----------|----------|
|
||||
| Координатор | Yandex GPT | Управляет диалогом, обобщает результаты |
|
||||
| Организатор задач | Yandex GPT | Разбивает идею на шаги |
|
||||
| Бизнес-аналитик | Yandex GPT | Оценивает ROI, сроки, аудиторию |
|
||||
| Юрист | GigaChat | Проверяет соответствие законам РФ |
|
||||
| Финансовый консультант | Yandex GPT | Составляет смету, прогноз доходов |
|
||||
| Архитектор решений | Yandex GPT | Проектирует архитектуру |
|
||||
| Тестировщик | Yandex GPT | Составляет тест-кейсы |
|
||||
| UI-дизайнер | Yandex GPT | Прорабатывает интерфейс |
|
||||
| SMM-специалист | Yandex GPT | Планирует продвижение |
|
||||
| Лайф-коуч | Yandex GPT | Помогает ставить цели |
|
||||
| Эксперт по доступности | Yandex GPT | Проверяет инклюзивность |
|
||||
|
||||
### Fallback chain для ИИ-агентов:
|
||||
1. Yandex GPT → первичный
|
||||
2. GigaChat → при недоступности
|
||||
3. Error → вернуть сообщение с retry suggestion
|
||||
|
||||
## ДИЗАЙН-СИСТЕМА
|
||||
|
||||
### Структура
|
||||
- docs/design-system/tokens.json — единый источник истины
|
||||
- docs/design-system/generators/ — Python CLI генераторы
|
||||
- app/design-tokens/ — сгенерированные файлы (CSS, Swift, Kotlin)
|
||||
|
||||
### Темы
|
||||
- system (auto) — определяется по OS
|
||||
- dark — тёмная тема
|
||||
- light — светлая тема
|
||||
|
||||
### Генераторы
|
||||
- CSS Generator → app/design-tokens/css/theme.css
|
||||
- Swift Generator → app/design-tokens/swift/Colors.swift
|
||||
- Kotlin Generator → app/design-tokens/kotlin/colors.xml
|
||||
|
||||
## АДМИН-ПАНЕЛЬ
|
||||
|
||||
### Функции
|
||||
- Просмотр логов (фильтры, критичность)
|
||||
- Управление агентами (запуск, статус, отчёты)
|
||||
- Пользователи (CRUD, роли)
|
||||
- Системное здоровье (БД, Redis, uptime)
|
||||
|
||||
### Логи
|
||||
- PostgreSQL (system_logs) + файлы
|
||||
- Критические: RED + email админу
|
||||
- Предупреждения: ORANGE
|
||||
- Обычные: не подсвечивать
|
||||
|
||||
## БЕЗОПАСНОСТЬ
|
||||
|
||||
- .env никогда в git
|
||||
- JWT: HS256, 60min access, 30 days refresh
|
||||
- Пароли: bcrypt
|
||||
- Pydantic валидация на всех входах
|
||||
- RBAC: user, admin, owner
|
||||
- Защита ввода (от взлома и атак)
|
||||
|
||||
## ЛОГИРОВАНИЕ
|
||||
|
||||
- Формат: JSON для автоматизации
|
||||
- Для людей: админ-панель с цветовой подсветкой
|
||||
- Структура: [ISO8601] [LEVEL] [component] message key=val
|
||||
- Запрещено логировать: пароли, JWT, API keys, raw email
|
||||
|
||||
## BACKLOG ЗАМЕТКИ
|
||||
|
||||
- design-system-generators-note.md
|
||||
- rollout-process-note.md
|
||||
- agent-evolution-note.md
|
||||
- qa-tester-agent-note.md
|
||||
- fix-agent-note.md
|
||||
- hotkeys-system-note.md
|
||||
- undo-redo-note.md
|
||||
- export-formats-note.md
|
||||
- oauth-schema-note.md
|
||||
- changelog-generation-note.md
|
||||
- ui-themes-note.md
|
||||
- car-integration-note.md (ГУ автомобиля — изучить)
|
||||
- rate-limiting-note.md
|
||||
- observer-metrics-stages-note.md
|
||||
- temp-users-cleanup-note.md
|
||||
|
||||
## ВЕРСИОНИРОВАНИЕ
|
||||
|
||||
### Проект (SpecAgent)
|
||||
- Формат: MAJOR.MINOR.PATCH (SemVer)
|
||||
- CHANGELOG/v*.md — файлы по версиям
|
||||
- Новый файл при смене X или Y, патчи в существующий
|
||||
|
||||
### Агенты (EvolutionAgent + само-детект)
|
||||
- Каждый агент: A.B.C, независимо от проекта
|
||||
- CHANGELOG/agents/<name>.md — вся история в одном файле
|
||||
- SHA256 checksum от __file__ → авто-бамп patch
|
||||
- EvolutionAgent: minor при новой capability, major при breaking change
|
||||
|
||||
## ПЛАН РАЗРАБОТКИ (ФАЗЫ)
|
||||
|
||||
```
|
||||
ФАЗА 1: FOUNDATION (2-3 недели) ✅ ЗАВЕРШЕНО
|
||||
├── 00-rules.md ✅
|
||||
├── 01-core ✅
|
||||
├── System Agents (6 штук) ✅
|
||||
├── 02-data ⏳ (следующий)
|
||||
└── 08-devops
|
||||
```
|
||||
|
||||
Last Updated: 2026-05-10T15:41:04.073549+00:00
|
||||
================================================================================
|
||||
# ИСТОРИЯ СЕССИЙ
|
||||
Last Updated: 2026-05-10T15:41:04.073549+00:00
|
||||
================================================================================
|
||||
|
||||
## Session 2026-05-10 (Первая сессия)
|
||||
|
||||
### Настроение
|
||||
Продуктивная, конструктивная. Owner вовлечён, задаёт вопросы, быстро принимает решения.
|
||||
|
||||
### Ключевые решения сессии
|
||||
1. ✅ Создана структура проекта (folders, docs)
|
||||
2. ✅ Адаптирован 00-rules.md для VoIdea
|
||||
3. ✅ Создан детальный план (PLAN.md)
|
||||
4. ✅ Зафиксированы 11 backlog заметок
|
||||
5. ✅ Созданы 5 ADR файлов
|
||||
6. ✅ Созданы 11 spec файлов для ИИ-агентов
|
||||
7. ✅ Создан quick-start в runbook
|
||||
8. ✅ Реализован Block 1: Core
|
||||
9. ✅ Созданы 6 системных агентов (DocAgent, BacklogAgent, SpecAgent, AuditAgent, ObserverAgent, EvolutionAgent)
|
||||
10. ✅ Создан AgentRegistry для централизованного управления
|
||||
11. ✅ Созданы триггеры (pre-commit, cron, manual)
|
||||
12. ✅ Созданы тесты для всех агентов
|
||||
|
||||
### Что уже создано (55+ файлов)
|
||||
- docs/blocks/: 00-rules.md, PLAN.md, AUDIT.md, BACKLOG.md, VERSIONS.md, GLOSSARY.md, full.md
|
||||
- docs/backlog/: 15 файлов (все backlog заметки)
|
||||
- docs/adr/: 5 файлов (001-005)
|
||||
- docs/specs/agents/: 11 файлов (все ИИ-агенты)
|
||||
- docs/instructions/: 4 файла (system-prompt, developer, tester, admin)
|
||||
- docs/design-system/: tokens.json, README.md
|
||||
- docs/runbook/: 01-quick-start.md
|
||||
- app/core/: все файлы Block 1
|
||||
- app/: __init__.py, main.py, README.md
|
||||
- app/agents/ (НОВОЕ): base.py, models.py, registry.py, triggers.py
|
||||
- app/agents/ (НОВОЕ): doc_agent.py, backlog_agent.py, spec_agent.py, audit_agent.py, observer_agent.py, evolution_agent.py
|
||||
- tests/unit/agents/: 7 тестовых файлов
|
||||
|
||||
### Текущий прогресс
|
||||
- Block 0: Rules ✅
|
||||
- Block 1: Core ✅
|
||||
- System Agents (6): DocAgent, BacklogAgent, SpecAgent, AuditAgent, ObserverAgent, EvolutionAgent ✅ (Все созданы!)
|
||||
- System Agents (5): SecurityAgent, QATesterAgent, FixAgent, UITestAgent, RolloutAgent ⏳ (Ожидают)
|
||||
- Остальное: ожидает
|
||||
|
||||
### Следующие шаги
|
||||
1. Block 2: Data (миграции, модели БД)
|
||||
2. Настройка локального окружения (PostgreSQL)
|
||||
3. Запуск первого рабочего API
|
||||
4. Создание оставшихся 5 системных агентов (SecurityAgent, QATesterAgent, FixAgent, UITestAgent, RolloutAgent)
|
||||
|
||||
### Особые замечания
|
||||
- Owner просит все вопросы на русском
|
||||
- Owner принимает все рекомендации с пояснениями
|
||||
- Кривой код = переписать сразу (принцип Owner)
|
||||
- Вопросы задавать только когда НЕ описано в 00-rules.md
|
||||
- Созданы 6 системных агентов: DocAgent, BacklogAgent, SpecAgent, AuditAgent, ObserverAgent, EvolutionAgent
|
||||
- Агенты могут запускаться автоматически (pre-commit, cron) или вручную
|
||||
- Registry обеспечивает централизованное управление агентами
|
||||
- Хранение состояния: PostgreSQL (отчёты, метрики) + Redis (быстрые обновления статуса)
|
||||
|
||||
### Нерешённые вопросы
|
||||
- Точная дата переезда на VPS
|
||||
- Домен (пока подбирает)
|
||||
|
||||
## Session 2026-05-10 (Вторая сессия)
|
||||
|
||||
### Настроение
|
||||
Owner принимает решения быстро, без лишних обсуждений.
|
||||
|
||||
### Ключевые решения сессии
|
||||
1. ✅ Принята архитектура версионирования агентов (A.B.C) — ADR-006
|
||||
2. ✅ Agent versioning отделён от project versioning
|
||||
3. ✅ Каждый агент сам детектирует изменения через SHA256 checksum
|
||||
4. ✅ EvolutionAgent управляет minor/major бампами
|
||||
5. ✅ Changelog агентов: CHANGELOG/agents/<name>.md
|
||||
6. ✅ SpecAgent — только версионирование проекта (уточнено)
|
||||
7. ✅ Определён формат A.B.C для агентов
|
||||
|
||||
### Что сделано в этой сессии
|
||||
- **ADR-006** — Agent Versioning (docs/adr/006-agent-versioning.md)
|
||||
- **00-rules.md** — §4.4 Agent Versioning, §20 уточнён
|
||||
- **VERSIONS.md** — раздел Agent Versioning
|
||||
- **GLOSSARY.md** — термины Agent Version, Checksum, Changelog
|
||||
- **BACKLOG.md** — задачи по версионированию агентов
|
||||
- **requirements.txt** — обновлён под VPS (fastapi==0.115.6 и т.д.)
|
||||
- **AgentConfig** — last_run_at → DateTime, +version, +checksum
|
||||
- **BaseAgent** — compute_checksum(), bump_version(), _check_version(), _write_changelog_entry()
|
||||
- **EvolutionAgent** — actions: version_check, version_bump (minor/major)
|
||||
- **CHANGELOG/agents/** — 11 файлов с начальной версией 1.0.0
|
||||
- **test_base.py** (новый) — 12 тестов на versioning
|
||||
- **test_evolution_agent.py** — 16 тестов (добавлены version_check/bump)
|
||||
- **Исправлено**: `metadata` → `extra` в agents/models.py (reserved word)
|
||||
- **Исправлено**: `AgentTrigger.TAG_CREATION` добавлен в base.py
|
||||
- **Исправлено**: QATesterAgent импорт User из app.models.user
|
||||
- **Исправлено**: FixAgent._identify_error_type (улучшено распознавание)
|
||||
- **Исправлено**: app.core.config добавлен глобальный `settings`
|
||||
- **111 тестов** — все проходят
|
||||
|
||||
### Текущий прогресс
|
||||
- Block 0: Rules ✅
|
||||
- Block 1: Core ✅
|
||||
- Block 2: Data (модели) ✅
|
||||
- Block 3: API (25 routes) ✅
|
||||
- Block 5: Services (5 базовых) ✅
|
||||
- System Agents (11): Все ✅
|
||||
- Test coverage: 125 tests ✅
|
||||
- ADR: 006 ✅
|
||||
- CHANGELOG/agents/: 11 files ✅
|
||||
|
||||
### Следующие шаги
|
||||
1. Block 5-bis: AI integrations (Yandex GPT, GigaChat, Fallback)
|
||||
2. Block 4: WebUI
|
||||
3. Настройка PostgreSQL локально
|
||||
|
||||
## Session 2026-05-10 (Третья сессия)
|
||||
|
||||
### Ключевые решения сессии
|
||||
1. ✅ Block 3: API полностью реализован (25 routes)
|
||||
2. ✅ Tags: PostgreSQL ARRAY (рекомендация принята)
|
||||
3. ✅ Sync делаем в этом блоке (решение Owner)
|
||||
4. ✅ Admin — полное управление (потом дополним)
|
||||
5. ✅ POST /ideas/{id}/analyze — заглушка до Block 5-bis
|
||||
|
||||
### Что создано в этой сессии
|
||||
- **app/schemas/** — 7 файлов: auth, user, idea, agent, sync, admin
|
||||
- **app/services/** — 5 файлов: auth, user, idea, agent, sync
|
||||
- **app/api/v1/** — 7 файлов: __init__, auth, users, ideas, agents, sync, admin
|
||||
- **app/core/dependencies.py** — переписан (get_db, get_current_user, require_admin)
|
||||
- **app/models/idea.py** — tags → ARRAY(String(50))
|
||||
- **app/main.py** — подключён api_v1_router
|
||||
- **tests/unit/api/** — 2 файла: test_routes, test_schemas
|
||||
|
||||
### API Routes (25 шт.)
|
||||
| Роутер | Endpoints |
|
||||
|--------|-----------|
|
||||
| auth | POST register, login, refresh; GET oauth/{provider}, callback |
|
||||
| users | GET/PATCH/DELETE /me |
|
||||
| ideas | GET/POST /, GET/PATCH/DELETE /{id}, POST /{id}/analyze |
|
||||
| agents | GET /, GET /{name}, POST /{name}/run |
|
||||
| sync | POST /pull, /push |
|
||||
| admin | GET /users, PATCH /users/{id}/role, GET /health, /logs |
|
||||
|
||||
### Исправлено
|
||||
- `dependencies.py` — полностью переписан под актуальные модели User (is_superuser вместо role)
|
||||
- `get_current_user` — теперь возвращает User, а не dict
|
||||
- `require_admin` — проверяет is_superuser
|
||||
- `tests/conftest.py` — убран PROJECT_NAME override (ломало тесты)
|
||||
|
||||
### Тесты: 125 passed
|
||||
|
||||
Last Updated: 2026-05-10T15:41:04.073549+00:00
|
||||
================================================================================
|
||||
# АКТИВНЫЕ ЗАМЕТКИ
|
||||
Last Updated: 2026-05-10T15:41:04.073549+00:00
|
||||
================================================================================
|
||||
|
||||
### К изучению
|
||||
- Интеграция с ГУ автомобиля (Android Auto / CarPlay)
|
||||
|
||||
### К реализации позже
|
||||
- Rate limiting для ИИ-агентов
|
||||
- Локальные ИИ-модели
|
||||
- Apple OAuth
|
||||
|
||||
### Возможные улучшения
|
||||
- Автоматическая документация API (генерация из Pydantic)
|
||||
- Типобезопасные агенты (TypedDict + Pydantic)
|
||||
- Мониторинг агентов в реальном времени (WebSocket)
|
||||
- Feature Flags для rollout
|
||||
|
||||
Last Updated: 2026-05-10T15:41:04.073549+00:00
|
||||
================================================================================
|
||||
# КОНТАКТЫ
|
||||
Last Updated: 2026-05-10T15:41:04.073549+00:00
|
||||
================================================================================
|
||||
|
||||
Project Owner: [Указать после заполнения]
|
||||
License: AGPL-3.0
|
||||
Version: 1.0.0
|
||||
|
||||
Last Updated: 2026-05-10T15:41:04.073549+00:00
|
||||
|
||||
Last Updated: 2026-05-12T22:45:00.000000+00:00
|
||||
================================================================================
|
||||
# Session 2026-05-12 (Web App Engine — документация + код-стайл + инструменты)
|
||||
================================================================================
|
||||
|
||||
### Ключевые решения сессии
|
||||
1. ✅ Zustand для новых сториджей (Context не трогать)
|
||||
2. ✅ react-hook-form + zod для сложных форм
|
||||
3. ✅ WCAG AA через eslint-plugin-jsx-a11y (enforcement)
|
||||
4. ✅ i18n-ready: строки через strings.ts, <T>, заглушка en.json
|
||||
5. ✅ ErrorBoundary обязателен вокруг Layout
|
||||
6. ✅ React 18 фиксирован (19 — отдельный этап)
|
||||
7. ✅ QATesterAgent — новый vitest режим
|
||||
8. ✅ Дизайн-токены: 3 генератора (CSS, Swift, Kotlin) реализованы
|
||||
|
||||
### Что создано в этой сессии
|
||||
- Документация: STYLE_GUIDE.md, SPECIFICATION.md, TECHNICAL.md, PROJECT_GUIDE.md
|
||||
- Обновлено: user-guide.md (PWA), admin-guide.md (VPS deploy), template/docs/00-rules.md (ESLint+Vitest)
|
||||
- Компоненты: ErrorBoundary.tsx, SkipToContent.tsx, T.tsx
|
||||
- Стор: stores/auth.ts (Zustand) + AuthContext wrapper
|
||||
- Формы: LoginPage, RegisterPage, IdeaCreate, IdeaEdit (react-hook-form+zod)
|
||||
- WCAG AA: VoiceInput (aria-label+keyboard), VoiceChat (role=log), SettingsPage (htmlFor/id)
|
||||
- i18n: constants/strings.ts, i18n/en.json
|
||||
- Агент: QATesterAgent._run_vitest_tests()
|
||||
- Генераторы: css_generator.py, swift_generator.py, kotlin_generator.py
|
||||
- Инструменты: tools/backup_db.py, tools/metrics_service.py
|
||||
- CI: .github/workflows/ci.yml — frontend lint + test jobs
|
||||
- Тесты: 7 Vitest тестов (ErrorBoundary, SkipToContent, strings) — все passed
|
||||
- TypeScript: tsc --noEmit — 0 errors
|
||||
|
||||
### Зависимости (npm)
|
||||
- Zustand 5.x, react-hook-form 7.x, zod 4.x, @hookform/resolvers
|
||||
- Vitest 4.x, @testing-library/react, jsdom
|
||||
|
||||
================================================================================
|
||||
# КОНЕЦ КОНТЕКСТА
|
||||
Last Updated: 2026-05-12T22:45:00.000000+00:00
|
||||
================================================================================
|
||||
Reference in New Issue
Block a user