P2 种子数据 — 验证报告
日期:2026-08-22
目录:/home/zyw/Downloads/ai-lesson-prep
依据:《v0.2修订执行计划》P2 DoD / 调整三;《设计说明书-v0.2》§4.3 / §5;《v0.2样例JSON.md》
========================================================================
1. 环境
========================================================================
Node:v20.15.1
Prisma seed:tsx prisma/seed.ts
说明:npx 执行前取消 HTTP(S)_PROXY,避免 HttpsProxyAgent 问题。
========================================================================
2. 幂等策略
========================================================================
按稳定业务键 upsert / findFirst+update,不 truncate 全库,不重置 admin 密码。
- users:username=admin upsert(update: {},保留已改密码)
- courses:code=AI-FUND
- chapters/lessons/knowledge_points:courseId/chapterId/lessonId + sort_order
并对齐清单外记录(同课程不在种子 sort_order 的章节会删除并级联)
- course_outcomes:@@unique(courseId, code)
- major_templates:code=LAW / ENG / MED
- template_rules:@@unique(templateId, knowledgePointId)
- cases:title + createdBy
- questionnaires:token=seed-q-law-blueprint-v02
- lesson_plans:@@unique(classId, lessonId)
- sys_config:key
- knowledge_patches:knowledgePointId + patchType + createdBy
可重复执行:npx prisma db seed。第二次执行后主键保持不变,各表计数未增加。
========================================================================
3. Seed 执行
========================================================================
P2 seed:幂等写入(保留 admin,按业务键 upsert)
admin id=1 username=admin
sys_config 8 keys: LESSON_MINUTES, export_columns, file_naming_pattern, school_logo_path, school_name, school_palette, school_pptx_master_path, template_proposal_threshold
course id=2 《人工智能基础》 chapters=9 outcomes=7
第七章 lessons=3 kps=KP7-1,KP7-2,KP7-3,KP7-4,KP7-5,KP7-6,KP7-7
法学模板 id=2 code=LAW
理工模板 id=3 code=ENG;医学模板 id=4 code=MED
案例 主=1 引用=2 经典=3
演示班 id=2 问卷 token=seed-q-law-blueprint-v02
教案草稿 第0课=2 第1课=3 第七章第2课时=4
知识补丁 1:risk_alert, 2:concept_update
========================================================================
4. 各表计数
========================================================================
users 1
courses 1
chapters 9
lessons 12
course_outcomes 7
knowledge_points 17
knowledge_prereq 8
sizheng_elements 4
knowledge_point_sizheng 4
major_templates 3
template_rules 12
classes 1
questionnaires 2
cases 6
case_knowledge_points 13
case_templates 6
lesson_plans 7
course_outlines 1
knowledge_patches 4
sys_config 8
========================================================================
5. 第七章完整性抽查
========================================================================
课时 L1「NLP 概述与基本任务」hours=1 目标数=2 知识点数=2
KP#11「NLP 任务版图」desc=165字 depth=popular bloom=["记忆","理解"] misconceptions=1 prereq入边=1 拒生成=false
KP#12「文本如何被机器处理(分词与表示直觉)」desc=142字 depth=applied bloom=["理解"] misconceptions=1 prereq入边=1 拒生成=false
课时 L2「舆情分析与立场检测」hours=1 目标数=3 知识点数=3
KP#13「舆情分析四环节」desc=146字 depth=applied bloom=["理解","应用"] misconceptions=2 prereq入边=1 拒生成=false
KP#14「立场检测的两类失败」desc=169字 depth=applied bloom=["分析","评价"] misconceptions=2 prereq入边=2 拒生成=false
KP#15「AI 舆情结论的证据效力与法律边界」desc=170字 depth=applied bloom=["评价","创造"] misconceptions=2 prereq入边=1 拒生成=false
课时 L3「生成文本、幻觉与责任边界」hours=1 目标数=2 知识点数=2
KP#16「生成式模型的幻觉」desc=135字 depth=applied bloom=["理解","分析"] misconceptions=1 prereq入边=1 拒生成=false
KP#17「生成内容的责任归属」desc=126字 depth=applied bloom=["评价"] misconceptions=1 prereq入边=1 拒生成=false
流浪狗案例 id=1 type=决策困境 time=20min 讨论题=4 关联知识点=3 teaching_note=383字
引用案例 id=2 source_case_id=1
课程目标 7 条:O1-1(core)/概念理解;O1-2(core)/概念理解;O2-1(core)/应用与人机协作;O3-1(core)/批判评价;O3-2/批判评价;O4-1(core)/伦理与治理;O5-1(core)/专业情境迁移
ENG 第七章 7 个知识点中 4 条规则,其余跟随模板默认
问卷题目 9 题,模块=A,B,C,D,E,F
========================================================================
6. 拒生成校验(P4 实现前验证数据形态 + 共用谓词)
========================================================================
谓词:src/lib/knowledge/teachable.ts shouldRejectGeneration
阈值:MIN_TEACHABLE_DESCRIPTION_CHARS = 40
规则:trim(description) 长度低于阈值 → 拒生成(空/「待录入」均拦截)。
纯函数 空描述 → reject=true(期望 true)
纯函数 「待录入」len=3 → reject=true(期望 true)
纯函数 长描述 len=56 → reject=false(期望 false)
库内占位知识点 7 条,被拒生成 7 条(阈值 40 字)
第七章知识点 7 条,被拒生成 0 条(期望 0)
========================================================================
7. P2 DoD 对照
========================================================================
[x] 第七章全部知识点达可教最小完整度(description/content_depth/bloom_range/misconceptions/prerequisites)
[x] 流浪狗案例含争议结构 + teaching note + 问题阶梯 + 知识点关联
[x] 问卷蓝图 A–F 模块题目样例(15–20 分钟作答量,题目取自样例 JSON)
[x] 其余章占位 description 明确走拒生成(自动测试:空描述不可发布)
[x] 第 0/1 课教学包就位(问卷 15–20 分钟 + 迷思小案例 + 素养目标解说 + 差异化说明)
[x] 法学 template_rules PCK 实例(不写代码,案例讨论/辩论/模拟法庭)
[x] 理工 ENG / 医学 MED 模板默认字段 + 第七章部分 template_rules(其余跟随模板默认)
[x] 经典案例位 3 个(算法歧视/生成内容责任/人脸识别),字段齐
[x] knowledge_patches 至少 2 条且 patch_type 不同
[x] sys_config 初值(LESSON_MINUTES=45 等)
[x] 保留 P0.5 admin 种子
========================================================================
8. 断言结果
========================================================================
全部断言通过。
========================================================================
9. 遗留(不阻塞 P2)
========================================================================
- 空/过短 description 的应用层拦截在生成入口落地(P4);本阶段已冻结谓词与种子形态。
- 其余章可教最小完整度(全部章录入)属阶段 2,占位必须继续走拒生成。
- 问卷仍为 draft;发布/token 限次校验在 P8。
- 第七章教案草稿为手工样例入库,非模型生成(P5/P6 才走生成)。
- 第七章 NLP 目录与 teaching note 按《v0.2样例JSON.md》人工扩写,待任课教师审核后作为第七章种子冻结物。
- 独立脚本:npx tsx scripts/check-reject-generation.ts(npm run p2:reject-check)。