P5-验证报告.txt

P5 课程设计段向导 — 验证报告
日期:2026-08-22
目录:/home/zyw/Downloads/ai-lesson-prep
依据:《v0.2修订执行计划》P5 范围/DoD/演示;A7/A9/B6;《设计说明书-v0.2》§5.1/§8.2/§6.3

========================================================================
1. 环境
========================================================================
Node:v20.15.1(构建时 Next 14.2.35)
Prisma:5.22.0
模型:deepseek-v4-flash
BASE_URL:https://api.deepseek.com
API Key:已配置(不回写明文)
种子:2024级法学1班 id=2;法学模板 LAW;第七章「舆情分析与立场检测」lesson id=12
画像:verified_at=null(待验证)
npm scripts:p5:test / p5:demo

========================================================================
2. 实现清单(课程设计段)
========================================================================
页面
  /prepare                 班级选择卡;待验证班显著标注锁定文案
  /prepare/[classId]       三栏向导(课时列表 | 步骤主区 | 操作)
  导航「备课」;工作台/班级卡/班级详情可进入

步骤(A7/A9 首段)
  1. 班级画像:模板 + content_depth 意向;分布只读;verified_at 为空时
     显著标注「基于问卷的待验证假设,需首月课堂观察修正」
     P4 上下文 assembleContextBlocks 已改为携带该锁定文案
  2. 本班课程目标:POST /api/tasks type=curriculum(或 objectives)
     输入=公共 course_outcomes + 法学模板 + 画像分布;教师可编辑后保存
  3. 考核方案:type=outline focus=assessment;形成性/终结性节点+权重提示
  4. 周进度:type=outline focus=weekly_schedule;按章节骨架;保存入 course_outlines
     确认:status draft→confirmed,已确认后再保存则 version+1 新草稿
  5. 主案例 3 选 1(A7):AI type=case_select;知识点匹配失败时库内补位
     教师选 1 写入 lesson_plans.draft_content.main_case_id
  6. 确认页 + 右侧栏:六条质量标准标题骨架(B6;完整校验 P6)

课时列表
  全课程课时 + 七态徽章(灰未开始 / 蓝生成中 / 黄草稿 / 绿已确认)
  基于 lesson_plans.status

任务
  复用 P4 /api/tasks;新增 type:curriculum / objectives / case_select
  便捷封装 POST /api/lesson-plans/generate(step 映射)
  失败展示 P4 结构化 error(code/message)

闸门 G2
  生成 lesson_plan 且课型为案例型(请求 lessonType 或模板偏好全为案例/辩论/模拟法庭)
  且无 main_case_id / caseId → 拒绝,文案「案例型课须先选主案例」
  UI 按钮在无主案例时 disabled;API 同样拦截(P6 无法绕过)

========================================================================
3. 主案例选择与 G2 前置
========================================================================
存储:lesson_plans.draft_content.main_case_id(不改 Prisma 表,避免动 P1)
推荐:CaseKnowledgePoint 计分 + 模板关联补位 + 案例库补足 3 条;
      AI 从候选里选出恰好 3 条(含 teaching_note 摘要);AI 失败则用库匹配。
G2 判定:
  - 显式 lessonType 为案例型 → 必须已选主案例
  - 未指定 lessonType 且模板 preferred_lesson_type 全部为案例型 → 必须已选
  - 讲授等非案例型不拦截
生成教案时优先读所选主案例 teaching_note(不再静默用库内第一条顶替)
curl 实测(lessonId=12, lessonType=案例讨论, 无主案例):
  {"error":"案例型课须先选主案例","code":"g2_no_main_case"}
脚本实测:无主案例 ok=false;传入流浪狗案例 id=1 则 ok=true

========================================================================
4. 真实生成(type=curriculum 课程目标草稿)
========================================================================
任务 id=3  status=done  耗时≈46s
model=deepseek-v4-flash
usage≈ prompt 3072 + completion 6331 = 9403 tokens(含 reasoning_tokens 5240)
class_outcomes=7(编码全部沿用公共 O1-1…O5-1 / O3-2)
  1. O1-1 概念理解 — 结合司法 AI / 生成责任澄清能力边界;点出编程基础薄弱(待验证)
  2. O1-2 概念理解 — 舆情流程中标出人工判断环节;流浪狗情境
  3. O2-1 应用与人机协作 — 公开工具检索+人工核验,向导式操作
  4. O3-1 批判评价 — 误判/反讽等出错场景
  5. O3-2 批判评价 — 比较治理方案,破「算法中立」迷思(待验证)
  6. O4-1 伦理与治理 — AI 输出能否作处置/裁判依据
  7. O5-1 专业情境迁移 — 名誉权/舆情处置可操作建议
rationale 明确写:画像来自教师预填、需首月课堂观察修正。
当时 flagged=true:课程设计产物被教案对齐自检(要求 objectives≥3)误伤;
随后 generate.ts 仅对 lesson_plan/materials 启用对齐标红,课程设计段不再误伤。
原始任务结果保留在 generation_tasks.id=3,不以样例 JSON 冒充模型输出。

========================================================================
5. 单测 / 构建 / 冒烟
========================================================================
npx tsx scripts/test-p5.ts  passed=33 failed=0
npx tsx scripts/test-p4.ts  passed=48 failed=0(P4 未破坏)
npm run build               exit 0;新增
  /prepare  /prepare/[classId]
  /api/course-outlines  /api/course-outlines/confirm
  /api/lesson-plans  /api/lesson-plans/generate  /api/lesson-plans/main-case
  /api/lessons/[id]/case-candidates

curl(next start :3010,admin / Admin@123456):
  未登录 GET /prepare            307 → /login
  登录后 GET /prepare            200 含「2024级法学1班」与待验证
  登录后 GET /prepare/2          200 课程设计段;锁定文案;六条标题;
                                 课时列表(七态)/ 本班目标 / 考核 / 周进度 / 主案例
  POST /api/lesson-plans/generate step=plan lessonType=案例讨论 无主案例
                                 400 g2_no_main_case

本环境无浏览器 MCP,未做点击级 UI 巡检;页面行为以 RSC HTML + API 冒烟代替。

========================================================================
6. 遗留问题
========================================================================
1. 课时开发段(课时目标/教案/PPT/材料确认闭环)属 P6;本 P 只前置 G2 与主案例。
2. 六条标准仅标题骨架;adaptation_log / 按失败条目再生成 / 学时比对在 P6。
3. 主案例存在 draft_content JSON,无独立列;P6 写 plan 时须 merge 不得覆盖 main_case_id。
4. 模型 JSON 仍可能截断或改字段名;课程设计段沿用 P4 重试+标红。
5. 已确认大纲上再点「确认」会先另存 version+1 草稿再确认(符合 version 递增,但无编辑也会 +1)。
6. 占位章知识点少,主案例推荐多靠模板/案例库补位;第七章三课匹配最完整。
7. generation_tasks 中断卡在 running 仍无回收(P4 遗留,MVP 可接受)。
下载此文件