新增重复课程小结审核
This commit is contained in:
@@ -16,12 +16,14 @@ from ..config import (
|
||||
from ..data import (
|
||||
append_operation_log,
|
||||
approve_admin_task,
|
||||
create_course_summary_duplicate_review_tasks,
|
||||
delete_course_summary,
|
||||
list_admin_tasks,
|
||||
list_operation_logs,
|
||||
migrate_operation_log_labels,
|
||||
query_course_summaries,
|
||||
reject_admin_task,
|
||||
resolve_duplicate_course_summary_task,
|
||||
rollback_operation_log,
|
||||
update_course_summary_time,
|
||||
)
|
||||
@@ -139,6 +141,33 @@ def admin_approve_task(task_id: int, _user: str = Depends(verify_admin_auth)):
|
||||
return {"ok": True, **result}
|
||||
|
||||
|
||||
@router.post("/api/admin/tasks/{task_id}/resolve-duplicate-summary")
|
||||
def admin_resolve_duplicate_summary(task_id: int, payload: dict, _user: str = Depends(verify_admin_auth)):
|
||||
delete_summary_id = str(payload.get("delete_summary_id") or "")
|
||||
try:
|
||||
with write_lock:
|
||||
result = resolve_duplicate_course_summary_task(
|
||||
ADMIN_TASKS_PATH,
|
||||
COURSE_SUMMARIES_ROOT,
|
||||
task_id,
|
||||
delete_summary_id,
|
||||
)
|
||||
task = result.get("task", {})
|
||||
append_operation_log(
|
||||
OPERATION_LOGS_PATH,
|
||||
"重复小结删除",
|
||||
"已删除",
|
||||
task_id=task_id,
|
||||
task_type=str(task.get("type") or ""),
|
||||
student=str(task.get("student") or ""),
|
||||
summary_id=str(result.get("deleted_summary_id") or ""),
|
||||
backup_id=str(result.get("backup_id") or ""),
|
||||
)
|
||||
except ValueError as exc:
|
||||
raise HTTPException(status_code=409, detail=str(exc)) from exc
|
||||
return {"ok": True, **result}
|
||||
|
||||
|
||||
@router.post("/api/admin/tasks/{task_id}/reject")
|
||||
def admin_reject_task(task_id: int, _user: str = Depends(verify_admin_auth)):
|
||||
try:
|
||||
@@ -158,6 +187,23 @@ def admin_reject_task(task_id: int, _user: str = Depends(verify_admin_auth)):
|
||||
return {"ok": True, "task": task}
|
||||
|
||||
|
||||
@router.post("/api/admin/course-summaries/duplicate-scan")
|
||||
def admin_scan_duplicate_course_summaries(_user: str = Depends(verify_admin_auth)):
|
||||
try:
|
||||
with write_lock:
|
||||
result = create_course_summary_duplicate_review_tasks(ADMIN_TASKS_PATH, COURSE_SUMMARIES_ROOT)
|
||||
append_operation_log(
|
||||
OPERATION_LOGS_PATH,
|
||||
"重复小结扫描",
|
||||
"待审核" if result.get("created") else "完成",
|
||||
scanned_groups=int(result.get("scanned") or 0),
|
||||
created_tasks=int(result.get("created") or 0),
|
||||
)
|
||||
except ValueError as exc:
|
||||
raise HTTPException(status_code=400, detail=str(exc)) from exc
|
||||
return {"ok": True, **result}
|
||||
|
||||
|
||||
@router.post("/api/admin/course-summaries/{summary_id}/time")
|
||||
def admin_update_course_summary_time(summary_id: str, payload: dict, _user: str = Depends(verify_admin_auth)):
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user