本卡屬 FR-091(母卡開卡後補號)第一批。輕量:plugin.py 285 行、0 條 route(無 API,純 service 插件)、0 個 entity、無 DB 表。
jedi-notification 是寄信與通知管道,沒有對外 API,但 plugin.py 一樣塞 6 個 dataclass,api/init.py 110 行裝守門與 ctx() 9 處,logger 用 "infra" 與 name 兩種("infra" 撞主專案)。tests/integration 有骨架 0 支測試。
首腦核對:plugin.py 285 行 6 dataclass;api/init.py 110 行;route 0;entity 0;migration 0;tests 178 支;harness 有;施工日誌 10 處;ctx() 9 處;logger "infra"/name;不吐 created_user_name → 不開 identity port;tests/integration 空骨架 → 刪掉骨架(無 DB 表沒東西可測,留著是假的)。
套件:/Users/chouraymond/Projects/Jedicogy/module/jedi-python-package/jedi-notification/
範例:jedi-asset/;SOP:extraction-sop.md §4.3
主專案 import 面:grep -rn "from jedi_notification" compliance-manager-be --include='*.py' 排除 .venv(注意 infra/notification/ 與 di_containers/notification/ 都有)
plugin.py → plugin/ 五檔(無 migration 不建 migrations.py);api/__init__.py 110 行 → guards.py+routing.py(無 route 則 routing.py 可省,guards.py 留 runtime())。對外 import 路徑不變。common.jedi_notification;屬性名統一。tests/integration/ 空骨架(conftest 有 testcontainers 但 0 支測試);grep 死碼。test_plugin_layout.py,含突變。jedi-notification/。主專案不動。絕不發版。契約不改。註解只留為什麼與陷阱。做完 commit+回寫不等令;push 等令;branch feature/FR-075 不切。