- Мульти-провайдер: PAPAYU_LLM_PROVIDERS — сбор планов от нескольких ИИ (Claude, OpenAI), агрегация - Тренды дизайна и иконок: вкладка в модалке, поиск по безопасным доменам (Tavily include_domains) - Snyk Code: PAPAYU_SNYK_SYNC, REST API issues → snyk_findings в agent-sync - Documatic: architecture_summary из .papa-yu/architecture.md в agent-sync - Личная автоматизация: capability personal-automation (терминал git/npm/cargo, открытие URL) - agent_sync расширен: snyk_findings, architecture_summary; analyze_project_cmd и run_batch пишут sync - Документация: SNYK_AND_DOCUMATIC_SYNC.md, SECURITY_AND_PERSONAL_AUTOMATION.md, обновлён CLAUDE_AND_AGENT_SYNC Co-authored-by: Cursor <cursoragent@cursor.com>
106 lines
4.7 KiB
Markdown
106 lines
4.7 KiB
Markdown
# Отчёт о выполнении рекомендаций по улучшению
|
||
|
||
**Дата:** 2025-01-31
|
||
**Версия papa-yu:** 2.4.5
|
||
|
||
---
|
||
|
||
## Executive Summary
|
||
|
||
Выполнены рекомендации из `docs/IMPROVEMENT_ROADMAP.md` в рамках Quick wins (1–5 дней). Закрыты ключевые риски SSRF, усилен CI, добавлена база для наблюдаемости.
|
||
|
||
---
|
||
|
||
## 1. CI/CD — quality gate ✅
|
||
|
||
### Сделано
|
||
|
||
| Шаг | Описание |
|
||
|-----|----------|
|
||
| Format check | `cargo fmt --check` — единый стиль кода |
|
||
| Clippy | `cargo clippy --all-targets` — статический анализ |
|
||
| Cargo audit | Проверка уязвимостей в зависимостях (`continue-on-error: true` до стабилизации) |
|
||
| Golden traces | `cargo test golden_traces` — регрессионные тесты v1/v2/v3 |
|
||
|
||
### Файлы
|
||
|
||
- `.github/workflows/protocol-check.yml` → переименован в CI (fmt, clippy, audit, protocol)
|
||
|
||
---
|
||
|
||
## 2. Единая точка сетевого доступа (SSRF) ✅
|
||
|
||
### Сделано
|
||
|
||
1. **Модуль `net`** (`src-tauri/src/net.rs`):
|
||
- Единая точка доступа к `fetch_url_safe`
|
||
- Политика: внешние URL только через `fetch_url_safe`
|
||
|
||
2. **Рефакторинг `trends`**:
|
||
- `fetch_trends_recommendations` переведён с прямого `reqwest::Client::get()` на `net::fetch_url_safe`
|
||
- Добавлен лимит размера ответа: `MAX_TRENDS_RESPONSE_BYTES = 1_000_000`
|
||
- Таймаут: 15 сек
|
||
- Сохранён allowlist хостов (`ALLOWED_TRENDS_HOSTS`) + SSRF-защита `fetch_url_safe`
|
||
|
||
3. **Re-export** `fetch_url_safe` из `online_research` для использования в других модулях
|
||
|
||
### Потоки HTTP (текущее состояние)
|
||
|
||
| Модуль | URL источник | Метод | Защита |
|
||
|--------|--------------|-------|--------|
|
||
| online_research/fetch | Tavily API (результаты поиска) | `fetch_url_safe` | ✅ SSRF, max bytes, timeout |
|
||
| commands/trends | PAPAYU_TRENDS_URLS (env) | `fetch_url_safe` | ✅ Host allowlist + SSRF |
|
||
| llm_planner, weekly_report, distill, llm | PAPAYU_LLM_API_URL (env) | reqwest (доверенный конфиг) | ⚠️ Таймауты, без SSRF (Ollama на localhost) |
|
||
|
||
---
|
||
|
||
## 3. INCIDENTS.md — журнал инцидентов ✅
|
||
|
||
### Сделано
|
||
|
||
- Создан `docs/INCIDENTS.md` с шаблоном записи
|
||
- Описаны известные «больные места»: llm_planner, PATCH/EDIT apply, golden traces
|
||
|
||
---
|
||
|
||
## 4. Что не сделано (mid/long-term)
|
||
|
||
| Рекомендация | Причина |
|
||
|--------------|---------|
|
||
| `cargo clippy -- -D warnings` | Есть текущие предупреждения; CI сначала без `-D warnings` |
|
||
| `cargo deny` | Требует конфигурации deny.toml |
|
||
| SBOM | Требует интеграции CycloneDX |
|
||
| Структурированные JSON-логи | Требует выбора библиотеки и прогонки по коду |
|
||
| ADR, архитектурные границы | Объёмная архитектурная работа |
|
||
|
||
---
|
||
|
||
## 5. Проверка
|
||
|
||
```bash
|
||
cd src-tauri
|
||
cargo fmt --check # OK
|
||
cargo clippy # OK (предупреждения есть)
|
||
cargo test # 105 passed
|
||
```
|
||
|
||
---
|
||
|
||
## 6. Рекомендации на следующий шаг
|
||
|
||
1. Постепенно устранять предупреждения Clippy и включить `-D warnings` в CI.
|
||
2. ~~Добавить `deny.toml` и шаг `cargo deny` в CI.~~ ✅ Выполнено (2026-02-08).
|
||
3. Заполнять `INCIDENTS.md` при разборе сбоев.
|
||
4. Рассмотреть `tracing` или `log` для структурированного логирования.
|
||
|
||
---
|
||
|
||
## 7. Дополнительные изменения (2026-02-08)
|
||
|
||
- **deny.toml** — добавлен, CI включает `cargo deny check` (continue-on-error).
|
||
- **CONTRACTS.md** — создан, документирует все команды и события UI ↔ Tauri.
|
||
- **tauri-plugin-updater**, **tauri-plugin-process** — добавлены для проверки и установки обновлений.
|
||
- **Страница Updates** — UI для проверки обновлений.
|
||
- **ERP-заглушки** — маршруты и страницы: Регламенты, ТМЦ и закупки, Финансы, Персонал.
|
||
- **Clippy** — исправлены предупреждения в analyze_project, apply_actions, generate_actions, settings_export.
|