P6-验证报告.txt

P6 教案生成与确认闭环 — 验证报告
日期:2026-08-22
目录:/home/zyw/Downloads/ai-lesson-prep
依据:《v0.2修订执行计划》P6 范围/DoD/演示;B6/B16、B10 生成侧、M2.11/M4.11、G1;
      《设计说明书-v0.2》§5.1/§5.6/§6.3/§8.2;《v0.2样例JSON.md》第七章

npm scripts:p6:test / p6:demo
build:npm run build 通过(Next 14.2.35)
单测:p6:test 52 passed;p5:test 33 passed;p4:test 48 passed(不破坏)

========================================================================
0. 实现清单
========================================================================
教案生成
  POST /api/lesson-plans/generate step=plan → P4 generatePayload(A6 Schema)
  结果 merge 写入 lesson_plans.draft_content.plan,保留 P5 main_case_id
  G2 案例型无主案例 400 沿用
  regenerate / failed_items 写入提示词「按失败条目再生成」

G1
  PUT /api/lesson-plans/:id/confirm step=plan
  无 objectives[] → 400 code=g1_no_objectives「无课时目标不得确认教案」
  前端确认按钮在无目标时不可用

确认页六条(B6)+ B16
  目标可观察 / 针对画像分布 / 主案例有困境 / 价值引领嵌在争议 /
  评估提供目标证据 / 事实有闭集来源
  弹层逐条展示;勾选失败项再生成
  B16:至少一处争议绑定本课目标或案例;界面无「思政环节是否齐全」「栏目齐全」

学时(M5.6)
  sum(lesson_events.duration) vs lessons.hours × sys_config.LESSON_MINUTES
  超载标红,确认前提示,非硬阻断

差异提示卡(GROK-PED-K3)
  画像分布有方差时展示核心/支架/拓展 +「已人工处理班内两端」勾选
  强警告非硬阻断

双模式编辑
  结构化表单 ↔ 近成品文本;映射失败标红

材料(B10 生成侧)
  教案确认后 step=materials;exercises 含 task_type/rubric/tier/objective_ids
  状态 plan_confirmed → materials_draft(可与 ppt_draft 并行)
  须先确认教案,否则 need_plan_confirmed

最小反馈(M2.11/M4.11)
  POST /api/feedbacks 四字段;P4 上下文读取同班最近反馈(M6.7 已有)

状态机
  not_started → plan_draft → plan_confirmed →(ppt_draft / materials_draft 并行)→ completed
  draft / confirmed 分存;重生成只改 draft

工作台质量视图
  重生成次数 / 待确认数 / 近两周修改率 / 连续零修改提示

平行班复制(B14 框架)
  POST /api/classes/:id/copy 复制骨架,去掉主案例/习题/relevance_to_major

完成页学习通五步:P6 壳(清单),P9 实

========================================================================
1. 环境
========================================================================
Node:v20.15.1
模型:deepseek-v4-flash
BASE_URL:https://api.deepseek.com
API Key:已配置(不回写明文)
说明:国内直连 DeepSeek,已清除 HTTP(S)_PROXY / ALL_PROXY。
班级:2024级法学1班 id=2
课时:第七章 自然语言处理与应用 · 舆情分析与立场检测 id=12 hours=1
主案例:流浪狗舆情反转事件 id=1
LESSON_MINUTES(sys_config)=45

G2 已选流浪狗:ok=true mainCaseId=1
G1 无 objectives:ok=false message=无课时目标不得确认教案
G1 文案:无课时目标不得确认教案

========================================================================
2. 教案生成(step=plan / type=lesson_plan)
========================================================================
任务 id=5 status=pending
结束 status=done 耗时=186208ms
写入教案 id=4 status=plan_draft main_case_id=1
model=deepseek-v4-flash flagged=true
usage={"prompt_tokens":5492,"completion_tokens":7626,"total_tokens":13118,"prompt_tokens_details":{"cached_tokens":4480},"completion_tokens_details":{"reasoning_tokens":5571},"prompt_cache_hit_tokens":4480,"prompt_cache_miss_tokens":1012}
schema.valid=true
lesson_title=舆情分析与立场检测
lesson_type=案例讨论与辩论
objectives=3
  1. [o1] 能解释舆情分析的基本流程并指出人工判断环节 · 概念理解
  2. [o2] 能指出立场检测模型两类失败并说明原因 · 批判评价
  3. [o3] 能就 AI 舆情结论能否作为处置依据给出有法律原则的立场 · 伦理与治理

