2.1 KiB
2.1 KiB
id, title, status, created
| id | title | status | created |
|---|---|---|---|
| 002 | Implement pure domain price rules | TODO | 2026-03-07 |
Context
spec/overview.md требует business rules для фильтрации тарифов, сравнения цен, сортировки и нормализации входных данных в чистом слое Business Logic.
Goal
Реализовать детерминированные, dependency-free domain functions в app/domain/price.py для нормализации запроса и фильтрации/упорядочивания котировок.
Constraints
- Business Logic должна быть pure и dependency-free.
- Запрещены прямые IO, adapters, repositories, framework imports и внешние вызовы.
- Слои Service и Controller не должны забирать domain rules из этой задачи.
- Не изменять файлы в
spec/.
Acceptance criteria
- Domain functions нормализуют значения запроса по явным детерминированным правилам.
- Domain functions отфильтровывают невалидные котировки по определённым domain conditions.
- Domain functions сортируют валидные котировки по возрастанию цены.
- Логика реализована только в
app/domain/и доступна для вызова из Service.
Definition of Done
- Реализованы pure domain functions для normalization/filtering/sorting.
- Поведение функций детерминированное и без side effects.
- В domain module нет импортов не-domain зависимостей.
- Unit tests (без mocks) покрывают стандартные и edge cases.
Tests
- Добавить
tests/domain/test_price.pyтолько с unit tests. - Покрыть edge cases: пустой input, невалидные price, одинаковые цены, границы нормализации.
Commands
poetry run pytest tests/domain/test_price.py -q