from __future__ import annotations from typing import Annotated from fastapi import APIRouter, Depends, Query from sqlalchemy.orm import Session from app.api.deps import CurrentUserContext, get_current_user, get_db from app.schemas.employee_profile import EmployeeProfileLatestRead from app.services.employee_behavior_profile_service import EmployeeBehaviorProfileService router = APIRouter(prefix="/employee-profiles") DbSession = Annotated[Session, Depends(get_db)] CurrentUser = Annotated[CurrentUserContext, Depends(get_current_user)] @router.get( "/{employee_id}/latest", response_model=EmployeeProfileLatestRead, summary="读取员工最新业务行为画像", description="返回员工在指定场景下的最新画像快照,审批场景默认只展示费用支出和流程质量画像。", ) def get_employee_latest_profile( employee_id: str, db: DbSession, current_user: CurrentUser, scene: Annotated[str, Query(max_length=50)] = "approval", claim_id: Annotated[str | None, Query(max_length=80)] = None, window_days: Annotated[int, Query(ge=1, le=365)] = 90, expense_type_scope: Annotated[str, Query(max_length=50)] = "overall", ) -> EmployeeProfileLatestRead: del current_user return EmployeeBehaviorProfileService(db).get_latest_profile( employee_id=employee_id, scene=scene, claim_id=claim_id, window_days=window_days, expense_type_scope=expense_type_scope, )