# manager 项目权限后端实施计划

## 目标

新增 `manager` 角色并建立统一项目访问控制：`admin` 保持最高权限，`manager` 可查看全部项目但只能操作本人创建的项目，普通角色只能查看和操作本人创建的项目。

## 实施范围

1. 新增 `ProjectAccessScope` 和 `CcdiProjectAccessService`，统一提供项目读权限、操作权限、流水/文件/证据等资源反查项目后的权限校验。
2. 项目列表、历史项目列表、状态统计统一走后端 scope：`admin/manager` 查询全部，普通角色限定 `create_by = 当前用户名`。
3. `CcdiProjectVO` 返回 `ownedByCurrentUser`、`canOperate`，供前端展示只读态。
4. 项目详情、结果总览、流水明细、专项排查、关系图谱、资金图谱、证据、上传记录、模型参数等接口在服务调用前执行项目读/写权限校验。
5. 项目更新、删除、归档、重新分析、上传、拉取本行信息、文件删除、参数保存、证据保存、手工资金流保存均执行 `assertCanOperate`。
6. 资金图谱手工资金流保持现有全局资金图逻辑，不新增 `project_id`，不按项目过滤手工边；保存时仅用当前项目 ID 做操作权限校验。
7. 新增幂等 SQL `sql/migration/2026-07-01-add-manager-role-project-scope.sql`，按 `role_key='manager'` 新增/更新角色并授予项目菜单权限，不自动绑定用户。

## 验证

执行 `mvn -pl ccdi-project -am compile -DskipTests`，重点验证权限服务、Controller 注入、Mapper 参数和 MyBatis XML 条件编译通过。
