本卡屬 FR-089(母卡 CM-1688),修 arc review CM-1738 的 I-3,Important。建議 model:Sonnet 5,effort:medium——搬法有 oscal-v2 現成先例照抄,難的是新守衛的白名單要一條條寫得出理由。

問題是什麼(白話)

主專案守衛 test_package_imports_only_lower_layers 只比「套件之間」的層級,if target == source: continue 讓套件「自己 import 自己」完全不受檢查。CM-1725 把 jedi-iam 頂層 ports/ 併進 domain/ports/ 時,auth_provider.py:5auth_factory.py:7-8 那幾行 import jedi_iam.infra 原封搬過去——搬家前那個檔不在 domain 層所以合規,搬家後就是 domain 反向依賴 infra。同一批作業的 jedi-oscal-v2 做對了(domain/ports.py:8-14 寫明 factory 會 import 具體 adapter,故只搬抽象 port 進 domain)。

在哪裡

jedi-iam/jedi_iam/domain/ports/auth_provider/auth_factory.py:7-8   import infra.adapter.authenticate_adapter.{ldap,password}
jedi-iam/jedi_iam/domain/ports/auth_provider/auth_provider.py:5    import infra.dto.user_info_dto.UserInfoDTO
jedi-iam/jedi_iam/infra/dto/user_info_dto.py:6   UserInfoDTO(5 個純值欄位、零 infra 相依,放 infra/dto 是分類錯誤)
jedi-iam/jedi_iam/infra/adapter/   既有 adapter 目錄(authenticate_adapter/ 在這)
jedi-oscal-v2/jedi_oscal_v2/domain/ports.py:8-14   做對的先例
BE test/test_module_boundaries.py:1036 test_package_imports_only_lower_layers;:987 _LAYER_EXCEPTIONS 白名單形態
主專案 caller:app/user_auth_provider/service/ldap_service.py:18 import jedi_iam.ports.auth_provider.auth_factory(走頂層相容殼,I-5 那批)

怎麼修

要寫測試

手測(DEV)

紀律