feat: add summary registration and deletion review

This commit is contained in:
Codex
2026-06-15 16:23:06 +08:00
parent cc46f651dc
commit 854e4942ba
10 changed files with 597 additions and 22 deletions
+30 -1
View File
@@ -4,7 +4,15 @@ from fastapi import APIRouter, Depends, HTTPException, Query, Request
from ..api_utils import file_meta, load_accounts, payload_to_account, read_register_payload
from ..auth import verify_accounts_auth, verify_admin_auth
from ..config import ACCOUNTS_PATH, CLASSNOTES_PATH, write_lock
from ..config import (
ACCOUNTS_PATH,
ADMIN_TASKS_PATH,
CLASSNOTES_PATH,
COURSE_SUMMARIES_ROOT,
COURSE_SUMMARY_STATE_PATH,
OPERATION_LOGS_PATH,
write_lock,
)
from ..data import (
ACCOUNT_STATUSES,
DuplicateRecordError,
@@ -13,6 +21,7 @@ from ..data import (
create_account,
filter_accounts,
register_class_record_lines,
register_course_summary_texts,
register_payment_lines,
update_account,
)
@@ -51,6 +60,26 @@ async def register_payments(request: Request, _user: str = Depends(verify_admin_
return {"ok": True, **result}
@router.post("/api/register/course-summaries")
async def register_course_summaries(request: Request, _user: str = Depends(verify_admin_auth)):
try:
payload = await read_register_payload(request)
with write_lock:
result = register_course_summary_texts(
classnotes_path=CLASSNOTES_PATH,
accounts_path=ACCOUNTS_PATH,
tasks_path=ADMIN_TASKS_PATH,
summaries_root=COURSE_SUMMARIES_ROOT,
state_path=COURSE_SUMMARY_STATE_PATH,
operation_logs_path=OPERATION_LOGS_PATH,
lines=payload.lines,
line=payload.line,
)
except ValueError as exc:
raise HTTPException(status_code=400, detail=str(exc)) from exc
return {"ok": True, **result}
@router.get("/api/account-health")
def account_health(_user: str = Depends(verify_accounts_auth)):
accounts = load_accounts()
+14 -2
View File
@@ -5,8 +5,8 @@ from fastapi import APIRouter, Depends, HTTPException, Query
from ..api_utils import load_accounts, load_records
from ..auth import verify_records_auth
from ..config import ADMIN_TASKS_PATH
from ..data import account_to_dict, query_records, submit_correction_tasks
from ..schemas import CorrectionSubmitPayload
from ..data import account_to_dict, query_records, submit_correction_tasks, submit_deletion_tasks
from ..schemas import CorrectionSubmitPayload, DeletionSubmitPayload
router = APIRouter()
@@ -39,3 +39,15 @@ def submit_corrections(payload: CorrectionSubmitPayload, _user: str = Depends(ve
except ValueError as exc:
raise HTTPException(status_code=400, detail=str(exc)) from exc
return {"ok": True, **result}
@router.post("/api/deletions")
def submit_deletions(payload: DeletionSubmitPayload, _user: str = Depends(verify_records_auth)):
try:
result = submit_deletion_tasks(
ADMIN_TASKS_PATH,
[item.dict() for item in payload.items],
)
except ValueError as exc:
raise HTTPException(status_code=400, detail=str(exc)) from exc
return {"ok": True, **result}