diff --git a/server/README.md b/server/README.md index 8a3c042..db2b471 100644 --- a/server/README.md +++ b/server/README.md @@ -1,18 +1,40 @@ # 中台引擎(L2 · :8088) -城轨智能中台四层架构中的 L2 中台层:Express API 服务,仅绑定 127.0.0.1。 +城轨智能中台四层架构中的 **L2 中台层**,Express API 服务,**仅绑定 127.0.0.1 本机回环**(`src/main.js:20`)。中台只解决"接入"与"安全",业务能力在各子系统内部实现——本目录不含任何业务子系统代码。 -- 入口:`src/main.js`(`app.listen(port, '127.0.0.1')`) -- 职责:请求验证与路由转发、审计(链式哈希)、JWT Ed25519 鉴权、RBAC、数据导入/导出、预计算 -- 协议:向上承接 L1 客户端(经 CORS 代理),向下经 MCP 路由对接 L3 子系统(:7777/:7778) -- 依赖 `packages/shared`(与本目录一同提供) +## 架构位置 + +``` +L1 AI 客户端(:8090) + ↓ +L2 中台引擎 = 本目录(:8088,仅 127.0.0.1) + ↓ MCP 路由 +L3 子系统 MCP Server(:7777 排班 / :7778 画像,见 scripts/mcp-server-sdk.js) + ↓ dispatcher +L4 业务工具层(子系统内部,2496 个既有业务函数,零侵入) +``` + +## 核心模块 + +| 模块 | 位置 | 说明 | +| --- | --- | --- | +| 服务入口 | `src/main.js` | 127.0.0.1 监听、路由装配 | +| JWT Ed25519 鉴权 | `src/auth/` | `signEdDsa`/`verifyEdDsa`(jwt-ed25519.js),密钥强制 ed25519(jwt-keys.js) | +| 审计·链式哈希 | `src/audit/` | 每条日志承接上一条 SHA-256,篡改任一条整链断裂(audit.js:45,58,90-94) | +| RBAC 权限 | `src/rbac/` | 角色权限缓存与校验 | +| 数据导入 | `src/import/` `src/upload/` | 月度材料/月考/人员名册导入;batch_uuid 防重、同月重复上传即覆盖(§5.1 幂等) | +| 预计算 | `src/precompute/` | 乘务指标预计算——AI 不算账,业务系统算好 | +| 导出 | `src/export/` | 报表导出工作队列 | +| 公共包 | `../packages/shared/` | 模块注册表、常量、备份表定义 | ## 运行 ```bash -cp .env.example .env # 按需修改 +cp .env.example .env # 按需修改(开发占位值,生产密钥走本地密钥目录) npm install -npm start +npm start # node src/main.js ``` -密钥说明:JWT Ed25519 密钥由 `scripts/generate-jwt-keys.js` 本地生成,存放于本地密钥目录,**不入库**。 +## 密钥说明 + +JWT Ed25519 密钥对由 `scripts/generate-jwt-keys.js` 在本地生成,存放于本地密钥目录(`keys/` 已被 .gitignore 排除,**任何情况下不入库**);PII 字段加密密钥(DATA_ENC_KEY / DATA_HMAC_KEY)同理,生产环境由密钥目录管理。