fix(feedback): remove order-dependent import and stale layout pointers

model.py imported its exceptions from the package __init__, which itself
imports model -- a cycle that only resolved because __init__ happens to
import exceptions first. Import them from the exceptions submodule
directly, matching service.py, so reordering __init__ can never break
collection.

Also update the two module docstrings that still pointed readers at the
deleted app/infra/ layout and the old deps.py wiring: adapters live in
app/adapters/{context}/ and wiring happens in the composition root,
app/composition.py::build_domain_services.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
rayhpeng 2026-07-30 11:12:31 +08:00
parent 533d02b1ab
commit 597a11372e
3 changed files with 5 additions and 4 deletions

View File

@ -5,5 +5,6 @@ Every package under this namespace is one bounded context laid out as
dependencies -- no sqlalchemy/fastapi/pydantic, no `app.*`, and no
harness infrastructure modules (enforced in CI by
`tests/test_harness_domain_purity.py`). Adapters implementing the ports
live in `app/infra/`; wiring happens only in `app/gateway/deps.py`.
live in `app/adapters/{context}/`; wiring happens only in the composition
root, `app/composition.py::build_domain_services`.
"""

View File

@ -4,7 +4,7 @@ import uuid
from dataclasses import dataclass, field
from datetime import UTC, datetime
from deerflow.domain.feedback import InvalidRatingError, InvalidTagError
from deerflow.domain.feedback.exceptions import InvalidRatingError, InvalidTagError
VALID_RATINGS = (-1, 1)

View File

@ -2,8 +2,8 @@
The legacy SQL repository was replaced by the hexagonal slice:
port `deerflow.domain.feedback.ports.FeedbackRepository`, adapter
`app.infra.persistence.feedback.SqlFeedbackRepository`. The ORM row stays
here until PR-N moves engine/models/migrations into app/infra.
`app.adapters.feedback.feedback_repository.SqlFeedbackRepository`. The ORM
row stays here beside the harness-owned engine/models/migrations.
"""
from deerflow.persistence.feedback.model import FeedbackRow