业务全部在独立模块仓库(foms / dbbackup / filesync / hostwatch), 本仓只做:入口组装、build、conf、start/stop、首页、RBAC 权限注册。 内容: · app/foms.py 入口,按序 load 全部模块 · app/global_func.py get_module_dbname(统一库 foms) · build.sh clone+安装全部模块、生成 DDL/CRUD、挂载 wwwroot · conf/config.json website.paths:foms 根路径 + 三模块前缀 · init/data.yaml 全部 codes(含拆分后新增的 codes) · scripts/load_path.py 重写为新 URL 布局 · wwwroot/index.ui 首页(指向各模块前缀路径) 从 foms 仓库迁出的应用层文件(app/build/conf/start/stop/index.ui/data.yaml/ init_rbac/load_path)在 foms 侧已删除。
foms_app — FOMS 纯伞(应用壳)
本仓库是 FOMS 的纯伞:只做组装与启动,不含任何业务逻辑。
业务全部在独立模块仓库,伞通过 build.sh 拉取、安装、软链、生成页面。
仓库职责边界
| 仓库 | 角色 | 内容 |
|---|---|---|
| foms_app(本仓) | 纯伞 | 入口 app/foms.py、build.sh、conf/、start/stop.sh、首页 wwwroot/index.ui、init/data.yaml |
| foms | 业务模块(核心) | 主备切换编排(六步状态机+防脑裂)、集群/节点/心跳/远程命令、Agent |
| dbbackup | 业务模块 | 数据库备份 + 日志同步(binlog 复制) |
| filesync | 业务模块 | 运行文件同步(rsync) |
| hostwatch | 业务模块 | 日志监控 + 日志分析 + 主机指标 |
构建
./build.sh
build.sh 做的事(全部是组装,无业务):
- 建 venv
- clone + 安装基础包(apppublic/sqlor/ahserver/bricks-for-python/xls2ddl)
- 构建 bricks 前端,软链到 ./bricks
- clone + 安装鉴权模块(appbase/rbac)
- clone + 安装全部业务模块(foms/dbbackup/filesync/hostwatch)+ 各生成 DDL
- xls2ui 从各模块
json/生成 CRUD 页面到各模块wwwroot/ - 把各模块
wwwroot/软链到主wwwroot/<模块名>(URL 前缀隔离:/foms/、/dbbackup/…) - 建运行时目录
运行
cp .env.example .env # 填 MYSQL_ROOT_PASSWORD / FOMS_AGENT_TOKEN / FOMS_PORT
./start.sh # 监听 FOMS_PORT(默认 9080)
./stop.sh
数据库
所有模块共享一个库 foms(get_module_dbname() 固定返回 'foms')。
建库:依次执行各模块 models/mysql.ddl.sql(build 后生成)。
加载顺序(app/foms.py)
set_globalvariable → load_pybricks → load_appbase → load_rbac
→ load_foms(核心,注册切换编排器+健康判定器)
→ load_dbbackup → load_filesync → load_hostwatch
Description