========================================================================
3. 六条清单 / B16 / 学时 / 差异卡
========================================================================
  PASS  目标可观察 — 3 条目标均有素养维与成功标准
  PASS  针对画像分布 — 已给出核心 / 支架 / 拓展
  PASS  主案例有困境 — 已给出案例用法/困境
  PASS  价值引领嵌在争议中 — 3 处绑定学生困境,非独立说教
  PASS  评估能提供目标证据 — 评估已覆盖目标 o1、o2、o3
  PASS  事实性主张有闭集来源,或已标 claim_unverified — 4 条闭集引用
B16 PASS  至少一处争议绑定本课目标或案例 — 2 处争议绑定本课目标或案例
学时 合计=45 容量=45 超载=false
差异卡 show=true handled=false
差异原因:分布方差:编程基础、数学基础、讨论意愿、兴趣/态度;画像备注:约 2/3 未接触过代码;数学基础一般;对网络舆情、言论自由类话题兴趣高;约 1/3 有参与网络讨论的经历。待验证假设:对「算法中立」存在普遍误解,需在舆情课澄
未核验引用 0 条
G1 确认闸门 ok=true

========================================================================
4. 确认(G1 通过 → plan_confirmed,draft/confirmed 分存)
========================================================================
确认后 status=plan_confirmed
draft 仍有 plan=true
confirmed 已写入 plan=true
main_case_id 仍为 1

========================================================================
5. 材料草稿生成(step=materials)
========================================================================
任务 id=6
结束 status=done 耗时=136507ms
model=deepseek-v4-flash flagged=true
usage={"prompt_tokens":7596,"completion_tokens":3187,"total_tokens":10783,"prompt_tokens_details":{"cached_tokens":5376},"completion_tokens_details":{"reasoning_tokens":296},"prompt_cache_hit_tokens":5376,"prompt_cache_miss_tokens":2220}
exercises=5 cases=1
  1. explain/required 目标=o1 请用自己的话复述舆情分析的基本流程(采集—清洗—情感/立场分类—趋势),并指出至少一个依赖人工判断的环节。
  2. explain/required 目标=o2 结合流浪狗事件,分别说明“语境缺失”和“群体标签”两类立场检测失败,并指出对处分公正的潜在影响。
  3. case_ruling/required 目标=o3 学校仅凭AI舆情报告拟开除一名学生,你是学生申诉委员会成员。请写出裁决意见,明确AI结论能否作为定案依据,并援引至少一个法律原则(如比例原则…
  4. classroom_speech/required 目标=o3 在辩论环节,请作为正方或反方发言,立场为“AI舆情结论能否作为处置依据”。发言须引用至少一个法律原则,并指出AI舆情分析的技术局限。
  5. authentic_task/optional 目标=o1,o2,o3 请从近期真实热搜中选一个标题,写一段200字以内的核查与立场分析:说明该标题可能缺失的语境、可能被群体标签化的人群,以及如果你是一名网络舆情…
状态机 status=materials_draft regenerate_count=0

========================================================================
6. 最小反馈四字段
========================================================================
已写入 feedback id=1 goal=中 discussion=true
下一课上下文含反馈:true

========================================================================
7. 构建与单测
========================================================================
npm run build:通过
p6:test:52 passed / 0 failed
p5:test:33 passed / 0 failed(未破坏)
p4:test:48 passed / 0 failed(未破坏)

落库抽查(lesson_plans id=4)
  status=materials_draft;main_case_id=1;confirmed.objectives=3
  core/scaffold/extension 均有;sizheng 绑定争议
  活动合计 45 分钟(pre 5 + in 8+10+17 + post 5)= 容量 45
  材料 5 题:explain×2 / case_ruling(rubric=3)/ classroom_speech / authentic_task(rubric=3, optional)
  case_ruling 与 authentic_task 均有 rubric 并挂 objective_ids

========================================================================
8. 遗留
========================================================================
- 教案/材料 flagged=true:schema.valid=true,标红来自自检易错字段(法规/原则等 ⚠),确认页可审,未静默通过
- 本次生成 case_plan.discussion_ladder 为字符串而非样例中的数组;六条检查通过 usage/困境,P7 前可收紧 Schema
- PPT 确认(ppt_confirmed)与导出在 P7;本 P 仅允许并行写入 ppt 草稿
- 学习通五步仅为完成页框架,交换物导出在 P9
- 平行班复制后「重生案例/习题/相关性」需教师在目标班再点生成,未自动连跑
- 浏览器端到端未在本机起 dev server 点选;向导 UI 已接入,闭环由脚本+API 层验证

下载此文件