refactor(subtitles): introduce SubtitleKnowledge Protocol port
Domain services (SubtitleIdentifier, PatternDetector) used to import the concrete SubtitleKnowledgeBase class directly from infrastructure for their type hint. With this commit they depend on a structural Protocol in alfred/domain/subtitles/ports/knowledge.py declaring just the 7 read-only query methods the domain actually consumes. The concrete YAML-backed SubtitleKnowledgeBase in infrastructure remains the sole adapter — no rename, no shim. With this change alfred/domain/subtitles/ has zero imports from alfred/infrastructure/. Also extend the changelog entry covering the full domain-io-extraction branch.
This commit is contained in:
@@ -143,6 +143,17 @@ callers).
|
||||
an explicit `default_rules: SubtitleMatchingRules` parameter. The
|
||||
`ManageSubtitles` use case loads defaults from the KB once and
|
||||
passes them in.
|
||||
- **`SubtitleKnowledge` Protocol port** at
|
||||
`alfred/domain/subtitles/ports/knowledge.py` declares the read-only
|
||||
query surface domain services consume (7 methods:
|
||||
`known_extensions`, `format_for_extension`, `language_for_token`,
|
||||
`is_known_lang_token`, `type_for_token`, `is_known_type_token`,
|
||||
`patterns`). `SubtitleIdentifier` and `PatternDetector` depend on
|
||||
this Protocol instead of the concrete `SubtitleKnowledgeBase` from
|
||||
infrastructure — `domain/subtitles/` now has zero imports from
|
||||
`infrastructure/`. The remaining domain → infra leak
|
||||
(`domain/release/` loading separator YAML at import-time) is
|
||||
documented in tech-debt and scheduled for its own branch.
|
||||
- **`to_dot_folder_name(title)` helper** in
|
||||
`alfred/domain/shared/value_objects.py` — extracts the
|
||||
`re.sub(r"[^\w\s\.\-]", "", title).replace(" ", ".")` pattern that was
|
||||
|
||||
Reference in New Issue
Block a user