Repository navigation
docs: add comprehensive project roadmap (phases 1-6) #65
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,279 @@ | ||
| # Package Maximizer — Проектный план развития (Roadmap) | ||
|
|
||
| > Текущая версия: **0.6.0** | Дата плана: 2026-09-02 | Покрытие: **87%** | Тестов: **578** | ||
|
|
||
| ## Текущее состояние | ||
|
|
||
| | Метрика | Значение | | ||
| |---------|----------| | ||
| | Пакетных менеджеров | 22 | | ||
| | Солверов | 7 | | ||
| | Парсеров | 22 | | ||
| | CLI-команд | 12 | | ||
| | Web API эндпоинтов | 16 | | ||
| | Тестов | 578 passed, 2 skipped | | ||
| | Общее покрытие | 87% | | ||
| | Строк кода | ~7,900 | | ||
| | Строк тестов | ~5,300 | | ||
|
|
||
| --- | ||
|
|
||
| ## Фаза 1: Доводка покрытия и стабильности (0.6.x) | ||
|
|
||
| ### 1.1. Покрытие ≥90% по всем модулям | ||
|
|
||
| **Целевые модули (<85%):** | ||
|
|
||
| | Модуль | Текущее | Цель | Приоритет | | ||
| |--------|---------|------|-----------| | ||
| | `solvers/pulp_solver.py` | 68% | ≥85% | Высокий | | ||
| | `solvers/ortools_solver.py` | 70% | ≥85% | Высокий | | ||
| | `cli/main.py` | 72% | ≥85% | Высокий | | ||
| | `solvers/__init__.py` | 79% | ≥85% | Средний | | ||
| | `parsers/pacman_parser.py` | 79% | ≥85% | Средний | | ||
| | `utils/benchmark.py` | 78% | ≥85% | Средний | | ||
| | `parsers/brew_parser.py` | 76% | ≥85% | Средний | | ||
|
|
||
| **Действия:** | ||
| - Написать тесты для всех публичных методов | ||
| - Покрыть edge cases (пустые входы, ошибки, граничные значения) | ||
| - Добавить интеграционные тесты для CLI-команд | ||
|
|
||
| ### 1.2. Фатальный CI gate `--cov-fail-under=90` | ||
|
|
||
| **Текущее:** 85% (нефатальное) | ||
| **Цель:** 90% (фатальное) | ||
|
|
||
| **Действия:** | ||
| - Обновить `ci.yml`: `--cov-fail-under=90` | ||
| - Убрать нефатальный режим | ||
| - Добавить проверку на macOS/Windows без gate (только ubuntu) | ||
|
|
||
| ### 1.3. Известные долги и баги | ||
|
|
||
| - [ ] `CHANGELOG.md`: секция "Planned" устарела (JWT, Flask-Limiter) | ||
| - [ ] `web/app.py`: версия hard-coded как "0.5.0" в health/openapi | ||
| - [ ] `tui/app.py`: требует `textual` extra, нет fallback | ||
| - [ ] `integrations/real_repo_integration.py`: 90% coverage, но не тестируется на реальных системах | ||
|
|
||
| --- | ||
|
|
||
| ## Фаза 2: Расширение экосистемы (0.7.0) | ||
|
|
||
| ### 2.1. Новые пакетные менеджеры | ||
|
|
||
| **Цель:** 30+ менеджеров | ||
|
|
||
| | Менеджер | Платформа | Приоритет | | ||
| |----------|-----------|-----------| | ||
| | Nix | Linux/macOS | Высокий | | ||
| | Guix | Linux | Высокий | | ||
| | Spack | Linux (HPC) | Высокий | | ||
| | xbps | Void Linux | Средний | | ||
| | pkgsrc | NetBSD | Средний | | ||
| | apk-tools | Alpine (уже есть) | — | | ||
| | Homebrew Linux | Linux | Средний | | ||
| | Flatpak | Linux (уже есть) | — | | ||
| | Snap | Linux (уже есть) | — | | ||
| | AppImage | Linux | Низкий | | ||
|
|
||
| ### 2.2. Новые солверы | ||
|
|
||
| | Солвер | Тип | Статус | | ||
| |--------|-----|--------| | ||
| | CP-SAT (ORTools) | CP | ✅ Есть | | ||
| | Z3 | SMT | ✅ Есть | | ||
| | PuLP | ILP | ✅ Есть | | ||
| | MaxSAT | SAT | ✅ Есть | | ||
| | MiniSat | SAT | ✅ Есть | | ||
| | Greedy | Heuristic | ✅ Есть | | ||
| | Enhanced Greedy | Heuristic | ✅ Есть | | ||
| | **OR-Tools CP-SAT (улучшенный)** | CP | 🔴 Нет | | ||
| | **SCIP** | MILP | 🔴 Нет | | ||
| | **CBC** | MILP | 🔴 Нет | | ||
|
|
||
| ### 2.3. Улучшенный CLI | ||
|
|
||
| **Новые команды:** | ||
| - `package-maximizer analyze` — анализ установленных пакетов | ||
| - `package-maximizer diff` — сравнение двух списков пакетов | ||
| - `package-maximizer lock` — генерация lockfile | ||
| - `package-maximizer verify` — проверка совместимости | ||
| - `package-maximizer stats` — статистика по пакетам | ||
|
|
||
| **Улучшения:** | ||
| - Интерактивный режим (`-i`) | ||
| - Цветной вывод (через `rich` или `colorama`) | ||
| - Прогресс-бар для долгих операций | ||
| - Shell completion (bash/zsh/fish) | ||
|
|
||
| --- | ||
|
|
||
| ## Фаза 3: Веб-интерфейс и API (0.8.0) | ||
|
|
||
| ### 3.1. Расширение Web API | ||
|
|
||
| **Новые эндпоинты:** | ||
|
|
||
| | Метод | Эндпоинт | Описание | | ||
| |-------|----------|----------| | ||
| | GET | `/api/v1/managers` | ✅ Есть | | ||
| | GET | `/api/v1/solvers` | ✅ Есть | | ||
| | GET | `/api/v1/parsers` | ✅ Есть | | ||
| | POST | `/api/v1/maximize` | ✅ Есть | | ||
| | POST | `/api/v1/export` | ✅ Есть | | ||
| | POST | `/api/v1/benchmark` | ✅ Есть | | ||
| | GET | `/api/v1/cache/stats` | ✅ Есть | | ||
| | DELETE | `/api/v1/cache` | ✅ Есть | | ||
| | **POST** | **`/api/v1/validate`** | 🔴 Нет | | ||
| | **POST** | **`/api/v1/resolve`** | 🔴 Нет | | ||
| | **GET** | **`/api/v1/packages`** | 🔴 Нет | | ||
| | **POST** | **`/api/v1/install`** | 🔴 Нет | | ||
| | **GET** | **`/api/v1/health/detailed`** | 🔴 Нет | | ||
|
|
||
| ### 3.2. Аутентификация и безопасность | ||
|
|
||
| - [ ] JWT-токены (наряду с API-ключом) | ||
| - [ ] Flask-Limiter для rate limiting | ||
| - [ ] CORS-поддержка | ||
| - [ ] HTTPS-only режим | ||
| - [ ] Audit log запросов | ||
|
|
||
| ### 3.3. Документация API | ||
|
|
||
| - [ ] OpenAPI 3.0 spec (частично есть) | ||
| - [ ] Swagger UI | ||
| - [ ] Redoc | ||
| - [ ] Примеры запросов (curl, Python, JavaScript) | ||
|
|
||
| --- | ||
|
|
||
| ## Фаза 4: Интеграции и экосистема (0.9.0) | ||
|
|
||
| ### 4.1. Интеграция с реальными системами | ||
|
|
||
| **Текущее:** `real_repo_integration.py` — 90% coverage, но не тестируется на реальных системах | ||
|
|
||
| **Цель:** полная интеграция с: | ||
| - APT (Debian/Ubuntu) | ||
| - Pacman (Arch Linux) | ||
| - DNF (Fedora) | ||
| - Homebrew (macOS) | ||
| - Winget (Windows) | ||
| - Chocolatey (Windows) | ||
|
|
||
| ### 4.2. Форматы импорта/экспорта | ||
|
|
||
| **Текущее:** JSON, CSV, GraphML | ||
|
|
||
| **Добавить:** | ||
| - YAML | ||
| - TOML | ||
| - XML | ||
| - Markdown (для документации) | ||
| - HTML (для отчётов) | ||
| - PDF (для отчётов) | ||
|
|
||
| ### 4.3. Lockfile формат | ||
|
|
||
| **Цель:** генерация и чтение lockfile | ||
|
|
||
| ```yaml | ||
| # package-lock.yaml | ||
| version: "1.0" | ||
| manager: apt | ||
| packages: | ||
| - name: nginx | ||
| version: 1.24.0 | ||
| checksum: sha256:abc123... | ||
| - name: postgresql | ||
| version: 15.3 | ||
| checksum: sha256:def456... | ||
| generated_at: "2026-09-02T12:00:00Z" | ||
| ``` | ||
|
|
||
| --- | ||
|
|
||
| ## Фаза 5: Производительность и масштабирование (1.0.0) | ||
|
|
||
| ### 5.1. Кэширование | ||
|
|
||
| **Текущее:** in-memory LRU cache | ||
|
|
||
| **Улучшения:** | ||
| - Redis backend | ||
| - Disk-based cache (SQLite) | ||
| - TTL для ключей | ||
| - Cache invalidation | ||
| - Cache warming | ||
|
|
||
| ### 5.2. Асинхронность | ||
|
|
||
| - [ ] `asyncio` для I/O операций | ||
| - [ ] `aiohttp` для веб-сервера | ||
| - [ ] Параллельный бенчмаркинг | ||
| - [ ] Пакетная обработка | ||
|
|
||
| ### 5.3. Масштабирование | ||
|
|
||
| - [ ] Горизонтальное масштабирование (stateless) | ||
| - [ ] Очередь задач (Celery/RQ) | ||
| - [ ] Метрики (Prometheus) | ||
| - [ ] Health checks | ||
| - [ ] Graceful shutdown | ||
|
|
||
| --- | ||
|
|
||
| ## Фаза 6: Продвинутые функции (1.x) | ||
|
|
||
| ### 6.1. ML-рекомендации | ||
|
|
||
| - [ ] Рекомендации пакетов на основе истории | ||
| - [ ] Предсказание конфликтов | ||
| - [ ] Автоматическое разрешение зависимостей | ||
| - [ ] Кластеризация пакетов | ||
|
|
||
| ### 6.2. Визуализация | ||
|
|
||
| - [ ] Граф зависимостей (D3.js) | ||
| - [ ] Тепловая карта конфликтов | ||
| - [ ] Таймлайн изменений | ||
| - [ ] Dashboard (Streamlit/Gradio) | ||
|
|
||
| ### 6.3. Плагины | ||
|
|
||
| - [ ] Система плагинов для парсеров | ||
| - [ ] Система плагинов для солверов | ||
| - [ ] Система плагинов для экспортеров | ||
| - [ ] Plugin registry | ||
|
|
||
| --- | ||
|
|
||
| ## Метрики успеха | ||
|
|
||
| | Метрика | Текущее | Фаза 1 | Фаза 2 | Фаза 3 | Фаза 4 | Фаза 5 | | ||
| |---------|---------|--------|--------|--------|--------|--------| | ||
| | Покрытие | 87% | 90% | 92% | 94% | 95% | 95% | | ||
| | Тестов | 578 | 650 | 750 | 850 | 950 | 1000+ | | ||
| | Менеджеров | 22 | 22 | 30 | 30 | 35 | 35 | | ||
| | Солверов | 7 | 7 | 8 | 8 | 9 | 10 | | ||
| | CLI-команд | 12 | 15 | 18 | 20 | 22 | 25 | | ||
| | Web API | 16 | 16 | 18 | 22 | 25 | 30 | | ||
|
|
||
| --- | ||
|
|
||
| ## Известные риски | ||
|
|
||
| 1. **Зависимости от системных пакетов** — некоторые парсеры требуют установленных менеджеров | ||
| 2. **Кросс-платформенность** — тестирование на всех ОС сложно | ||
| 3. **Производительность** — большие списки пакетов могут быть медленными | ||
| 4. **Безопасность** — выполнение команд пакетных менеджеров требует осторожности | ||
|
|
||
| --- | ||
|
|
||
| ## Следующие шаги (немедленно) | ||
|
|
||
| 1. **Покрытие `solvers/pulp_solver.py` и `solvers/ortools_solver.py`** — самые слабые модули | ||
| 2. **Обновить `web/app.py` версию** — исправить hard-coded "0.5.0" | ||
| 3. **Добавить тесты для `utils/benchmark.py`** — 78% coverage | ||
| 4. **Обновить `CHANGELOG.md`** — убрать устаревший "Planned" раздел | ||
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2. Ci gate status is wrong
🐞 Bug⚙ MaintainabilityAgent Prompt
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools