现状
src-tauri/src/config/service.rs:19 有 pub use super::model::Project;,把 config slice 的 domain model Project 经 service public surface 外泄为跨切片契约 :src-tauri/src/pr/*、src-tauri/src/review/* 多处经 config::service 读取 Project 字段(Grep ~25 处)。
按治理章程(.claude/rules/prmonitor/ai-robust.md),跨切片契约应只走 src-tauri/src/model.rs(Candidate / PullRequestView)。config 的 domain model 经 service 传播绕开了该边界。
证据
config/service.rs:19:pub use super::model::Project;
pr/scheduler.rs:use crate::config::service::{self as config_service, Project};reconcile(&[Project])。
pr/commands.rs / review/*:经 config_service::project / project_validated 消费 Project 字段。
取舍 / 历史
修复方向(三级方案种子)
最小 :把 config::service::project() / project_validated() 的返回拆成 pr/review 各自所需的最小 DTO(只暴露字段子集),移除 Project re-export。
彻底 :把真正的跨切片 DTO 放进 src-tauri/src/model.rs,并禁止 slice 直接 import config 内部模块(含一并审视 [feat] 多项目并行监听 + 项目切换 UI(参考 codex app) #35 前就存在的 AppConfig 跨切片消费)。
重构 :由组装根 lib.rs / composition root 解析 config 后,向 pr/review 注入纯参数 (repo/repo_root/labels/…),slice 不再触达任何 config 类型。
Files
src-tauri/src/config/service.rs:19(re-export 源)
src-tauri/src/pr/scheduler.rs、src-tauri/src/pr/commands.rs、src-tauri/src/review/commands.rs 等 ~25 处消费点
Source
PR #63 finding F1(Discovered via /pr-review #63 → /fix #63)。
验收
现状
src-tauri/src/config/service.rs:19有pub use super::model::Project;,把 config slice 的 domain modelProject经 service public surface 外泄为跨切片契约:src-tauri/src/pr/*、src-tauri/src/review/*多处经config::service读取Project字段(Grep ~25 处)。按治理章程(
.claude/rules/prmonitor/ai-robust.md),跨切片契约应只走src-tauri/src/model.rs(Candidate/PullRequestView)。config 的 domain model 经 service 传播绕开了该边界。证据
config/service.rs:19:pub use super::model::Project;pr/scheduler.rs:use crate::config::service::{self as config_service, Project};reconcile(&[Project])。pr/commands.rs/review/*:经config_service::project/project_validated消费Project字段。取舍 / 历史
import config::model::Project」而加的折中(让依赖「经 service」而非「经 model」)。config::service::load_validated消费config::model::AppConfig——config domain 类型经 service 流入 pr/review 属既有模式,[feat] 多项目并行监听 + 项目切换 UI(参考 codex app) #35 只是扩展(Project替代扁平AppConfig字段),非本 PR 新引入的回归。修复方向(三级方案种子)
config::service::project()/project_validated()的返回拆成 pr/review 各自所需的最小 DTO(只暴露字段子集),移除Projectre-export。src-tauri/src/model.rs,并禁止 slice 直接importconfig 内部模块(含一并审视 [feat] 多项目并行监听 + 项目切换 UI(参考 codex app) #35 前就存在的AppConfig跨切片消费)。lib.rs/ composition root 解析 config 后,向 pr/review 注入纯参数(repo/repo_root/labels/…),slice 不再触达任何 config 类型。Files
src-tauri/src/config/service.rs:19(re-export 源)src-tauri/src/pr/scheduler.rs、src-tauri/src/pr/commands.rs、src-tauri/src/review/commands.rs等 ~25 处消费点Source
PR #63 finding F1(Discovered via
/pr-review #63→/fix #63)。验收
Project/AppConfig),跨切片契约只走model.rs或由 composition root 注入纯参数。