feat: 报销审批流重构与管家计划全链路贯通
- 重构报销状态注册表、审批流路由与平台风险标记 - 完善管家意图规划器与模型计划构建器全链路 - 新增 OCR Worker 脚本、数据库会话管理与通知状态 - 优化文档中心、日志视图、预算中心与员工管理交互 - 增强工作台摘要、图标资源与全局主题样式 - 补充审批路由、状态注册、OCR 服务与管家规划器测试覆盖
This commit is contained in:
@@ -25,6 +25,23 @@ from app.services.knowledge_rag import shutdown_knowledge_rag_runtime
|
||||
from app.services.knowledge_scheduler import knowledge_index_scheduler
|
||||
|
||||
|
||||
def _effective_server_workers(settings: object) -> int:
|
||||
server_workers = getattr(settings, "server_workers", None)
|
||||
web_concurrency = getattr(settings, "web_concurrency", None)
|
||||
workers = web_concurrency if int(server_workers or 1) <= 1 and web_concurrency else server_workers
|
||||
try:
|
||||
return max(1, int(workers or 1))
|
||||
except (TypeError, ValueError):
|
||||
return 1
|
||||
|
||||
|
||||
def _should_start_background_schedulers(settings: object) -> bool:
|
||||
if not bool(getattr(settings, "background_schedulers_enabled", True)):
|
||||
return False
|
||||
|
||||
return _effective_server_workers(settings) <= 1
|
||||
|
||||
|
||||
@asynccontextmanager
|
||||
async def lifespan(_: FastAPI) -> AsyncIterator[None]:
|
||||
settings = get_settings()
|
||||
@@ -34,11 +51,19 @@ async def lifespan(_: FastAPI) -> AsyncIterator[None]:
|
||||
prepare_agent_foundation()
|
||||
prepare_knowledge_library()
|
||||
sync_repository_hermes_skills()
|
||||
knowledge_index_scheduler.start()
|
||||
finance_dashboard_scheduler.start()
|
||||
employee_profile_scheduler.start()
|
||||
digital_employee_reminder_scheduler.start()
|
||||
finance_report_scheduler.start()
|
||||
schedulers_started = _should_start_background_schedulers(settings)
|
||||
if schedulers_started:
|
||||
knowledge_index_scheduler.start()
|
||||
finance_dashboard_scheduler.start()
|
||||
employee_profile_scheduler.start()
|
||||
digital_employee_reminder_scheduler.start()
|
||||
finance_report_scheduler.start()
|
||||
else:
|
||||
logger.warning(
|
||||
"Background schedulers skipped - workers=%s enabled=%s",
|
||||
_effective_server_workers(settings),
|
||||
settings.background_schedulers_enabled,
|
||||
)
|
||||
logger.info(
|
||||
"Server ready - host=%s port=%s prefix=%s",
|
||||
settings.app_host,
|
||||
@@ -46,11 +71,12 @@ async def lifespan(_: FastAPI) -> AsyncIterator[None]:
|
||||
settings.api_v1_prefix,
|
||||
)
|
||||
yield
|
||||
finance_report_scheduler.shutdown()
|
||||
digital_employee_reminder_scheduler.shutdown()
|
||||
employee_profile_scheduler.shutdown()
|
||||
finance_dashboard_scheduler.shutdown()
|
||||
knowledge_index_scheduler.shutdown()
|
||||
if schedulers_started:
|
||||
finance_report_scheduler.shutdown()
|
||||
digital_employee_reminder_scheduler.shutdown()
|
||||
employee_profile_scheduler.shutdown()
|
||||
finance_dashboard_scheduler.shutdown()
|
||||
knowledge_index_scheduler.shutdown()
|
||||
knowledge_index_task_manager.shutdown()
|
||||
shutdown_knowledge_rag_runtime()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user