docs: 同步交接摘要 / PRD / 原型,并记录品牌改名「深学在线」
- 交接摘要补 §一·三十五~§一·三十八:角色与授权、需求收敛(4 角色 / 10 菜单 / 取消二期)、 PC 端重搭后的 UI 修复与卡片式基线、品牌改名与新标识 - PRD 与功能逻辑卷只改标题行与产品代号线;**文件名不动** —— verify-docs.py 按路径读, 全库还有 20+ 处按文件名引用,改名会连带炸脚本 - 原型 index / admin-web / teacher-app / student-app 的品牌区改「深学在线」, admin-web 的 .mark(10 处)换成内嵌的新标 data URI,保持原型"单文件自包含"的约定 - 根 AGENTS.md 与 frontend-pc 的规范同步:接线检查补第 ⑨ 项(SVG 资产是不是合法 XML —— SVG 注释里出现连续两个减号就 not well-formed,图标裂开而控制台一句话都不报)、 「最容易写错的约定」6 -> 7 条(新增品牌标) - deploy/docker-compose.yml 只改头注释里的项目名(compose 的 name 与七牛对象前缀都没动)
This commit is contained in:
+21
-32
@@ -243,7 +243,7 @@ with unzip(result.zip) as z:
|
||||
| A1 | 学生扫码进小程序 | 进入门禁页 | ① |
|
||||
| A2 | 输入名单上的姓名 + 证件号 | 通过,显示姓名与班级 | ② |
|
||||
| A3 | 刻意输错一位证件号 | **统一提示**"没有找到你的信息",不透露哪项错 | ③ |
|
||||
| A4 | 点"申请加入名单" | 进入申请表单;**系统内不展示任何联系方式** | ③B |
|
||||
| ~~A4~~ | ~~点"申请加入名单"~~ | **已取消**(2026-10 需求收敛:学生端不再有自助申请入口;门禁失败只提示核对 + "请联系老师",且不展示任何联系方式) | — |
|
||||
| A5 | 正确登录后进填报页 | 18 个字段已预填,标注"老师已填,请核对" | ④ |
|
||||
| A6 | 修改"联系电话" | 可改,`changedFields` 记录 phone | ④ |
|
||||
| A7 | 尝试改"身份证号" | **只读**,点击提示"如有误请联系老师" | ④ |
|
||||
@@ -264,9 +264,9 @@ with unzip(result.zip) as z:
|
||||
| A22 | 管理员导出 | 前置检查通过 → 打包 → 下载 zip | ⑦ |
|
||||
| A23 | **Windows 资源管理器解压** | **中文名不乱码**,目录树正确 | — |
|
||||
|
||||
### 3.2 主流程 B · 社会收集(**二期**,一期不做)
|
||||
### 3.2 主流程 B · 社会收集(**不做**)
|
||||
|
||||
> ⚠️ **一期范围收窄后,本节整体后置**(见 PRD「一期范围声明」)。保留描述供二期启用时使用。
|
||||
> ⚠️ **本节作废**(2026-10 取消二期,见 PRD「一期范围声明」):`collectMode=2` 传入直接返回 `40044`。保留描述仅供追溯,**不要再按它验收**。
|
||||
|
||||
| 步 | 操作 | 期望 |
|
||||
|:--:|---|---|
|
||||
@@ -274,7 +274,7 @@ with unzip(result.zip) as z:
|
||||
| B2 | 班主任打开待审列表 | **看不到该任务**(社会收集不经班主任) |
|
||||
| B3 | 管理员终审 → 导出 | 正常 |
|
||||
|
||||
### 3.3 主流程 C · 历史数据整理器
|
||||
### 3.3 主流程 C · 历史数据整理器 —— **已取消**(2026-10)
|
||||
|
||||
| 步 | 操作 | 期望 |
|
||||
|:--:|---|---|
|
||||
@@ -310,8 +310,8 @@ with unzip(result.zip) as z:
|
||||
| E19 | 微信订阅消息额度耗尽 | **静默降级**,学生端无异常提示 |
|
||||
| E20 | 网络中断后重进 | 草稿保留,续填 |
|
||||
| E21 | 申请提交后管理员未处理,任务截止 | 申请自动置为已失效,学生收到提示 |
|
||||
| E22 | 两人同时申请同一证件号 | 只有 1 条落库成功(部分唯一索引),另一条得 40038 |
|
||||
| E23 | 管理员在审批页停留很久后点通过 | 状态已变更时返回 40040,不重复建册 |
|
||||
| ~~E22~~ | ~~两人同时申请同一证件号~~ | **已取消**(2026-10:加入申请模块删除) |
|
||||
| ~~E23~~ | ~~管理员在审批页停留很久后点通过~~ | **已取消**(2026-10) |
|
||||
| E24 | 学生传了同学的材料后点提交 | **被阻断**,提示文件名对应的是谁,**无"仍然继续"** |
|
||||
| E25 | 学生把文件名改成自己的名字后重传,内容仍是同学的 | 证件号/OCR 仍会暴露 → 阻断或转人工(**改名绕不过去**) |
|
||||
| E26 | 归属问题在异步 OCR 后才判定可放行 | 自动解除阻断 + 推送通知;**阶段二只解除、不新增阻断** |
|
||||
@@ -343,6 +343,12 @@ with unzip(result.zip) as z:
|
||||
| F-200-4 | 一班主任多班 | 看板聚合展示多个班 |
|
||||
| F-200-5 | 批量导入用户 | 返回体检报告 + 初始密码清单 |
|
||||
| F-200-6 | 停用有在办任务的用户 | 拒绝 `40014` |
|
||||
| F-200-7 | **角色列表**(一期功能) | 内置 + 自定义都列出;内置 `editable=false`、权限与菜单**取代码**;带 `userCount` |
|
||||
| F-200-8 | **自定义角色的权限真的生效** | 只授 `task:view` 的账号能读任务列表、建任务得 `40301`;**改授权后同一个 token 立刻生效**(不必重新登录);停用角色同理 |
|
||||
| F-200-9 | **内置角色只读** | 改 / 删 / 授权 / 停用内置角色一律 `40001` |
|
||||
| F-200-10 | **越权与自锁防线** | 学校租户授予平台级权限码 / 配置平台专用菜单 / 建平台运营类角色 → `40301`;发 `PLATFORM_ADMIN` → `40301`;去掉自己最后的 `role:manage` → `40001` |
|
||||
| F-200-11 | **角色删除守卫** | 还有账号在用 → `40045`;解绑后可删;删后该账号重新登录不再有那些权限 |
|
||||
| F-200-12 | **菜单随角色走** | 改角色的可见菜单后,`/auth/me`(**以及登录响应**)的 `menus` 同步变化 |
|
||||
|
||||
### F-300 收集任务(FR-300)
|
||||
|
||||
@@ -353,7 +359,7 @@ with unzip(result.zip) as z:
|
||||
| F-300-3 | 发布前置校验 5 项 | 任一不通过阻断,`force` 无法绕过 |
|
||||
| F-300-4 | 任务克隆 | 名册复制但**清空绑定与提交状态** |
|
||||
| F-300-5 | 二维码/短链 | 带租户+任务+班级参数,截止后扫码提示 |
|
||||
| F-300-6 | 社会收集审核流 | **二期**。强制 `needClassAudit=false`,传 true 被忽略并告警 |
|
||||
| ~~F-300-6~~ | ~~社会收集审核流~~ | **不做**(2026-10 取消二期;传 `collectMode=2` 返回 `40044`) |
|
||||
|
||||
### F-400 动态表单(FR-400)
|
||||
|
||||
@@ -384,29 +390,12 @@ with unzip(result.zip) as z:
|
||||
| F-500-12 | 失败不留明文 | 查库确认只有 hash |
|
||||
| F-500-13 | 已绑定提示 | `40072`,**这一条明确提示** |
|
||||
|
||||
### F-509 名单加入申请(客户确认新增)
|
||||
### ~~F-509 名单加入申请(客户确认新增)~~ —— **已撤销**(2026-10 需求收敛)
|
||||
|
||||
| # | 验收项 | 期望 |
|
||||
|:--:|---|---|
|
||||
| F-509-1 | 失败页有申请入口 | 「申请加入名单」在门禁失败页,视觉为**次要路径**(虚线分隔、不与"重新填写"抢注意力) |
|
||||
| F-509-2 | **不绕过门禁** | 申请期间**仍不能填报**;提交后页面明确写"审核期间还不能填报" |
|
||||
| F-509-3 | 申请表单校验 | 姓名/证件号/手机号必填;格式错误当场提示 |
|
||||
| F-509-4 | **敏感信息不落明文** | 查库 + 查日志:**无明文证件号与手机号**,只有 HMAC 与脱敏值 |
|
||||
| F-509-5 | 同 openid 第 3 次申请 | `40037`,提示联系老师 |
|
||||
| F-509-6 | 同证件号重复申请(待审中) | `40038`(**部分唯一索引**保证) |
|
||||
| F-509-7 | 证件号已在名册但姓名不符 | `40039`,引导"返回重新核验"(**不泄露新信息**) |
|
||||
| F-509-8 | 被驳回后重新申请 | **允许**(唯一索引只约束状态 0/1) |
|
||||
| F-509-9 | 审批通过 | 自动在名册**新建名册项**,`roster_id` 回填,`bind_type=3` |
|
||||
| F-509-10 | 审批通过后该 openid 再进 | **直接放行**,不要求重输 |
|
||||
| F-509-11 | **管理员双击"通过"** | **只建 1 条名册项**(`FOR UPDATE` 行锁 + 状态校验) |
|
||||
| F-509-12 | 通过时证件号已被占用 | `40041`,**不覆盖**原名册项 |
|
||||
| F-509-13 | 驳回必填原因 | 原因为空时提交被拦;原因原样推送给学生 |
|
||||
| F-509-14 | **不存在"全选"** | 批量通过需逐条勾选;**驳回不支持批量** |
|
||||
| F-509-15 | 结果通知 | 微信订阅消息 `JOIN_APPROVE` / `bizType=7`;通知失败**不回滚审批** |
|
||||
| F-509-16 | 他任务命中提示 | 证件号在其他任务名册中 → 列表显示「他任务已有」 |
|
||||
| F-509-17 | 待审 > 50 告警 | 列表返回 `alert` |
|
||||
| F-509-18 | 任务截止后 | 待审申请自动置为 `3` 已失效 |
|
||||
| F-509-19 | 留痕 | 操作日志含申请人与审批人;申请记录保留 2 年 |
|
||||
> ⚠️ 本节 8 条验收全部作废:加入申请通道(含 `40037`/`40038`/`40039`/`40040`/`40042`)
|
||||
> 连同模块、表、接口、学生端页面一并删除。
|
||||
> **替代口径**:门禁失败页只有「重新填写」+ 一句"请联系老师把你加入名单",
|
||||
> 名单外的人由老师在任务的「名单管理」里手工加人;系统内不展示任何联系方式。
|
||||
|
||||
### F-600 材料与规则(FR-600)
|
||||
|
||||
@@ -425,7 +414,7 @@ with unzip(result.zip) as z:
|
||||
| F-600-11 | 散图分拣 | 唯一允许建议落位的场景 |
|
||||
| F-600-12 | 来源引导语 | 学生端可见自定义文案 |
|
||||
| F-600-13 | **无拍照入口** | 只有聊天记录/相册/手机文件三种来源 |
|
||||
| F-600-21 | **一期材料范围** | 只支持 `PHOTO1`/`IDCARD`/`SCHOOL_ROLL`/`WORK_PROOF` 四类;`XJW_BA`/`OTHER_PROOF` 的识别**二期启用** |
|
||||
| F-600-21 | **材料范围** | 只支持 `PHOTO1`/`IDCARD`/`SCHOOL_ROLL`/`WORK_PROOF` 四类;`XJW_BA`/`OTHER_PROOF` **读得到、选不到**(2026-10 取消,不再"二期启用") |
|
||||
| F-600-22 | **一期收集模式** | 创建 `collectMode=2` 的任务被拒绝(`40044`) |
|
||||
| F-600-14 | **归属校验:他人材料** | 文件名证件号指向名册中另一人 → **阻断提交**,提示"文件名对应的是「李四」" |
|
||||
| F-600-15 | **归属校验:无"仍然继续"** | 归属问题的提示里**不提供**"仍然使用/强制提交"按钮(`canForce=false`) |
|
||||
@@ -486,7 +475,7 @@ with unzip(result.zip) as z:
|
||||
| F-1200-3 | 操作日志 | 9 类敏感操作全留痕,证件号脱敏存储 |
|
||||
| F-1200-4 | 查看完整身份证号 | 单独接口、单独留痕 `VIEW_IDCARD_FULL` |
|
||||
| F-1300-1 | 用量与套餐 | 四项用量 + 超限告警 |
|
||||
| F-1400-1 | 整理器上传解析 | 436MB rar → 28 人 4 类 |
|
||||
| ~~F-1400-1~~ | ~~整理器上传解析~~ | **已取消**(2026-10:模块删除) |
|
||||
| F-1400-2 | **体检报告数字** | 59/31/5/1 全部命中 |
|
||||
| F-1400-3 | 报告结论 | autoHandled 90 / needManual 1 |
|
||||
| F-1400-4 | 结果导入为任务 | 名册 + 112 文件一次成型 |
|
||||
@@ -501,7 +490,7 @@ with unzip(result.zip) as z:
|
||||
|---|:--:|---|
|
||||
| `student-app.html` | 10 | 门禁失败页文案(不透露哪项错)、三态字段样式、结果卡命名前后对比、无拍照入口 |
|
||||
| `teacher-app.html` | 9 | 卡片红黄绿三色、**只能右滑**、驳回二次确认、按钮 44px 触达区 |
|
||||
| `admin-web.html` | 10 | 表格信息密度、目录树预览、设计器内置字段锁标记、整理器报告布局 |
|
||||
| `admin-web.html` | 10 | 表格信息密度、目录树预览、设计器内置字段锁标记、角色与授权矩阵 |
|
||||
| `index.html` | — | 三端入口 |
|
||||
|
||||
### 视觉验收要点
|
||||
|
||||
Reference in New Issue
Block a user