#!/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 try: from pipeline_bidding.init import load_pipeline_bidding except ImportError: def load_pipeline_bidding(): pass try: from pipeline_opportunity.init import load_pipeline_opportunity except ImportError: def load_pipeline_opportunity(): 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 # dapi:开放平台 key 管理(downapp/downapikey)。注册 'Bearer ' 认证方法进 RBAC, # rag 对外 API 的 Bearer key 鉴权依赖它——必须在 rag 之前 load。 try: from dapi.init import load_dapi except ImportError: def load_dapi(): pass # rag:知识库(向量检索 + 图谱),表名统一 rag_ 前缀,与产线业务表不冲突 try: from rag.init import init_rag_module except ImportError: def init_rag_module(): pass # dingdingflow:钉钉审批(表名 dda_ 前缀)。必须早于 pipeline_service, # 后者的 dingtalk_approval 适配器要用它注册的 register_biz_handler try: from dingdingflow.init import load_dingdingflow except ImportError: def load_dingdingflow(): pass # ── 商品化:定价/账务/折扣/支付(模块与表早已就位,此前一直没 load,页面点了即 500)── try: from pricing.init import load_pricing except ImportError: def load_pricing(): pass try: from accounting.init import load_accounting except ImportError: def load_accounting(): pass try: from discount.init import load_discount except ImportError: def load_discount(): pass try: from unipay.init import load_unipay except ImportError: def load_unipay(): pass # ── 资源模块:各自决定 ppid 挂法,统一暴露 resolve_ppid 给产品层 ── try: from account_resource.init import load_account_resource except ImportError: def load_account_resource(): pass try: from storage_resource.init import load_storage_resource except ImportError: def load_storage_resource(): pass # product_management:产品层,通过 env.product_interface 调资源模块 try: from product_management import load_product_management except ImportError: def load_product_management(): pass # filemgr:文件/附件管理(supplychain 合同附件依赖) try: from filemgr.init import load_filemgr except ImportError: def load_filemgr(): pass # supplychain:供应商/分销商/供应链折扣管理 try: from supplychain.init import load_supplychain except ImportError: def load_supplychain(): pass # pipeline_llm:模型治理(供应商/账号/端点/组织策略/限额限流/双维度记账) try: from pipeline_llm.init import load_llm except ImportError: def load_llm(): pass # pipeline_platform:平台内部 agent(模型自动配置等,仅管理员) try: from pipeline_platform.init import load_pipeline_platform except ImportError: def load_pipeline_platform(): 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_dingdingflow() # 先于 pipeline_service:其钉钉审批适配器依赖 register_biz_handler # 商品化链路:pricing 必须先于资源模块(资源计费要调 pricing_program_charging) load_pricing() load_accounting() load_discount() load_unipay() load_account_resource() load_storage_resource() load_product_management() # 产品层:依赖资源模块的 product_interface load_filemgr() # 文件管理:先于 supplychain(合同附件依赖) load_supplychain() # 供应链:供应商/分销商/折扣 load_llm() # 模型治理:供应商/账号/端点/组织策略/限额限流/记账 load_pipeline_service() load_pipeline_platform() # 平台内部 agent(依赖 pipeline_service 的 llm_bridge) load_pipeline_bidding() # 投标产线能力包(依赖 pipeline_service 的 capability 分发) load_pipeline_opportunity() # 商机产线能力包(数据来自数据爬取平台内网 HTTP) load_sdlc_adapter() load_app_audit() load_showcase() load_tenant() load_ktv_adapter() load_smssend() load_uapi() # 必须在 rag 之前:rag 通过 uapi 调 vdb/reranker/ner/graph load_dapi() # 必须在 rag 之前:注册 Bearer key 认证,rag API 端点鉴权依赖 init_rag_module() # Permission cache warms up on first request if __name__ == '__main__': webapp(init)