Просмотр исходного кода

chore(config): 补齐 application-{dev,prod}.yml.example + 同步 openspec 进度

- 基座 application-prod.yml.example 加 mjava.auth 占位段
- 新增 mjava-pro/application-dev.yml.example(tenant.registry + mjava.auth=false + swagger=true)
- 新增 mjava-com/application-dev.yml.example(com.caller.registry + actions.enabled 注释样例)
- add-mjava-pro tasks 6.1/6.2 ✅;add-mjava-com tasks 6.2/7.1/7.2 ✅
- BACKLOG 标记 logback pattern 与 .example yml 两条剩项完成

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
malk 1 месяц назад
Родитель
Сommit
249e1e8119

+ 50 - 0
mjava-com/src/main/resources/application-dev.yml.example

@@ -0,0 +1,50 @@
+# mjava-com 开发环境模板
+# 复制为 application-dev.yml 后填入真实值;真实文件已被 .gitignore 排除
+
+server:
+  port: 9020
+  servlet:
+    context-path: /api/com
+
+spel:
+  scheduling: true       # CallerRegistryService @Scheduled 刷新
+  multiSource: false
+
+spring:
+  jpa:
+    hibernate:
+      ddl-auto: none
+    open-in-view: false
+
+# 入口宜搭凭据(mjava-com 自身用,访问"调用方权限表")
+aliwork:
+  appType: ${ALIWORK_APP_TYPE:}
+  systemToken: ${ALIWORK_SYSTEM_TOKEN:}
+
+# 钉钉应用凭据(vendor=dingtalk 的 action 调用走基座 DDClient)
+dingtalk:
+  agentId: ${DINGTALK_AGENT_ID:}
+  appKey: ${DINGTALK_APP_KEY:}
+  appSecret: ${DINGTALK_APP_SECRET:}
+  corpId: ${DINGTALK_CORP_ID:}
+
+# 调用方注册表(指向宜搭"调用方权限表")
+com:
+  caller:
+    registry:
+      formUuid: ${CALLER_REGISTRY_FORM_UUID:}
+      ttlSeconds: 300
+  actions:
+    # 全局白名单:非空时只开放列表内的 action;为空则不全局限制(仍受调用方 allowedActions 约束)
+    enabled:
+      # - dingtalk.user.get
+      # - aliwork.form.save
+
+# 基座 mjava.auth 默认关闭;mjava-com 自身的 CallerAuthInterceptor 已承担调用方鉴权
+mjava:
+  auth:
+    enabled: false
+
+# 开发期 Swagger
+swagger:
+  enable: true

+ 47 - 0
mjava-pro/src/main/resources/application-dev.yml.example

@@ -0,0 +1,47 @@
+# mjava-pro 开发环境模板
+# 复制为 application-dev.yml 后填入开发租户的真实值;真实文件已被 .gitignore 排除
+
+server:
+  port: 9010
+  servlet:
+    context-path: /api/pro
+
+spel:
+  scheduling: true       # TenantRegistryService @Scheduled 刷新
+  multiSource: false
+
+spring:
+  jpa:
+    hibernate:
+      ddl-auto: none
+    open-in-view: false
+
+# 入口宜搭凭据(mjava-pro 自身用,访问"租户应用表")
+aliwork:
+  appType: ${ALIWORK_APP_TYPE:}
+  systemToken: ${ALIWORK_SYSTEM_TOKEN:}
+
+# 钉钉应用凭据(取 accessToken 调用宜搭 OpenAPI)
+dingtalk:
+  agentId: ${DINGTALK_AGENT_ID:}
+  appKey: ${DINGTALK_APP_KEY:}
+  appSecret: ${DINGTALK_APP_SECRET:}
+  corpId: ${DINGTALK_CORP_ID:}
+
+# 租户注册表(指向宜搭"应用表")
+tenant:
+  registry:
+    formUuid: ${TENANT_REGISTRY_FORM_UUID:}
+    ttlSeconds: 600
+    failFast: false        # 开发环境允许启动期不阻塞,便于本地联调
+    # field 映射默认沿用 TenantRegistryProperties.FieldMap,如需覆盖在此追加
+
+# 基座请求鉴权(开发默认关闭;调试鉴权链时再开)
+mjava:
+  auth:
+    enabled: false
+    secret: ${AUTH_SECRET:}
+
+# 开发期 Swagger
+swagger:
+  enable: true

