Files
g2s-aggregator/spec/tasks/002_implement_pure_domain_quote_rules.md
T
Раис Юсупалиев ff319170a2 Init
2026-03-07 13:20:53 +03:00

2.1 KiB
Raw Blame History

id, title, status, created
id title status created
002 Implement pure domain quote rules TODO 2026-03-07

Context

spec/overview.md требует business rules для фильтрации тарифов, сравнения цен, сортировки и нормализации входных данных в чистом слое Business Logic.

Goal

Реализовать детерминированные, dependency-free domain functions в app/domain/quotes.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_quotes.py только с unit tests.
  • Покрыть edge cases: пустой input, невалидные quotes, одинаковые цены, границы нормализации.

Commands

  • poetry run pytest tests/domain/test_quotes.py -q