v1.0.1: 奖助学金评定逻辑防伪校验 - 初版骨架

基于匠厂 skill-template 主仓 v1.0.108 派生的业务技能。

核心业务:
- 辅导员在汇总表中批量勾选候选人后自动触发
- 多源数据一致性校验(自报家庭年收入 vs 一卡通消费 vs 生源地 GDP)
- 横向排名可疑检测(综测 vs 成绩排名差值过大)
- 历史重复资助排查(本学年累计金额超限)

输出形态:
- 《奖助评定复核建议清单》HTML 报告
- 高风险个案推送至辅导员工作台
- 复核结果留痕(核查说明 + 终审结论)

预期提效:资助中心抽查工作量减少 80%;因认定不公引发的学生投诉事件下降 60%。

业务行生命周期:待审 → 已标注 → 已复核(保留 / 取消 / 调减)/ 已驳回 / 已撤回

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
2026-09-14 12:19:13 +08:00
commit 3f87f223f9
21 changed files with 1548 additions and 0 deletions

1
scripts/cli/__init__.py Normal file
View File

@@ -0,0 +1 @@
"""scripts.cli - CLI 参数解析层(占位)"""

8
scripts/db/__init__.py Normal file
View File

@@ -0,0 +1,8 @@
"""scripts.db - 数据库访问层(占位)
按 references/SCHEMA.md 实现表与字段:
- 制度送审稿
- 冲突条款清单
- 制度库索引
- 审查任务日志
"""

105
scripts/main.py Normal file
View File

@@ -0,0 +1,105 @@
#!/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"verify-scholarship-fraud-sas health check (placeholder)")
print(f"base_dir: {BASE_DIR}")
return 0
def version():
"""查看版本(占位)。"""
print("verify-scholarship-fraud-sas 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 verify_candidate(candidate_id: str):
"""对一位候选人做防伪校验。"""
print(f"verify-candidate: candidate_id={candidate_id} (待开发者实现)")
return 0
def batch_verify_class(class_id: str):
"""批量校验某班级候选人。"""
print(f"batch-verify-class: class_id={class_id} (待开发者实现)")
return 0
def mark_needs_review(candidate_id: str, reason: str):
"""标记候选人为待复核。"""
print(f"mark-needs-review: candidate_id={candidate_id} reason={reason} (待开发者实现)")
return 0
def submit_review_result(candidate_id: str, conclusion: str, review_note: str):
"""提交复核结果。"""
print(f"submit-review-result: candidate_id={candidate_id} conclusion={conclusion} (待开发者实现)")
return 0
def render_html(list_id: str):
"""查看复核清单。"""
print(f"render-html: list_id={list_id} (待开发者实现)")
return 0
def sync_card_data():
"""同步一卡通数据。"""
print("sync-card-data (待开发者实现)")
return 0
def sync_gdp_data():
"""同步生源地 GDP 数据。"""
print("sync-gdp-data (待开发者实现)")
return 0
COMMANDS = {
"health": health,
"version": version,
"config-path": config_path,
"init-db": init_db,
"verify-candidate": verify_candidate,
"batch-verify-class": batch_verify_class,
"mark-needs-review": mark_needs_review,
"submit-review-result": submit_review_result,
"render-html": render_html,
"sync-card-data": sync_card_data,
"sync-gdp-data": sync_gdp_data,
}
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())

View File

@@ -0,0 +1,9 @@
"""scripts.service - 业务核心逻辑层(占位)
按 development/REQUIREMENTS.md §3 开发目标实现:
- 条款解析与向量化
- 制度库语义比对
- 程序合规体检
- 重复发文检测
- 报告生成与批注回写
"""

1
scripts/util/__init__.py Normal file
View File

@@ -0,0 +1 @@
"""scripts.util - 工具函数层(占位)"""