mirror of
https://github.com/Direct-Dev-Ru/go-lcg.git
synced 2025-11-16 01:29:55 +00:00
9.2 KiB
9.2 KiB
Дорожная карта развития (функциональность и безопасность)
Документ описывает план развития проекта на ближайшие релизы с фокусом на улучшение функциональности и усиление безопасности.
Принципы
- Безопасность по умолчанию: новые возможности включают безопасные дефолты, опционально ослабляются.
- Обратная совместимость: не ломать существующие сценарии 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.
- Ввести токен доступа для API:
- Транспорт и заголовки безопасности
- Рекомендации по TLS терминации (пример конфигов nginx/caddy) в
serve/README.md. - Security headers: CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, HSTS (при HTTPS).
- Рекомендации по TLS терминации (пример конфигов nginx/caddy) в
- Хранилище и история
- Опциональное шифрование истории на диске (
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(позитив/негатив, лимиты, токены). - Фаззинг критичных функций парсинга/валидации.
- Unit-тесты на
- 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