#!/usr/bin/env python3 """Pipeline Application - 产线管理独立应用""" import os, sys, asyncio app_dir = os.path.dirname(os.path.abspath(__file__)) root_dir = os.path.dirname(app_dir) sys.path.insert(0, root_dir) sys.path.insert(0, app_dir) from ahserver.webapp import webapp from ahserver.serverenv import ServerEnv def get_module_dbname(mname): """All modules use the pipeline database.""" return 'pipeline' def init(): from bricks_for_python.init import load_pybricks from rbac.init import load_rbac from appbase.init import load_appbase from pipeline_core.init import load_pipeline_core from pipeline_ops.init import load_pipeline_ops from pipeline_dist.init import load_pipeline_dist try: from pipeline_service.init import load_pipeline_service except ImportError: def load_pipeline_service(): pass try: from pipeline_sdlc.adapter import load_sdlc_adapter except ImportError: def load_sdlc_adapter(): pass try: from app_audit.init import load_app_audit except ImportError: def load_app_audit(): pass from showcase.init import load_showcase from tenant.init import load_tenant from ktv_adapter import load_ktv_adapter from global_func import set_globalvariable import office_proxy # 注册 /office/* 转发函数(univer-office Node 服务代理) try: from smssend import load_smssend except ImportError: def load_smssend(): pass # uapi:外部 API 网关(rag 模块依赖它调 vdb/reranker/ner/graph) try: from uapi.init import load_uapi except ImportError: def load_uapi(): pass # rag:知识库(向量检索 + 图谱),表名统一 rag_ 前缀,与产线业务表不冲突 try: from rag.init import init_rag_module except ImportError: def init_rag_module(): pass set_globalvariable() ServerEnv().get_module_dbname = get_module_dbname load_pybricks() load_appbase() load_rbac() load_pipeline_core() load_pipeline_ops() load_pipeline_dist() load_pipeline_service() load_sdlc_adapter() load_app_audit() load_showcase() load_tenant() load_ktv_adapter() load_smssend() load_uapi() # 必须在 rag 之前:rag 通过 uapi 调 vdb/reranker/ner/graph init_rag_module() # Permission cache warms up on first request if __name__ == '__main__': webapp(init)