Files
check-course-syllabus-aa/development/REQUIREMENTS.md
taojianmin 1d78e542ca v1.0.1: 课程教学大纲合规性体检 - 初版骨架
基于匠厂 skill-template 主仓 v1.0.108 派生的业务技能。

核心业务:
- 教师在教务系统提交新开课或修订大纲时自动触发
- 格式结构 + 课程目标与毕业要求矩阵匹配 + 课程思政融合度三维体检
- 以批注模式嵌入原 Word 文档,文末给出百分制评分

输出形态:
- Word 文档红 / 黄 / 绿三色批注
- 百分制体检评分 + HTML 体检报告 + 修改建议清单

预期提效:教务处培养方案审核环节的返工次数减少 70%;大纲编制的规范性达到 95% 以上。

业务行生命周期:无(一次性体检结果存档,不重复处理)

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-14 12:19:12 +08:00

183 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 课程教学大纲合规性体检 — 技能需求文档
> 派生自匠厂 skill-template 主仓 `development/REQUIREMENTS.md`,对应规格书第 4.2 节「🟣 教务处 Skill 001 —— 课程教学大纲"合规性体检"」。
---
## 0. 技能标识
- **拟定 slug(英文)**:`check-course-syllabus-aa`
- **中文 name**:课程教学大纲合规性体检
- **中文 description(一句话)**:教师在教务系统提交新开课或修订大纲时,自动检查格式结构、课程目标与毕业要求矩阵匹配、课程思政融合度,以批注模式嵌入原 Word 文档并给出百分制体检评分
- **account-manager platform_key(如有)**:N/A
- **命名形态**:标准型(动词-名词-部门缩写)
- **目标 OEM 市场 `brands`(可选)**:未写则发布后仅挂匠厂(`jiangchang`)
- **网页 RPA(如有)— 登录策略**:**不适用**(本技能不涉及网页 RPA)
## 0.1 宿主入口定位(必填)
| 主能力(Action id / CLI) | 对话 | 数据管理 | 定时 | 教程章节 | 不挂理由 |
|---------------------------|------|----------|------|----------|----------|
| `health` / `version` / `config-path` | 挂 | 不挂 | 不挂 | 入口二 | 默认必备 |
| `audit-syllabus` | 挂 | row(课程大纲) | 不挂 | 入口一/入口二 | sync |
| `batch-audit-syllabus` | 挂 | batch(课程大纲) | 不挂 | 入口一/入口二 | async |
| `render-html` | 挂 | row(体检记录) | 不挂 | 入口一/入口二 | sync |
| `sync-norm-library` | 挂 | toolbar(编制规范) | 挂(占位) | 入口一/入口三 | cron 占位 |
### 0.1.1 用户市场文档
- `README.md`:能力 / 场景 / 边界
- `TUTORIAL.md`:覆盖两入口(数据管理 / 对话),入口三写「占位」
## 0.2 AI + RPA 协作与授权边界
### Agent 设计
- 用户意图:体检单份大纲 / 批量体检 / 查看报告 / 解释评分 / 同步规范
- 支持的用户意图 → Action 映射:
- 体检单份大纲 → `audit-syllabus`
- 批量体检 → `batch-audit-syllabus`
- 查看报告 → `render-html`
- 同步规范 → `sync-norm-library`
- 缺参数追问:课程名称 / 大纲 ID / 教师姓名
- 必须确认的动作:
- `batch-audit-syllabus` 批量体检前确认数量与教研室范围
- 结果解释:成功(评分 + 不达标项)、部分成功(Word 批注回写失败但报告生成成功)、失败(教务 API 超时)
### 授权与平台边界
- 教务系统 API 凭证由教务处统一开通
- 仅读取教师本人或教务处授权的大纲文件
- 严禁逆向教务系统、破解私有协议、自动绕过审批
- OCR / NLP 模型失败时停止并上报,不擅自重试
### RPA 风控设计
- 执行端:**N/A**
## 0.3 业务行生命周期
本技能对「体检记录」表中的每一条体检记录,无角色约束(一次性结果存档,不重复处理)。体检记录表仅作为审计追溯依据。
---
## 1. 文档目标
本文档用于明确 `check-course-syllabus-aa` 的研发范围、交付标准、依赖关系和验收要求。
## 2. 业务背景
- **现状**:教师新开课或修订大纲后送审,教务处审核时常见格式不规范、课程目标与毕业要求脱节、课程思政元素流于形式等问题
- **痛点**:教务处人工审核一份大纲平均 40 分钟;返工率 30%;课程思政融合度难以量化评估
- **目标**:自动完成「格式结构 + 矩阵匹配 + 思政融合度」三维体检,输出「Word 批注 + 百分制评分 + 修改建议」
## 3. 开发目标
- 解析 Word 大纲文件(doc/docx),提取章节结构与文字
- 解析 PDF 培养方案,提取毕业要求指标点
- NLP 语义相似度匹配课程目标与毕业要求指标点
- 关键词检测 + 上下文语境分析课程思政融合度
- 输出 Word 批注(红黄绿三色)+ 百分制评分 + HTML 体检报告
- 写入业务表(课程大纲 / 体检记录 / 培养方案 / 编制规范 / 课程思政关键词)
- 完成 CLI 入口与 `health` / `version` / `init-db` 最小可运行验证
## 4. 功能范围
### 必须实现
- 支持 `python scripts/main.py health` / `version` / `config-path` / `init-db`
- 支持 `python scripts/main.py audit-syllabus --syllabus-id <id>`
- 支持 `python scripts/main.py batch-audit-syllabus --major-id <id>`(async)
- 支持 `python scripts/main.py render-html --audit-id <id>`
- 支持 `python scripts/main.py sync-norm-library`(async,cron 占位)
- 完成 §0.1 入口定位表,并按表落实已挂入口
### 可后续扩展
- 多语言教学大纲(中英双语)支持
- 课程思政案例库推荐(在评分偏低时给出融入建议)
- 跨专业毕业要求指标点合并匹配
## 5. 非功能要求
- 目录结构必须符合当前 `skill-template` 规范
- 入口必须统一为 `scripts/main.py`
- 用户市场四 Tab 写在根 `README.md` / `TUTORIAL.md` / `DEMO.md` / `CHANGELOG.md`
- 输出格式应尽量机读友好;错误前缀统一为 `ERROR:`
- Windows 环境下需保证 UTF-8 输出兼容
- 单份大纲体检耗时 ≤ 60 秒(含 Word 批注回写)
## 6. 输入输出要求
### 输入
- `syllabus_id`:大纲主键(必填,字符串)
- `major_id`:专业主键(仅 batch 必填)
- `course_ids`:课程 ID 列表(仅 batch 必填)
- `audit_id`:体检主键(仅 render-html 必填)
- 依赖系统:教务系统 API(大纲读写 + 批注回写)
- 环境变量(`.env`):
- `AA_API_BASE_URL`:教务系统 API 入口
- `AA_API_TOKEN`:调用凭证
- `IDEOLOGY_KEYWORDS`:课程思政关键词列表(JSON 数组)
- `SCORE_PASS_THRESHOLD`:建议直接送审分数阈值,默认 85
- `SCORE_MODIFY_THRESHOLD`:建议修改后送审分数阈值,默认 60
### 输出
- 成功结果:`audit-syllabus` 返回 `{score, format_score, matrix_score, ideology_score, issue_count, audit_status}`
- 错误输出:`ERROR:` 稳定码 + 中文 message
- 数据库记录:写入 `体检记录` 表
- HTML 报告:体检报告落到 `html/`
- Word 批注:红 / 黄 / 绿三色批注回写到原 Word 文档
## 7. 依赖的兄弟技能或外部系统
### 兄弟技能依赖
- 无强制依赖
### 外部系统依赖
- **教务系统 API**(大纲读写 + 批注回写):必须
- **培养方案库**(PDF 文件):必须
### Python 包依赖(requirements.txt)
- Word 文档解析:`python-docx>=1.0.0,<2`
- PDF 解析:`pdfplumber>=0.10.0`
- NLP 语义相似度:`sentence-transformers>=2.2.0,<3`
- HTTP 请求:`requests>=2.31.0,<3`
- `jiangchang-platform-kit` 由宿主共享 runtime 提供
## 8. 不在本次范围内的内容
- 本次不实现课程思政案例库自动推荐(仅做关键词检测)
- 本次不实现跨专业合并匹配
- 本次不做 cron 启用(占位 Action 已就位)
- 本次不兼容旧模板历史结构
## 9. 验收标准
- 代码结构符合模板规范;`SKILL.md` slug 与 `constants.SKILL_SLUG` 一致
- `health` / `version` / `config-path` / `init-db` 命令执行正常
- `audit-syllabus` 在含 100 份大纲的样例库中完成一次完整体检,耗时 ≤ 60 秒
- 业务表写入和查询符合 `references/SCHEMA.md`
- Word 批注回写成功率 ≥ 95%
- `SKILL.md` 的 `developer_ids` 已配置为开发者本人匠厂用户 ID
- 已人工核验授权与技术路线
- 安装后按 §0.1 入口定位表完成宿主多入口验收
## 10. 开发注意事项
- 只修改当前 skill 仓库
- 教务系统 API 不可用时停止并上报
- NLP 模型权重文件较大,应通过 `assets/` 或运行时下载,不入库
- `cli` 只做参数解析;核心逻辑在 `service`
## 11. 变更记录
| 日期 | 版本 | 变更人 | 变更内容 |
|------|------|--------|----------|
| 2026-09-14 | v1.0.1 | 匠厂 | 初版需求文档,骨架就位 |