+ 9 - 0
mjava/src/main/resources/application-prod.yml.example

@@ -86,3 +86,12 @@ corp:
   engineers:
     - ${CORP_ENGINEER_1}
     - ${CORP_ENGINEER_2}
+
+# 基座请求鉴权 + 防重放(默认关闭;按客户子模块按需开启)
+# 启用条件:客户对外暴露 HTTP 接口且需 HMAC-SHA256 签名 + 时间窗 + Nonce 防重放
+mjava:
+  auth:
+    enabled: false
+    secret: ${AUTH_SECRET:}
+    window: 300              # 时间窗(秒),超出窗口的请求拒绝
+    nonce-cache-size: 10000  # 单实例 Nonce 缓存上限

+ 4 - 4
openspec/BACKLOG.md

@@ -1,6 +1,6 @@
 # mjava-ai 待办看板
 
-> 更新:2026-04-18
+> 更新:2026-04-26
 > 范围:跨 change 的待办池 + 每 change 内部进度汇总
 > 用途:按优先级顺序执行;完成一项立即更新对应 `tasks.md` 和本文件
 
@@ -87,9 +87,9 @@
 
 📋 剩余:
 - add-observability-foundation 2 项运行冒烟(java -jar 启动验证 actuator)
-- 各 change 的子模块 .example yml 扩展 mjava.auth 段
-- logback pattern 追加 %X{authKey:-} / %X{tenantId:-} / %X{callerId:-}
-- DingtalkActionRegistry / AliworkActionRegistry 首批 action 注册
+- 各 change 的子模块 .example yml 扩展 mjava.auth 段(2026-04-26)
+- logback pattern 追加 %X{authKey:-} / %X{tenantId:-} / %X{callerId:-}(2026-04-26)
+- DingtalkActionRegistry / AliworkActionRegistry 首批 action 注册(按需)
 - 覆盖度矩阵官方文档人工复核(yida/dingtalk)
 - 单元 / 集成测试
 ```

+ 3 - 3
openspec/changes/add-mjava-com/tasks.md

@@ -36,12 +36,12 @@
 ## 6. 审计日志
 
 - [x] 6.1 CallerAuthInterceptor 写 MDC `callerId` + 失败分支 log.warn(point logger)
-- [ ] 6.2 logback pattern 追加 `[%X{callerId:-}]`(延后)
+- [x] 6.2 logback pattern 追加 `[%X{callerId:-}]`(顺带补齐 `[%X{authKey:-}]` 与 `[%X{tenantId:-}]`)— 2026-04-26
 
 ## 7. 配置与文档
 
-- [ ] 7.1 `application-dev.yml.example`(com.caller.registry.* + com.actions.enabled 示例)
-- [ ] 7.2 `application-prod.yml.example`(同上占位)
+- [x] 7.1 `application-dev.yml.example`(com.caller.registry.* + com.actions.enabled 示例)— 2026-04-26
+- [x] 7.2 `application-prod.yml.example`(同上占位)— 2026-04-26 复核已存在
 - [ ] 7.3 `README.md`:外部系统对接步骤、signature 算法示例(Python / Node.js 样例代码)
 - [ ] 7.4 更新 `mjava-baseline.md` 表格里 mjava-com 状态为"已实施"
 

+ 2 - 2
openspec/changes/add-mjava-pro/tasks.md

@@ -37,8 +37,8 @@
 
 ## 6. 配置与文档
 
-- [ ] 6.1 `application-dev.yml.example`(含 tenant.registry.* 占位)
-- [ ] 6.2 `application-prod.yml.example`(含 tenant.registry.* 占位)
+- [x] 6.1 `application-dev.yml.example`(含 tenant.registry.* 占位)— 2026-04-26
+- [x] 6.2 `application-prod.yml.example`(含 tenant.registry.* 占位)— 2026-04-26 复核已存在
 - [ ] 6.3 `README.md`(在 mjava-pro 目录下,说明新增租户操作步骤)
 - [ ] 6.4 更新 `/Users/malk/Desktop/Tech/claude/后端/mjava-baseline.md` 表格里 mjava-pro 状态改为"已实施"