```
feat: 添加生命周期报告和AI规则管理功能 - 在Dockerfile中添加pillow依赖包用于图像处理 - 实现生命周期报告调度任务,支持日报和周报两种类型 - 新增TASK_RUN_LIFECYCLE任务常量和相关配置选项 - 扩展AI Agent服务以支持用户规则,并在分析时应用规则 - 添加AI用户规则创建、更新和查询接口 - 增加项目生命周期和财务需求分析技能 - 扩展现有模型以支持更完整的业务数据字段 - 实现飞书图片上传功能用于报告展示 ```
This commit is contained in:
@@ -3,11 +3,16 @@ from datetime import date
|
||||
from fastapi import APIRouter, Depends
|
||||
from sqlalchemy.orm import Session
|
||||
|
||||
from app.core.background.task_queue import enqueue_daily_brief_push, enqueue_project_weekly_push
|
||||
from app.core.background.task_queue import (
|
||||
enqueue_daily_brief_push,
|
||||
enqueue_lifecycle_report,
|
||||
enqueue_project_weekly_push,
|
||||
)
|
||||
from app.core.database import get_db
|
||||
from app.core.security import ApiPrincipal, require_api_key, require_operations_enabled
|
||||
from app.modules.reports.constants import ReportPushKey
|
||||
from app.modules.reports.schemas import (
|
||||
LifecycleRunRequest,
|
||||
PushReportRequest,
|
||||
ReportResponse,
|
||||
WorkReportGenerateRequest,
|
||||
@@ -77,6 +82,56 @@ def attendance_summary(
|
||||
return ReportService(db).attendance_summary(work_date)
|
||||
|
||||
|
||||
@router.get("/personnel-lifecycle")
|
||||
def personnel_lifecycle_report(
|
||||
department: str | None = None,
|
||||
employee_code: str | None = None,
|
||||
project_code: str | None = None,
|
||||
period_start: date | None = None,
|
||||
period_end: date | None = None,
|
||||
db: Session = Depends(get_db),
|
||||
) -> dict:
|
||||
return ReportService(db).personnel_lifecycle_report(
|
||||
department=department,
|
||||
employee_code=employee_code,
|
||||
project_code=project_code,
|
||||
period_start=period_start,
|
||||
period_end=period_end,
|
||||
)
|
||||
|
||||
|
||||
@router.get("/project-finance-needs")
|
||||
def project_finance_needs_report(
|
||||
project_code: str | None = None,
|
||||
department: str | None = None,
|
||||
as_of: date | None = None,
|
||||
db: Session = Depends(get_db),
|
||||
principal: ApiPrincipal = Depends(require_api_key),
|
||||
) -> dict:
|
||||
return ReportService(db).project_finance_needs_report(
|
||||
project_code=project_code,
|
||||
department=department,
|
||||
as_of=as_of,
|
||||
include_ai=False,
|
||||
actor=principal.actor,
|
||||
)
|
||||
|
||||
|
||||
@router.post("/lifecycle/enqueue")
|
||||
def enqueue_lifecycle(
|
||||
payload: LifecycleRunRequest,
|
||||
principal: ApiPrincipal = Depends(require_api_key),
|
||||
) -> dict:
|
||||
require_operations_enabled()
|
||||
return enqueue_lifecycle_report(
|
||||
report_type=payload.report_type,
|
||||
receive_id=payload.receive_id,
|
||||
receive_id_type=payload.receive_id_type,
|
||||
force=payload.force,
|
||||
actor=principal.actor,
|
||||
)
|
||||
|
||||
|
||||
@router.get("/push-runs")
|
||||
def list_push_runs(
|
||||
status: str | None = None,
|
||||
|
||||
Reference in New Issue
Block a user