8000 docs: add comprehensive project roadmap (phases 1-6) by dominicusin · Pull Request #65 · dominicusin/package-maximizer · GitHub
[go: up one dir, main page]

Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
279 changes: 279 additions & 0 deletions PROJECT_PLAN.md
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% (фатальное)
Comment on lines +42 to +45
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remediation recommended

2. Ci gate status is wrong 🐞 Bug ⚙ Maintainability

The roadmap labels the current 85% coverage threshold as nonfatal, but Ubuntu CI passes
--cov-fail-under=85 directly to pytest and fails when coverage is below it. This incorrect
baseline makes the Phase 1 work item misleading about what CI behavior still needs to change.
Agent Prompt
## Issue description
The roadmap incorrectly says the existing 85% coverage gate is nonfatal.

## Issue Context
Ubuntu CI sets `COV_FAIL_UNDER` to 85 and passes the corresponding `--cov-fail-under` option to pytest without suppressing failures. macOS and Windows already run without that gate.

## Fix Focus Areas
- PROJECT_PLAN.md[42-50]
- .github/workflows/ci.yml[122-134]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


**Действия:**
- Обновить `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" раздел
Loading
Loading
0