Files
go-lcg/ROADMAP.md

9.2 KiB
Raw Blame History

Дорожная карта развития (функциональность и безопасность)

Документ описывает план развития проекта на ближайшие релизы с фокусом на улучшение функциональности и усиление безопасности.

Принципы

  • Безопасность по умолчанию: новые возможности включают безопасные дефолты, опционально ослабляются.
  • Обратная совместимость: не ломать существующие сценарии CLI и API.
  • Прозрачность: чёткие Changelog, версии по SemVer, миграции и откаты.
  • Качество: тесты, линтеры, аудит зависимостей, автоматизация релизов.

Вехи и цели

v2.1.0 — Формализация API и UX улучшения

  • REST API
    • Описать POST /execute в OpenAPI (swagger.yaml/json) и приложить в репозитории.
    • Валидация входа по схеме: обязательные поля, ограничения длины, лимит размера тела.
    • Явные коды ошибок и структура ответа (коды/сообщения).
  • Безопасность API (первый этап)
    • Дополнить защиту: ограничение размера тела (например, 64KB), тайм-ауты на чтение/запись.
    • Rate limit (встроенный простой токен-бакет, по IP). Конфиг через env.
    • Логирование попыток доступа и ошибок API (с редактированием PII).
  • Веб-интерфейс
    • Улучшения мобильной версии (доступность, контраст, a11y-метки).
    • Переключатель темы (light/dark), сохранение предпочтений.
  • Промпты
    • Экспорт/импорт системных промптов (JSON) из UI/CLI.
    • Превью при редактировании промптов в UI.
  • Документация
    • API_GUIDE.md: синхронизировать с OpenAPI.
    • USAGE_GUIDE.md: добавить раздел «Ограничения API и лимиты».

v2.2.0 — Усиление безопасности и управление доступом

  • Аутентификация/Авторизация для веб-сервера
    • Ввести токен доступа для API: LCG_SERVER_TOKEN (Bearer), отключаемо.
    • Сессии UI (опционально): cookie HttpOnly + SameSite=strict, CSRF-защита форм.
    • CORS: явный список разрешённых Origin через LCG_CORS_ORIGINS.
  • Транспорт и заголовки безопасности
    • Рекомендации по TLS терминации (пример конфигов nginx/caddy) в serve/README.md.
    • Security headers: CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, HSTS (при HTTPS).
  • Хранилище и история
    • Опциональное шифрование истории на диске (LCG_HISTORY_ENCRYPTION_KEY_FILE).
    • Права на файлы истории и результатов: 0600, директории 0700.
    • Настраиваемая ретенция истории (дни/размер). Авто-очистка.
  • Наблюдаемость
    • Аудит-лог действий UI/API с маскированием чувствительных данных.
    • Включаемые/отключаемые метрики (prometheus endpoint — опционально, по отдельному порту/токену).

v2.3.0 — Расширяемость и производительность

  • Плагины провайдеров
    • Интерфейс адаптеров (провайдеры LLM), регистрация через конфиг/билд-теги.
    • Образцы адаптеров и гайды по разработке.
  • Производительность
    • Пулы HTTP-клиентов, connection reuse, упреждающие таймауты на уровне контекста.
    • Кэширование результатов подробных объяснений (опционально, по ключу запроса).
  • Расширения API
    • Пакетная обработка запросов (batch) с квотой.
    • Пагинация и фильтрация для /history (если будет публичный REST).
  • Дистрибуция
    • Улучшения .goreleaser: публикация SBOM, подписи (cosign), детерминированные сборки.
    • Готовые пакеты: deb/rpm, инструкции для brew/scoop (по возможности).

Backlog (кандидаты)

  • Потоковая генерация (stream) и WebSocket-канал (при наличии поддержки у провайдеров).
  • Оффлайн-режим/кэширование моделей для локальных провайдеров.
  • Расширенный поиск по результатам/истории, теги и сохранённые фильтры.
  • Резервное копирование и восстановление каталога результатов/истории.
  • Улучшение доступности (a11y), горячие клавиши, локализация интерфейса.

Техническое качество

  • Обновление стека
    • Обновить Go (минимум 1.20+), пересобрать и протестировать совместимость.
    • Регулярные обновления зависимостей и проверка уязвимостей (govulncheck).
  • Линтеры и проверка качества
    • Включить golangci-lint, staticcheck, gosec в CI.
    • Форматирование и единый стиль, pre-commit хуки.
  • Тесты
    • Unit-тесты на serve/* (маршруты, валидация входных данных, заголовки).
    • Интеграционные тесты API /execute (позитив/негатив, лимиты, токены).
    • Фаззинг критичных функций парсинга/валидации.
  • CI/CD
    • GitHub Actions: сборка, тесты, линты, релизы. Генерация чек-сумм, подписи, SBOM.
    • Автоматическая публикация релизов и проверок артефактов.

Конфигурация (новые/уточняемые переменные)

  • LCG_SERVER_TOKEN — токен доступа для API (Bearer). Отключаемый режим.
  • LCG_RATE_LIMIT — глобальные лимиты (например, 60/m, 5/s).
  • LCG_CORS_ORIGINS — список разрешённых Origin.
  • LCG_HISTORY_ENCRYPTION_KEY_FILE — путь к ключу для шифрования истории (опц.).
  • LCG_MAX_BODY_BYTES — максимальный размер тела запроса, байты (по умолчанию 65536).
  • LCG_BROWSER_PATH — путь к браузеру для --browser.

Политика релизов

  • SemVer: MINOR — функционал без ломаний, PATCH — багфиксы/мелкие улучшения.
  • Каждый релиз: обновлённый CHANGELOG.txt, теги vX.Y.Z, двуязычная документация (RU/EN при возможности).
  • Security Advisories: отдельный раздел/ISSUE шаблон для отчётов об уязвимостях.

Критерии приемки (примеры)

  • v2.1.0: OpenAPI спецификация доступна, API валидируется по схеме, лимит размера тела и таймауты соблюдаются, добавлены тесты в CI.
  • v2.2.0: Доступ к API с токеном включаем/отключаем через env; активированы security-заголовки; есть базовые правила CORS; аудит-лог включается флагом.
  • v2.3.0: Пулы клиентов, бенчмарки показывают улучшение p95 латентности, есть механизм подключения новых провайдеров.

Риски и смягчение

  • Ломание совместимости при усилении безопасности → режим совместимости через env/флаги.
  • Рост сложности конфигурации → шаблоны конфигов и «рецепты» в README/serve/README.md.
  • Производительные регрессии из-за валидации/лимитов → профилирование и кэширование на горячих путях.

Последнее обновление: 2025-10-22