68 lines
2.3 KiB
Python
68 lines
2.3 KiB
Python
from __future__ import annotations
|
|
|
|
from fastapi import APIRouter, Depends, HTTPException
|
|
from sqlmodel import Session
|
|
|
|
from ..db.session import get_session
|
|
from ..services import safety_center_service
|
|
|
|
router = APIRouter(prefix='/api/safety')
|
|
|
|
|
|
@router.get('/dashboard')
|
|
def dashboard(refresh: bool = False, session: Session = Depends(get_session)):
|
|
return safety_center_service.get_dashboard(session, force_refresh=refresh)
|
|
|
|
|
|
@router.get('/summary')
|
|
def summary(session: Session = Depends(get_session)):
|
|
return safety_center_service.get_summary(session)
|
|
|
|
|
|
@router.get('/sections')
|
|
def sections(session: Session = Depends(get_session)):
|
|
return safety_center_service.get_sections(session)
|
|
|
|
|
|
@router.get('/findings')
|
|
def findings(session: Session = Depends(get_session)):
|
|
return safety_center_service.get_findings(session)
|
|
|
|
|
|
@router.get('/recommendations')
|
|
def recommendations(session: Session = Depends(get_session)):
|
|
return safety_center_service.get_recommendations(session)
|
|
|
|
|
|
@router.get('/score-breakdown')
|
|
def score_breakdown(session: Session = Depends(get_session)):
|
|
return safety_center_service.get_score_breakdown(session)
|
|
|
|
|
|
@router.post('/refresh')
|
|
def refresh(session: Session = Depends(get_session)):
|
|
return safety_center_service.refresh(session)
|
|
|
|
|
|
@router.post('/findings/{finding_id}/acknowledge')
|
|
def acknowledge_finding(finding_id: str, session: Session = Depends(get_session)):
|
|
return safety_center_service.acknowledge_finding(session, finding_id)
|
|
|
|
|
|
@router.post('/findings/{finding_id}/dismiss')
|
|
def dismiss_finding(finding_id: str, session: Session = Depends(get_session)):
|
|
return safety_center_service.dismiss_finding(session, finding_id)
|
|
|
|
|
|
@router.post('/recommendations/{recommendation_id}/dismiss')
|
|
def dismiss_recommendation(recommendation_id: str, session: Session = Depends(get_session)):
|
|
return safety_center_service.dismiss_recommendation(session, recommendation_id)
|
|
|
|
|
|
@router.post('/recommendations/{recommendation_id}/create-remediation-plan')
|
|
def create_remediation_plan(recommendation_id: str, session: Session = Depends(get_session)):
|
|
result = safety_center_service.create_remediation_plan(session, recommendation_id)
|
|
if result.get('status') == 'not_found':
|
|
raise HTTPException(status_code=404, detail='recommendation_not_found')
|
|
return result
|