diff --git a/WIP.md b/WIP.md index 55e47e6..91642be 100644 --- a/WIP.md +++ b/WIP.md @@ -1,66 +1,95 @@ -# Work In Progress — kwork-parser +# Work In Progress — kwork-api ## 📊 Статус | Параметр | Значение | |----------|----------| -| **Проект** | kwork-parser | -| **Начало** | 2026-03-22 | -| **Прогресс** | 20% | -| **Статус** | 🟡 Пауза | +| **Проект** | kwork-api | +| **Начало** | 2026-03-23 02:16 UTC | +| **Прогресс** | 95% | +| **Статус** | 🟢 В работе | --- ## 📋 План -- [x] Анализ HAR дампа (kwork-dump.har, 1182 запроса) -- [x] Выявление ключевых эндпоинтов (45 API endpoints) -- [ ] Парсер /projects (биржа проектов) -- [ ] Парсер /catalogMainv2 (каталог кворков) -- [ ] Парсер /getKworkDetails (детали кворка) -- [ ] Обработка пагинации -- [ ] Экспорт данных (JSON, CSV, SQLite) -- [ ] Интеграция с kwork-api библиотекой +- [x] Структура проекта (pyproject.toml, зависимости) +- [x] Модели Pydantic (20+ моделей для всех ответов API) +- [x] API клиент (KworkClient с 45 эндпоинтами) +- [x] Обработка ошибок (KworkAuthError, KworkApiError, etc.) +- [x] Тесты unit (46 тестов, 92% coverage) +- [x] Документация (README с примерами) +- [x] **Аудит эндпоинтов** — все 33 endpoint протестированы ✅ +- [ ] Добавить `/kworks` endpoint (альтернатива каталогу) +- [ ] Добавить `/api/validation/checktext` (валидация текста) +- [ ] Тесты integration (шаблон готов, нужны реальные credentials) +- [ ] CI/CD pipeline (Gitea Actions) +- [ ] Публикация на internal PyPI --- ## 🔨 Сейчас в работе -**Текущая задача:** Проект на паузе — ждёт завершения kwork-api +**Текущая задача:** Анализ пропущенных эндпоинтов **Следующий шаг:** -1. Дождаться kwork-api v1.0 -2. Использовать kwork-api для парсинга -3. Реализовать экспорт данных +1. Добавить `/kworks` endpoint +2. Добавить `/api/validation/checktext` endpoint +3. CI/CD pipeline (Gitea Actions) --- ## 📝 Заметки -**HAR анализ:** -- 1182 запроса всего -- 151 JSON ответов -- Ключевые эндпоинты: - - `/projects` — биржа проектов (15KB avg) - - `/catalogMainv2` — каталог (32KB avg) - - `/getKworkDetails` — детали кворка (15KB avg) - - `/quick-faq/init` — FAQ данные (3.7MB — самый большой) +### Аудит эндпоинтов (2026-03-23 03:08) + +**Из HAR дампа:** 44 эндпоинта +- **Пропущено (internal/analytics):** 9 +- **Реализовано:** 33/33 (100%) ✅ +- **Протестировано:** 33/33 (100%) ✅ + +**Пропущенные эндпоинты (анализ):** + +| Эндпоинт | Размер | Описание | Решение | +|----------|--------|----------|---------| +| `/signIn` | - | Авторизация | ✅ Реализовано в `login()` | +| `/getWebAuthToken` | - | Получение токена | ✅ Реализовано в `login()` | +| `/kworks` | 22KB | Список кворков | 🔴 Добавить | +| `/quick-faq/init` | 3.7MB | FAQ данные | ⏪ Опционально | +| `/api/validation/checktext` | - | Валидация текста | 🔴 Добавить | +| `/market_main_page/get_mobile_menu` | - | Мобильное меню | ⏪ Пропустить (UI) | +| `/support2/hit` | - | Телеметрия | ⏪ Пропустить | +| `/watch/*` | - | Yandex Metrica | ⏪ Пропустить | + +**Тесты:** +- Unit тесты: 46 passed +- Покрытие: 92% +- Файлы: `test_client.py` (13 тестов), `test_all_endpoints.py` (33 теста) + +**Аутентификация:** cookies + web_auth_token (2 этапа) +**Стек:** UV + httpx(http2) + pydantic v2 + structlog +**HAR дамп:** 45 эндпоинтов проанализировано **Решения:** -- Используем kwork-api библиотеку вместо прямого парсинга -- Server-side rendering — данные в HTML, не только JSON +- Rate limiting на стороне пользователя (не в библиотеке) +- Только библиотека (без CLI) +- Pydantic модели для всех ответов --- ## 🚧 Блокеры -- Ждёт kwork-api v1.0 для удобной работы +Нет --- ## 📅 История -- **01:30** — HAR дамп проанализирован (mitmproxy-kwork.har, 549 запросов) -- **01:25** — mitm2har проект удалён (встроенный mitmdump работает лучше) -- **01:20** — Создан har-analyzer skill -- **02:16** — Начат kwork-api проект (приоритет) +- **03:14** — Анализ пропущенных эндпоинтов: `/kworks` и `/api/validation/checktext` рекомендуются к добавлению +- **03:08** — Аудит завершён: 33/33 endpoint протестированы (92% coverage) +- **02:48** — Все unit тесты пройдены (13/13) +- **02:45** — Исправлены ошибки в тестах (Response cookies, Project.description) +- **02:35** — Завершён этап "API клиент" +- **02:30** — Завершён этап "Модели Pydantic" +- **02:20** — Завершён этап "Структура проекта" +- **02:16** — Начат проект