```
refactor(core,ai): 调整模块导入路径并移除废弃文件 - 修复 scheduler.py 中的导入路径错误,将 reports.service 改为 reports.services - 移除废弃的 app/core/background/task_queue.py 文件 - 移除废弃的 app/modules/ai_agent/adapters.py 文件 - 修复 ai_memory/service.py 中的导入路径错误,将 events.service 改为 events.services ```
This commit is contained in:
94
app/modules/reports/services/lifecycle/report.py
Normal file
94
app/modules/reports/services/lifecycle/report.py
Normal file
@@ -0,0 +1,94 @@
|
||||
from datetime import date
|
||||
from typing import Any
|
||||
|
||||
|
||||
from app.core.constants import ActorValue
|
||||
from app.modules.reports.constants import (
|
||||
LifecycleFilterKey,
|
||||
LifecycleResponseKey,
|
||||
LifecycleSection,
|
||||
ReportTitle,
|
||||
)
|
||||
from app.modules.reports.services.common import _json_safe
|
||||
|
||||
|
||||
class ReportLifecycleReportMixin:
|
||||
def project_lifecycle_report(
|
||||
self,
|
||||
project_code: str | None = None,
|
||||
owner: str | None = None,
|
||||
period_start: date | None = None,
|
||||
period_end: date | None = None,
|
||||
include_ai: bool = False,
|
||||
actor: str = ActorValue.API,
|
||||
) -> dict[str, Any]:
|
||||
"""Build a full lifecycle report for project progress, delivery, cost, and risk."""
|
||||
|
||||
filters = self._lifecycle_filters(project_code, owner, period_start, period_end)
|
||||
project_conditions = filters[LifecycleSection.PROJECTS]
|
||||
task_conditions = filters[LifecycleSection.TASKS]
|
||||
procurement_conditions = filters[LifecycleSection.PROCUREMENTS]
|
||||
expense_conditions = filters[LifecycleSection.EXPENSES]
|
||||
attendance_conditions = filters[LifecycleSection.ATTENDANCE]
|
||||
risk_conditions = filters[LifecycleSection.RISKS]
|
||||
|
||||
project_stats = self._lifecycle_project_stats(project_conditions)
|
||||
task_stats = self._lifecycle_task_stats(task_conditions)
|
||||
procurement_stats = self._lifecycle_procurement_stats(procurement_conditions)
|
||||
expense_stats = self._lifecycle_expense_stats(expense_conditions)
|
||||
fund_stats = self._lifecycle_fund_stats()
|
||||
supplier_stats = self._lifecycle_supplier_stats()
|
||||
attendance_stats = self._lifecycle_attendance_stats(attendance_conditions)
|
||||
risk_stats = self._lifecycle_risk_stats(
|
||||
project_conditions,
|
||||
task_conditions,
|
||||
risk_conditions,
|
||||
)
|
||||
include_global_risk = not (project_code or owner)
|
||||
health = self._lifecycle_health(
|
||||
project_stats,
|
||||
task_stats,
|
||||
risk_stats,
|
||||
supplier_stats,
|
||||
include_global_risk,
|
||||
)
|
||||
attention = self._lifecycle_attention(project_conditions, task_conditions)
|
||||
recommendations = self._lifecycle_recommendations(
|
||||
project_stats,
|
||||
task_stats,
|
||||
procurement_stats,
|
||||
expense_stats,
|
||||
fund_stats,
|
||||
supplier_stats,
|
||||
risk_stats,
|
||||
include_global_risk,
|
||||
)
|
||||
|
||||
metrics = {
|
||||
LifecycleSection.HEALTH: health,
|
||||
LifecycleSection.PROJECTS: project_stats,
|
||||
LifecycleSection.TASKS: task_stats,
|
||||
LifecycleSection.PROCUREMENTS: procurement_stats,
|
||||
LifecycleSection.EXPENSES: expense_stats,
|
||||
LifecycleSection.FUNDS: fund_stats,
|
||||
LifecycleSection.SUPPLIERS: supplier_stats,
|
||||
LifecycleSection.ATTENDANCE: attendance_stats,
|
||||
LifecycleSection.RISKS: risk_stats,
|
||||
}
|
||||
lines = self._lifecycle_lines(
|
||||
filters[LifecycleFilterKey.LABELS],
|
||||
metrics,
|
||||
recommendations,
|
||||
)
|
||||
report = {
|
||||
LifecycleResponseKey.TITLE: ReportTitle.PROJECT_LIFECYCLE,
|
||||
LifecycleResponseKey.FILTERS: filters[LifecycleFilterKey.LABELS],
|
||||
LifecycleResponseKey.METRICS: _json_safe(metrics),
|
||||
LifecycleResponseKey.ATTENTION: _json_safe(attention),
|
||||
LifecycleResponseKey.RECOMMENDATIONS: recommendations,
|
||||
LifecycleResponseKey.LINES: lines,
|
||||
LifecycleResponseKey.CONTENT: "\n".join(lines),
|
||||
}
|
||||
if include_ai:
|
||||
report[LifecycleResponseKey.AI_ANALYSIS] = self._lifecycle_ai_analysis(report, actor)
|
||||
return report
|
||||
Reference in New Issue
Block a user