v1.0.1: 课程教学大纲合规性体检 - 初版骨架
基于匠厂 skill-template 主仓 v1.0.108 派生的业务技能。 核心业务: - 教师在教务系统提交新开课或修订大纲时自动触发 - 格式结构 + 课程目标与毕业要求矩阵匹配 + 课程思政融合度三维体检 - 以批注模式嵌入原 Word 文档,文末给出百分制评分 输出形态: - Word 文档红 / 黄 / 绿三色批注 - 百分制体检评分 + HTML 体检报告 + 修改建议清单 预期提效:教务处培养方案审核环节的返工次数减少 70%;大纲编制的规范性达到 95% 以上。 业务行生命周期:无(一次性体检结果存档,不重复处理) Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
107
assets/actions.json
Normal file
107
assets/actions.json
Normal file
@@ -0,0 +1,107 @@
|
||||
{
|
||||
"schemaVersion": 1,
|
||||
"skill": "check-course-syllabus-aa",
|
||||
"actions": [
|
||||
{
|
||||
"id": "health",
|
||||
"label": "运行检查",
|
||||
"description": "检查技能运行环境、教务系统 API 连通性、培养方案库完整性。",
|
||||
"placements": ["skill-detail", "agent"],
|
||||
"executionProfile": "sync",
|
||||
"entrypoint": {
|
||||
"type": "cli",
|
||||
"command": "health",
|
||||
"args": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "version",
|
||||
"label": "查看版本",
|
||||
"description": "返回技能版本和机器标识。",
|
||||
"placements": ["skill-detail"],
|
||||
"executionProfile": "sync",
|
||||
"entrypoint": {
|
||||
"type": "cli",
|
||||
"command": "version",
|
||||
"args": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "config-path",
|
||||
"label": "查看配置位置",
|
||||
"description": "返回技能配置文件位置。",
|
||||
"placements": ["skill-detail"],
|
||||
"executionProfile": "sync",
|
||||
"entrypoint": {
|
||||
"type": "cli",
|
||||
"command": "config-path",
|
||||
"args": []
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "audit-syllabus",
|
||||
"label": "体检这份大纲",
|
||||
"description": "对指定课程大纲执行格式结构 + 矩阵匹配 + 思政融合度体检,30 秒~1 分钟内返回百分制评分与不达标项清单。",
|
||||
"placements": ["row", "agent"],
|
||||
"executionProfile": "sync",
|
||||
"bind": {
|
||||
"tables": ["课程大纲"],
|
||||
"selectionMode": "required",
|
||||
"labelColumn": "课程名称"
|
||||
},
|
||||
"entrypoint": {
|
||||
"type": "cli",
|
||||
"command": "audit-syllabus",
|
||||
"args": ["--syllabus-id", "{row.大纲ID}"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "batch-audit-syllabus",
|
||||
"label": "批量体检",
|
||||
"description": "批量体检某专业或某教研室下所有大纲,按顺序逐份执行并汇总结果。",
|
||||
"placements": ["batch", "agent"],
|
||||
"executionProfile": "async",
|
||||
"bind": {
|
||||
"tables": ["课程大纲"],
|
||||
"selectionMode": "optional"
|
||||
},
|
||||
"entrypoint": {
|
||||
"type": "cli",
|
||||
"command": "batch-audit-syllabus",
|
||||
"args": ["--major-id", "{form.major_id}", "--course-ids", "{form.course_ids}"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "render-html",
|
||||
"label": "查看体检报告",
|
||||
"description": "渲染指定体检记录的 HTML 报告,宿主 iframe 预览。",
|
||||
"placements": ["row", "skill-detail", "agent"],
|
||||
"executionProfile": "sync",
|
||||
"bind": {
|
||||
"tables": ["体检记录"],
|
||||
"selectionMode": "required",
|
||||
"labelColumn": "课程名称"
|
||||
},
|
||||
"entrypoint": {
|
||||
"type": "cli",
|
||||
"command": "render-html",
|
||||
"args": ["--audit-id", "{row.体检ID}"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"id": "sync-norm-library",
|
||||
"label": "同步编制规范库",
|
||||
"description": "从教务系统重新拉取《课程大纲编制规范》红头文件并更新索引。占位 Action,cron 启用后由定时调度。",
|
||||
"placements": ["cron", "agent", "toolbar"],
|
||||
"executionProfile": "async",
|
||||
"bind": {
|
||||
"tables": ["编制规范"]
|
||||
},
|
||||
"entrypoint": {
|
||||
"type": "cli",
|
||||
"command": "sync-norm-library",
|
||||
"args": []
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
116
assets/html/example-report.html
Normal file
116
assets/html/example-report.html
Normal file
@@ -0,0 +1,116 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>{{TITLE}}</title>
|
||||
<style>
|
||||
/* 数据管理 iframe 预览布局基线 */
|
||||
html, body {
|
||||
margin: 0;
|
||||
padding: 16px;
|
||||
font-family: -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
|
||||
color: #1f2329;
|
||||
background: #fafbfc;
|
||||
line-height: 1.6;
|
||||
}
|
||||
.report { max-width: 100%; }
|
||||
.header {
|
||||
padding: 20px;
|
||||
background: linear-gradient(135deg, #047857 0%, #10b981 100%);
|
||||
color: #fff;
|
||||
border-radius: 8px;
|
||||
margin-bottom: 16px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
gap: 16px;
|
||||
}
|
||||
.header h1 { margin: 0; font-size: 22px; }
|
||||
.header .meta { color: #d1fae5; font-size: 13px; margin-top: 4px; }
|
||||
.score-box {
|
||||
flex-shrink: 0;
|
||||
padding: 16px 24px;
|
||||
background: rgba(255, 255, 255, 0.18);
|
||||
border: 1px solid rgba(255, 255, 255, 0.35);
|
||||
border-radius: 8px;
|
||||
text-align: center;
|
||||
}
|
||||
.score-box .num { font-size: 36px; font-weight: 700; line-height: 1; }
|
||||
.score-box .label { font-size: 12px; margin-top: 4px; }
|
||||
.section {
|
||||
padding: 16px 20px;
|
||||
background: #fff;
|
||||
border: 1px solid #e5e6eb;
|
||||
border-radius: 8px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
.section h2 { margin: 0 0 12px; font-size: 16px; color: #047857; }
|
||||
.checklist { list-style: none; padding: 0; margin: 0; }
|
||||
.checklist li {
|
||||
padding: 10px 12px;
|
||||
border-radius: 6px;
|
||||
margin-bottom: 6px;
|
||||
display: flex;
|
||||
gap: 10px;
|
||||
align-items: flex-start;
|
||||
}
|
||||
.checklist li.red { background: #fef2f2; color: #991b1b; }
|
||||
.checklist li.yellow { background: #fffbeb; color: #92400e; }
|
||||
.checklist li.green { background: #ecfdf5; color: #065f46; }
|
||||
.checklist li .icon { font-weight: 700; flex-shrink: 0; }
|
||||
.summary-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
|
||||
gap: 12px;
|
||||
}
|
||||
.summary-card {
|
||||
padding: 12px 16px;
|
||||
background: #f8fafc;
|
||||
border: 1px solid #e5e6eb;
|
||||
border-radius: 8px;
|
||||
}
|
||||
.summary-card .label { color: #8c959f; font-size: 12px; }
|
||||
.summary-card .value { font-size: 18px; font-weight: 600; margin-top: 4px; }
|
||||
.footer { margin-top: 16px; color: #8c959f; font-size: 12px; text-align: right; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="report">
|
||||
<div class="header">
|
||||
<div>
|
||||
<h1>{{TITLE}}</h1>
|
||||
<div class="meta">体检编号:{{AUDIT_ID}} · 课程:{{COURSE_NAME}} · 任课教师:{{TEACHER_NAME}}</div>
|
||||
<div class="meta">体检完成时间:{{GENERATED_AT}}</div>
|
||||
</div>
|
||||
<div class="score-box">
|
||||
<div class="num">{{SCORE}}</div>
|
||||
<div class="label">百分制评分</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h2>体检概览</h2>
|
||||
<div class="summary-grid">
|
||||
<div class="summary-card"><div class="label">格式结构</div><div class="value">{{FORMAT_SCORE}} 分</div></div>
|
||||
<div class="summary-card"><div class="label">课程目标与毕业要求匹配</div><div class="value">{{MATRIX_SCORE}} 分</div></div>
|
||||
<div class="summary-card"><div class="label">课程思政融合度</div><div class="value">{{IDEOLOGY_SCORE}} 分</div></div>
|
||||
<div class="summary-card"><div class="label">不达标项</div><div class="value">{{ISSUE_COUNT}} 项</div></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h2>体检结论与建议</h2>
|
||||
<p style="margin: 0; color: #4e5969;">{{CONCLUSION}}</p>
|
||||
</div>
|
||||
|
||||
<div class="section">
|
||||
<h2>不达标项清单(按重要性排序)</h2>
|
||||
<ul class="checklist">
|
||||
{{CHECKLIST_BODY}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="footer">本报告由「课程教学大纲合规性体检」技能自动生成 · 最终审核权归教务处教学科</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user