chenxing a02f47ad5c
build / build-push (push) Successful in 58s
feat(p95-fill): 填报入口收回中心——三层角色模型 + 提交第 0 关 + 我可填清单
任务书 P95 W1/W2/W3/W7。发一张表单原本要 UserBase 超管加一条 /f/{code} 模块行并组授权,
实测成本不可接受(10 张表=10 次跨系统操作),人群判定收回表单中心自解析。

- FillAccessService:audience × 会话身份(roleIds ∪ currentRole)× 管理员两表 → 层集合
  ADMIN/MANAGE/FILL/空=NONE,谓词 canFill/canProxy/isAdmin + topTier;与 DataScopeService
  读矩阵、FormAdminGuard 管理端入口三条线正交,结论互不供给
- AnswerService.doSubmit:钉版解析之后插第 0 关(先鉴权后业务,幂等重落在闸门后);
  requireSubject 吸收行为表——教师×面向学生只能代填本校学生(P33 existsInSchool 保留),
  层③代填仍沿 canManage 现路径,层①普通成员代填照旧拒
- GET /api/form/my/fillable:会话校 ∪ 平台级取域、复用 FormDefService.pickByShadowing 做
  (app_code,code) 遮蔽去重、仅已发布未软删、NONE 不入集,行带 canFill + myTier 两件事,
  deadline 升序 null 在后;新增 MyModels.FillableRow
- h2 登记脚本快应用段 5→4 行:删 /f/ 填报行与学生组授权,保留应用行/管理页面行/
  path 空导入导出锚点/学校开通;H2 冻结延续,本轮未在任何环境执行
- 测试:FillAccessServiceTest 16(V48)+ AnswerFillGateIT 14(V49)+ FillableListIT 10(V50),
  mvn -B -o clean test 全量 259 绿(教师×面向学生的造数据通道按新口径改代填,
  读矩阵与限次等断言判据一字未改)

DataScopeService 与 FormAdminGuard 两个文件本轮未被改动(红线 1/2)。
2026-10-16 12:43:31 +08:00
2026-10-14 11:41:44 +08:00
2026-10-14 11:41:39 +08:00

form-center-service

managed by projman

S
Description
managed by projman
Readme
1.2 MiB
Languages
Java 99.9%