Вот подробное техническое задание (ТЗ) для senior Python-разработчика (или ИИ Codex), чтобы он реализовал систему тестирования и CI по best practices, ориентированную на продакшен и Cloud Native подходы:
Обеспечить полное покрытие тестами и интеграцию тестов в CI/CD pipeline на GitHub Actions для FastAPI-приложения (apps/chat/app), включая unit, integration и API schema tests. Всё должно соответствовать best practices, быть production-ready и совместимо с cloud-native подходами (CNCF-friendly).
- Python >= 3.10
- Приложение FastAPI внутри
apps/chat/app - Текущая структура:
apps/chat/app/{api.py, main.py, behavior/, integrations/, core/} - Есть
pyproject.toml,docker-compose.yml,.github/workflows/ - Есть LLM-интеграция (
CrewAI), OpenTelemetry,notion-client,structlog - В
tests/есть зачатки:test_models.py,test_logging.py
-
Покрытие кода тестами
-
Написать unit-тесты для:
BehaviorDefinition,AgentSchema,TaskSchemanotion_client.py(моки и HTTP-заглушки)llm_client,chat_service
-
Написать integration-тесты:
- для
/behavior/schema(FastAPI TestClient) - подключение crewai и yaml-файлов
- для
-
Примеры:
tests/behavior/test_models.py,tests/integrations/test_endpoints.py
-
-
Тестовый фреймворк
- Использовать
pytestкак основной фреймворк - Настроить
conftest.pyс фикстурами - Добавить
pytest.iniилиpyproject.tomlконфиг с testpaths
- Использовать
-
Линтеры и типы
- Интеграция
ruffиmypyчерез Makefile - Обработка
PYTHONPATH, или использованиеeditable install(-e .) дляapps/chat/app
- Интеграция
-
Makefile
-
Добавить команды:
test: pytest lint: ruff . type: mypy apps/chat/app check: lint type test ci: check
-
-
CI/CD
-
Добавить
.github/workflows/test.yamlon: push: branches: [main] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: actions/setup-python@v4 with: python-version: "3.10" - name: Install deps run: | python -m pip install --upgrade pip pip install -e .[dev] - name: Run tests run: make ci
-
-
Pyproject/requirements
-
Обновить
pyproject.toml:[project.optional-dependencies] dev = ["pytest", "mypy", "ruff", "httpx", "coverage"]
-
Либо создать
requirements-dev.txt
-
- Все тесты успешно выполняются через
make test - Покрытие критичных компонентов ≥ 80%
- GitHub Actions прогоняет тесты и линтеры
- Тесты легко запускаются локально и в контейнере
- Приложение соответствует стандартам FastAPI/pyproject/ruff
Если нужно — могу сразу сгенерировать шаблон Makefile, test_endpoints.py, ci.yaml. Скажи только, хочешь ли ты видеть это сейчас.