diff --git a/.workbuddy/memory/2026-08-12.md b/.workbuddy/memory/2026-08-12.md index 1c16158..a616021 100644 --- a/.workbuddy/memory/2026-08-12.md +++ b/.workbuddy/memory/2026-08-12.md @@ -2,6 +2,12 @@ ## 项目:bschclassmanage(原 classicalchinese 重构) +### 包重命名(17:18 左右) +- 根包由 `com.bestsch.bschclassmanage` 重命名为 `com.yunhai.bschclassmanage`(git mv 目录 + 255 文件 package/import 替换,共 1064 处)。 +- pom.xml 设 `com.yunhai` 对齐。 +- 注意:`bschclassmanage.iml` 中的 `com.bestsch:bsch-*` 是外部依赖坐标(bsch-sso / bsch-spring-boot-starter 等),**不能改**。 +- 环境无 maven(mvnw wrapper 缺 .mvn/wrapper 配置),无法本地编译验证;改用「package 声明 vs 目录路径」脚本校验,255 文件全部一致。 + ### 已修复的三类启动/路由问题 1. **CORS 启动失败**:Spring Boot 2.7.18 (Spring 5.3) 校验 `allowCredentials=true` 时 `allowedOrigins` 不能含 `*`。已将 23 个 Controller 的 `@CrossOrigin(origins={"*","*"}, allowCredentials="true")` 改为 `originPatterns={"*"}`。 2. **/api/* 与 /oapi/* 接口 404**:`Config.API_PATH="/api/"` 与 `Config.OAPI="/oapi/"` 常量尾部带斜杠,拼接 `API_PATH+"/subject/"` 产生 `/api//subject/`(双斜杠)。Spring Boot 2.7 默认 PathPatternParser 不折叠双斜杠导致匹配失败。已将常量尾斜杠去掉(`/api`、`/oapi`、`/mobiapi`)。`LoginUserController` 单独用 `Config.API_PATH` 无拼接故正常。 diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml index 000a180..7a9059a 100644 --- a/src/main/resources/bootstrap.yml +++ b/src/main/resources/bootstrap.yml @@ -1,27 +1,47 @@ spring: application: name: bschclassmanage + # 本地默认 local(不连 nacos);CI 注入 SPRING_PROFILES_ACTIVE=prod profiles: - active: dev + active: ${SPRING_PROFILES_ACTIVE:local} cloud: nacos: config: - # Nacos 配置中心地址;生产也可通过环境变量 NACOS_ADDR 覆盖 + # ⭐ 本地默认关闭 nacos(profile=local 时完全不连,无 403 噪音,纯走 application.yml) + # CI 注入 NACOS_CONFIG_ENABLED=true 才启用,拉 prod namespace 配置覆盖 application.yml + enabled: ${NACOS_CONFIG_ENABLED:false} + # Nacos 配置中心地址;CI 注入 NACOS_ADDR=nacos:8848(容器内网别名) server-addr: ${NACOS_ADDR:nacos.yunhaixingtong.com:8848} - # public 命名空间 - namespace: "" - # 应用自身配置所在分组 - group: NOTICE - # 配置文件格式;最终主配置 dataId = ${spring.application.name}.${file-extension},即 notice.yaml + # 默认指向 prod namespace UUID,避免本地误开时连到空的 dev 命名空间 + # CI 用 SPRING_CLOUD_NACOS_CONFIG_NAMESPACE 覆盖(注意:NACOS_NAMESPACE 这个 env 名不生效,必须用 SPRING_CLOUD_NACOS_CONFIG_NAMESPACE) + namespace: ${SPRING_CLOUD_NACOS_CONFIG_NAMESPACE:6196f0de-a28d-4894-8f10-e2982b57c6bc} + # 主配置 group:userbase.yaml 在 USERBASE group(与下方 shared-configs 的 DEFAULT_GROUP 不同组,各自指定) + group: SCHCLASSMANAGE + # 配置文件格式;最终主配置 dataId = ${spring.application.name}.${file-extension} = userbase.yaml file-extension: yaml encode: UTF-8 # nacos 不可达时不强制退出,回退到本地 application.yml 兜底 fail-fast: false - # 只读账号 - username: yh-reader - password: 123456 - # 共享公共配置:public 空间下的 common.properties + # 只读账号(仅读取配置权限);CI 注入 SPRING_CLOUD_NACOS_USERNAME/PASSWORD + # 注意:凭据必须用顶层 SPRING_CLOUD_NACOS_* env,放在 spring.cloud.nacos.config.* 下不生效(403) + username: ${SPRING_CLOUD_NACOS_USERNAME:yh-reader} + password: ${SPRING_CLOUD_NACOS_PASSWORD:123456} + + # ============================================================ + # ⭐⭐⭐ 共享配置加载顺序(决定优先级!:排在数组越靠后 = 优先级越高 = 覆盖前面的同 key) + # 低 1) public 命名空间 application-default.yaml(跨环境公共:日期格式/上传大小等,所有应用都能继承) + # 中 2) prod 命名空间 application-infra.yaml(仅生产:mysql/redis/rabbitmq 中间件连接) + # 高 3) prod 命名空间 userbase.yaml(应用级主配置:上传路径/context-path/CAS等,覆盖前两个) + # 最高 4) 启动命令 -D 参数 / 环境变量(覆盖一切) + # ============================================================ shared-configs: - - data-id: common.properties + # ① 1 号(最低优先级):public 命名空间(namespace="" 固定写空字符串)的 application-default.yaml + - data-id: application-default.yaml group: DEFAULT_GROUP + namespace: "" # ⭐ 固定 = "",强制指向 Nacos "public" 命名空间,不读上面的全局 prod namespace refresh: false + + # ② 2 号(中等优先级):prod 命名空间(不写 namespace = 继承顶部全局 prod namespace id)的 application-infra.yaml + - data-id: application-infra.yaml + group: DEFAULT_GROUP + refresh: false \ No newline at end of file