148 lines
5.0 KiB
Python
148 lines
5.0 KiB
Python
# -*- coding: utf-8 -*-
|
||
"""
|
||
pbls 应用唯一入口(PBL Agent OS Phase 0/1)
|
||
|
||
约定(web-application-spec):
|
||
- 一个应用 = 一个入口 = 一个端口(本项目 9300,与 conf/config.json、
|
||
projects/pbls/env/{test,prod}.json 三方同值)
|
||
- init() 内 ServerEnv() 先于 load_rbac(),再逐个显式 load_XXX()
|
||
- 模块取库名一律走 ServerEnv().get_module_dbname('模块名'),禁止硬编码 DBNAME
|
||
- 挂载顺序以 projects/pbls/pbls_spec.json 的 load_order 为准(23 个模块)
|
||
- HTTP 服务只由 ahserver 提供,不引入任何第三方 Web 框架或自建路由/序列化装饰器
|
||
"""
|
||
|
||
import os
|
||
import sys
|
||
|
||
from ahserver.webapp import webapp
|
||
from ahserver.serverenv import ServerEnv
|
||
|
||
# ---- 基础层(已存在,直接复用,不重复开发)----
|
||
from appbase.init import load_appbase
|
||
from rbac.init import load_rbac
|
||
from pybricks.init import load_pybricks
|
||
|
||
# ---- PBL 公共内核(必须最先挂载,其余 pbl_* 模块依赖它)----
|
||
from pbl_common.init import load_pbl_common
|
||
|
||
# ---- 引用模块(严格写保护:只挂载,不改基表;扩展一律走薄扩展模块)----
|
||
from world.init import load_world
|
||
from scene.init import load_scene
|
||
from entity.init import load_entity
|
||
from scense.init import load_scense
|
||
from scense_runtime.init import load_scense_runtime
|
||
from script_engine.init import load_script_engine
|
||
from kdb.init import load_kdb
|
||
from world_snapshot.init import load_world_snapshot
|
||
|
||
# ---- PBL 业务模块(M1~M15)----
|
||
from pbl_appcodes.init import load_pbl_appcodes
|
||
from pbl_blueprint.init import load_pbl_blueprint
|
||
from pbl_validation.init import load_pbl_validation
|
||
from pbl_compiler.init import load_pbl_compiler
|
||
from pbl_agent_runtime.init import load_pbl_agent_runtime
|
||
from pbl_evidence.init import load_pbl_evidence
|
||
from pbl_assessment.init import load_pbl_assessment
|
||
from pbl_kdb_ext.init import load_pbl_kdb_ext
|
||
from pbl_domain_ext.init import load_pbl_domain_ext
|
||
from pbl_scense_ext.init import load_pbl_scense_ext
|
||
from pbl_runtime_ext.init import load_pbl_runtime_ext
|
||
from pbl_template.init import load_pbl_template
|
||
from pbl_analytics.init import load_pbl_analytics
|
||
from pbl_governance.init import load_pbl_governance
|
||
|
||
# 主库名(可被环境变量覆盖,默认 pbls)
|
||
DBNAME = os.environ.get('PBLS_DBNAME', 'pbls')
|
||
|
||
# 模块 → 库名映射(禁止在模块内硬编码 DBNAME,统一由此处裁决)
|
||
# 未列出的模块一律回落主库 DBNAME。
|
||
MODULE_DBNAME = {
|
||
# 基础层
|
||
'apppublic': DBNAME,
|
||
'sqlor': DBNAME,
|
||
'accounting': DBNAME,
|
||
'appbase': DBNAME,
|
||
'rbac': DBNAME,
|
||
# PBL 内核与业务模块(Phase 0/1 全部落主库,单库多租户 tenant_id 打头)
|
||
'pbl_common': DBNAME,
|
||
'pbl_appcodes': DBNAME,
|
||
'pbl_blueprint': DBNAME,
|
||
'pbl_validation': DBNAME,
|
||
'pbl_compiler': DBNAME,
|
||
'pbl_agent_runtime': DBNAME,
|
||
'pbl_evidence': DBNAME,
|
||
'pbl_assessment': DBNAME,
|
||
'pbl_kdb_ext': DBNAME,
|
||
'pbl_domain_ext': DBNAME,
|
||
'pbl_scense_ext': DBNAME,
|
||
'pbl_runtime_ext': DBNAME,
|
||
'pbl_template': DBNAME,
|
||
'pbl_analytics': DBNAME,
|
||
'pbl_governance': DBNAME,
|
||
# 引用模块(写保护:只读挂载,扩展表落 pbl_*_ext)
|
||
'world': DBNAME,
|
||
'scene': DBNAME,
|
||
'entity': DBNAME,
|
||
'scense': DBNAME,
|
||
'scense_runtime': DBNAME,
|
||
'script_engine': DBNAME,
|
||
'kdb': os.environ.get('PBLS_KDB_DBNAME', DBNAME),
|
||
'world_snapshot': DBNAME,
|
||
}
|
||
|
||
|
||
def get_module_dbname(module_name):
|
||
"""模块 → 库名映射(挂到 ServerEnv,供各模块 ServerEnv().get_module_dbname(x) 调用)"""
|
||
return MODULE_DBNAME.get(module_name, DBNAME)
|
||
|
||
|
||
def init():
|
||
"""应用初始化:显式按 load_order 逐个挂载 23 个模块"""
|
||
env = ServerEnv()
|
||
# 注入库名裁决函数(必须先于任何 load_*,模块建表/取连接都依赖它)
|
||
env.get_module_dbname = get_module_dbname
|
||
env.app_name = 'pbls'
|
||
|
||
# ---- 基础层(ServerEnv() 之后、load_rbac 之前的固定次序)----
|
||
load_appbase(env)
|
||
load_rbac(env)
|
||
load_pybricks(env)
|
||
|
||
# ---- PBL 公共内核(其余 pbl_* 的依赖底座)----
|
||
load_pbl_common(env)
|
||
|
||
# ---- 引用模块(写保护,仅挂载复用)----
|
||
load_world(env)
|
||
load_scene(env)
|
||
load_entity(env)
|
||
load_scense(env)
|
||
load_scense_runtime(env)
|
||
load_script_engine(env)
|
||
load_kdb(env)
|
||
load_world_snapshot(env)
|
||
|
||
# ---- PBL 业务模块(枚举注入 → 蓝图 → 校验 → 编译 → Agent 运行时 → 证据 → 评估
|
||
# → 四个薄扩展 → 模板/分析/治理)----
|
||
load_pbl_appcodes(env)
|
||
load_pbl_blueprint(env)
|
||
load_pbl_validation(env)
|
||
load_pbl_compiler(env)
|
||
load_pbl_agent_runtime(env)
|
||
load_pbl_evidence(env)
|
||
load_pbl_assessment(env)
|
||
load_pbl_kdb_ext(env)
|
||
load_pbl_domain_ext(env)
|
||
load_pbl_scense_ext(env)
|
||
load_pbl_runtime_ext(env)
|
||
load_pbl_template(env)
|
||
load_pbl_analytics(env)
|
||
load_pbl_governance(env)
|
||
|
||
return env
|
||
|
||
|
||
if __name__ == '__main__':
|
||
sys.exit(0)
|
||
|
||
webapp(init)
|