기능 추가 — 신고 상황종료 처리
- DB: reports 테이블에 closure_type, closure_note, closed_at, closed_by 컬럼 추가
- 백엔드: PATCH /reports/{id}/close 엔드포인트 (사유 4종: natural/remote_reset/false_alarm/other)
- 신고상세: 승인대기 상태에서 [상황종료] 버튼 추가, 인라인 패널에서 사유 선택
- 상황종료 후 상세 화면에 사유·메모·처리자·일시 표시
- 엑셀 AS신고목록에 상황종료 4개 컬럼 추가
- 신고목록 필터·지도 상태 목록에 closed 추가, CSS 뱃지 추가
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -45,6 +45,10 @@ def _fmt_report(r: models.Report, db: Session):
|
||||
"repair_id": repair_id,
|
||||
"mechanic_name": mechanic_name,
|
||||
"mechanic_company": mechanic_company,
|
||||
"closure_type": r.closure_type,
|
||||
"closure_note": r.closure_note,
|
||||
"closed_at": r.closed_at.isoformat() if r.closed_at else None,
|
||||
"closed_by_name": r.closer.name if r.closer else None,
|
||||
}
|
||||
|
||||
@router.post("")
|
||||
@@ -321,6 +325,29 @@ def approve_report(report_id: int, db: Session = Depends(get_db), _=Depends(requ
|
||||
r.status = "pending"; db.commit()
|
||||
return {"ok": True}
|
||||
|
||||
CLOSURE_TYPES = {"natural", "remote_reset", "false_alarm", "other"}
|
||||
|
||||
@router.patch("/{report_id}/close")
|
||||
def close_report(
|
||||
report_id: int,
|
||||
closure_type: str = Form(...),
|
||||
closure_note: str = Form(""),
|
||||
db: Session = Depends(get_db),
|
||||
current_user: models.User = Depends(require_admin)
|
||||
):
|
||||
if closure_type not in CLOSURE_TYPES:
|
||||
raise HTTPException(400, "유효하지 않은 상황종료 사유입니다.")
|
||||
r = db.query(models.Report).filter_by(id=report_id).first()
|
||||
if not r: raise HTTPException(404)
|
||||
from datetime import datetime
|
||||
r.status = "closed"
|
||||
r.closure_type = closure_type
|
||||
r.closure_note = closure_note.strip() or None
|
||||
r.closed_at = datetime.now()
|
||||
r.closed_by = current_user.id
|
||||
db.commit()
|
||||
return {"ok": True}
|
||||
|
||||
@router.patch("/{report_id}/status")
|
||||
def update_status(report_id: int, status: str = Form(...),
|
||||
db: Session = Depends(get_db), _=Depends(require_admin)):
|
||||
|
||||
Reference in New Issue
Block a user