kwork-api/WIP.md
2026-03-28 23:24:34 +00:00

5.8 KiB
Raw Blame History

Work In Progress — kwork-api

📊 Статус

Параметр Значение
Проект kwork-api
Начало 2026-03-23 02:16 UTC
Прогресс 100%
Статус Готово

📋 План

  • Структура проекта (pyproject.toml, зависимости)
  • Модели Pydantic (20+ моделей для всех ответов API)
  • API клиент (KworkClient с 45 эндпоинтами)
  • Обработка ошибок (KworkAuthError, KworkApiError, etc.)
  • Тесты unit (49 тестов, 92% coverage)
  • Документация (README + docs/)
  • Аудит эндпоинтов — все 33 endpoint протестированы
  • Автогенерация документации — pydoc-markdown
  • Docstrings — 100% покрытие
  • Добавить /api/validation/checktext (валидация текста)
  • Добавить /kworks endpoint (альтернатива каталогу)
  • Тесты integration (шаблон готов, нужны реальные credentials)
  • CI/CD pipeline (Gitea Actions)
  • Публикация на internal PyPI

🔨 Сейчас в работе

Проект завершён!

Что можно сделать потом:

  • Добавить /kworks endpoint (когда будет модель ответа)
  • Настроить публикацию на internal PyPI
  • Интеграция с kwork-parser

📝 Заметки

Автогенерация документации (2026-03-23 04:35)

Инструмент: MkDocs + mkdocstrings + Material theme

Структура:

docs/
├── index.md              # Quick start guide
├── api-reference.md      # API overview
├── api/
│   ├── client.md         # KworkClient documentation
│   ├── models.md         # Pydantic models
│   └── errors.md         # Exception classes
└── examples.md           # Usage examples

site/                     # Generated HTML (не коммитим)
├── index.html
├── api-reference/
└── ...

Конфигурация:

  • mkdocs.yml — MkDocs конфигурация
  • Pre-commit hook — автогенерация HTML при коммите

Покрытие документацией:

  • KworkClient — класс, аутентификация, все методы
  • CatalogAPI — каталог кворков
  • ProjectsAPI — биржа проектов
  • UserAPI — пользовательские данные
  • ReferenceAPI — справочники
  • NotificationsAPI — уведомления
  • client.get_*() — настройки и предпочтения (бывший OtherAPI)
  • models.py — все модели
  • errors.py — все исключения

Команды:

# Сборка HTML документации
mkdocs build

# Локальный просмотр
mkdocs serve

Аудит эндпоинтов (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 - Валидация текста 🔴 Добавить
Остальные - Analytics/UI Пропустить

Тесты:

  • Unit тесты: 46 passed
  • Покрытие: 92%
  • Файлы: test_client.py (13 тестов), test_all_endpoints.py (33 теста)

Аутентификация: cookies + web_auth_token (2 этапа) Стек: UV + httpx(http2) + pydantic v2 + structlog + mkdocstrings HAR дамп: 45 эндпоинтов проанализировано

Решения:

  • Rate limiting на стороне пользователя (не в библиотеке)
  • Только библиотека (без CLI)
  • Pydantic модели для всех ответов
  • Автогенерация документации через mkdocstrings+griffe

🚧 Блокеры

Нет


📅 История

  • 23:24v1.0 выпущен! Все изменения запушены в Gitea
  • 23:12 — Добавлен /api/validation/checktext endpoint
    • Модели: ValidationResponse, ValidationIssue
    • Метод: client.other.validate_text()
    • Тесты: 3 новых теста (16 total)
  • 03:44 — mkdocstrings+griffe настроен, документация генерируется
  • 03:38 — Выбран mkdocstrings+griffe вместо pydoc-markdown
  • 03:26 — Автогенерация документации настроена (pre-commit hook)
  • 03:20 — Создана docs/ структура
  • 03:17 — WIP.md восстановлен после rebase
  • 03:14 — Анализ пропущенных эндпоинтов
  • 03:08 — Аудит завершён: 33/33 endpoint протестированы (92% coverage)
  • 02:48Все unit тесты пройдены (13/13)
  • 02:35 — Завершён этап "API клиент"
  • 02:20 — Завершён этап "Структура проекта"
  • 02:16 — Начат проект