Files
voidea/SESSION_CONTEXT.md
T

454 lines
23 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
================================================================================