feat(mp): 学生端「我的填报 / 撤回 / 进度」与班主任端看板、审核卡片流、代传材料
学生端:待办数、状态、驳回原因、截止提醒、撤回;进度页的材料清单与进度条 分母用「这个人本次真的要交什么」(不适用的必传材料不进分母,否则永远填不满)。 班主任端:已交率与已通过分开呈现(已提交 ≠ 已通过)、右滑通过 / 左滑不绑驳回、 一键通过只带无问题项;代传走一步 multipart,三道闸门(只给自负责的班 / 只给草稿单 / 必须留痕且学生可见),V12 给 collect_file 补 proxy_by / proxy_reason。 验证:e2e-m3-mytask 42/42、e2e-m5-teacher-dashboard 24/24、e2e-m5-proxy 33/33; H5 build:h5 产物含新增各页。
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
-- ============================================================================
|
||||
-- V12:文件来源与代传留痕
|
||||
--
|
||||
-- 背景:`collect_file.source` 这一列**从来没有被代码显式写过** ——
|
||||
-- 库里那 10 行 source=1 全部来自列默认值。也就是说:
|
||||
-- 「这份材料是学生自己传的,还是班主任代传的」**当前在数据上完全区分不出来**。
|
||||
--
|
||||
-- 而契约 §10.6 明确要求:
|
||||
-- > 代传必须留痕:文件记录 `source = 4`(代传),审核时间轴显示"由李老师代传"。学生端可见。
|
||||
--
|
||||
-- 一、source 的口径(**两处文档冲突,以 DDL 为准**)
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- · PRD 的建表注释(`数据信息填报系统PRD.md` 第 1894 行):
|
||||
-- `1 本人上传 2 班主任代传 3 管理员代传 4 整理器导入`
|
||||
-- · 接口设计 §3.6 的字段表(第 464 行):
|
||||
-- `1 聊天记录 2 相册 3 手机文件 4 代传`
|
||||
--
|
||||
-- 两者都是"4 个值",但含义完全不同。以 **DDL 为准**,理由是:
|
||||
-- ① DDL 是"这一列到底表示什么"的定义,字段表只是它的展示层描述;
|
||||
-- ② 已有数据全部是 1(= 本人上传),与 DDL 口径一致;
|
||||
-- ③ PC 端的 `FILE_SOURCE` 常量(`apis/xt/audit.ts`)已经按 DDL 写了
|
||||
-- `1 本人上传 / 2 班主任代传 / 3 管理员代传 / 4 整理器导入`,
|
||||
-- 改成字段表口径要动前端 + 历史数据。
|
||||
-- 不一致这件事记在盘点文档的 F-38 里。
|
||||
--
|
||||
-- 二、为什么还要 proxy_by / proxy_reason
|
||||
-- ---------------------------------------------------------------------------
|
||||
-- `source = 2` 只说"是班主任代传的",但**说不出是哪个班主任、为什么**。
|
||||
-- 而代传恰恰是最需要留痕的动作之一:学生没传、老师替他传了,
|
||||
-- 出了问题要能回答"谁在什么时候替他传的、他给的理由是什么"。
|
||||
-- 契约要求"审核时间轴显示'由李老师代传'"—— 名字只能存在这里。
|
||||
-- ============================================================================
|
||||
|
||||
ALTER TABLE collect_file ADD COLUMN IF NOT EXISTS proxy_by BIGINT;
|
||||
ALTER TABLE collect_file ADD COLUMN IF NOT EXISTS proxy_reason VARCHAR(256);
|
||||
|
||||
COMMENT ON COLUMN collect_file.source IS '1本人上传 2班主任代传 3管理员代传 4整理器导入(**以此为准**;接口设计 §3.6 的字段表口径与它冲突,见 F-38)';
|
||||
COMMENT ON COLUMN collect_file.proxy_by IS '代传人 user_id(source=2/3 时有值);审核时间轴据此显示「由某某老师代传」';
|
||||
COMMENT ON COLUMN collect_file.proxy_reason IS '代传原因(选填,但会挂到审核时间轴上给学生看到)';
|
||||
|
||||
-- 「谁代传的」是代传留痕的主要查法
|
||||
CREATE INDEX IF NOT EXISTS idx_file_proxy ON collect_file (tenant_id, proxy_by);
|
||||
Reference in New Issue
Block a user