Files
analyze-grade-distribution-aa/scripts/main.py
taojianmin 1d20cfa708 v1.0.1: 课程成绩异常诊断与报告生成 - 初版骨架
基于匠厂 skill-template 主仓 v1.0.108 派生的业务技能。

核心业务:
- 教师在教务系统录完成绩后自动触发
- 统计指标计算 + 三种异常模式识别(高分低能 / 两极分化 / 挂科异常)
- 生成三段式 AI 评语(总体 / 问题 / 建议)

输出形态:
- HTML 报告(含统计表 + 正态分布图 + AI 评语)
- 高风险课程自动标记 + 异常预警通知

预期提效:教师撰写成绩分析报告的时间从半天 → 10 分钟。

业务行生命周期:无(一次性报告存档,不重复处理)

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

92 lines
2.3 KiB
Python

#!/usr/bin/env python3
"""课程成绩异常诊断与报告生成 - CLI 入口(占位骨架)"""
import sys
from pathlib import Path
# 占位:开发者后续接入 jiangchang_skill_core
# from jiangchang_skill_core import ...
BASE_DIR = Path(__file__).resolve().parent.parent
def health():
"""运行检查(占位)。"""
print(f"analyze-grade-distribution-aa health check (placeholder)")
print(f"base_dir: {BASE_DIR}")
return 0
def version():
"""查看版本(占位)。"""
print("analyze-grade-distribution-aa v1.0.1")
return 0
def config_path():
"""查看配置位置(占位)。"""
print(f"{BASE_DIR / '.env'}")
return 0
def init_db():
"""初始化数据库(占位)。"""
print("init-db: 后续由开发者按 references/SCHEMA.md 实现")
return 0
def analyze_grade_distribution(course_id: str):
"""分析这份成绩。"""
print(f"analyze-grade-distribution: course_id={course_id} (待开发者实现)")
return 0
def batch_analyze_courses(semester_id: str):
"""批量分析本学期。"""
print(f"batch-analyze-courses: semester_id={semester_id} (待开发者实现)")
return 0
def render_html(report_id: str):
"""查看分析报告。"""
print(f"render-html: report_id={report_id} (待开发者实现)")
return 0
def flag_high_risk_course(report_id: str):
"""标记为高风险课程。"""
print(f"flag-high-risk-course: report_id={report_id} (待开发者实现)")
return 0
def sync_historical_grades():
"""同步历史成绩。"""
print("sync-historical-grades (待开发者实现)")
return 0
COMMANDS = {
"health": health,
"version": version,
"config-path": config_path,
"init-db": init_db,
"analyze-grade-distribution": analyze_grade_distribution,
"batch-analyze-courses": batch_analyze_courses,
"render-html": render_html,
"flag-high-risk-course": flag_high_risk_course,
"sync-historical-grades": sync_historical_grades,
}
def main(argv=None):
argv = argv or sys.argv[1:]
if not argv or argv[0] not in COMMANDS:
print("Usage: python scripts/main.py <command>")
print("Commands:", ", ".join(COMMANDS.keys()))
return 1
return COMMANDS[argv[0]](*argv[1:])
if __name__ == "__main__":
sys.exit(main())