# ========== 本地开发环境配置 ========== # ⚠️ 禁止在此文件中提交真实生产密码。生产环境通过环境变量/配置中心注入。 spring: # ========== 数据源(Druid + MySQL 8)========== # 停车六库已合并为单库 parking_cloud(表前缀 sys_/park_/pay_/order_/bill_/charge_ 区分) datasource: druid: url: jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_NAME:parking_cloud}?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true username: ${DB_USERNAME:root} password: ${DB_PASSWORD:} driver-class-name: com.mysql.cj.jdbc.Driver # 连接池配置 initial-size: 5 min-idle: 5 max-active: 20 max-wait: 60000 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 validation-query: SELECT 1 test-while-idle: true test-on-borrow: false test-on-return: false pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 filters: stat,wall # 监控页面:本地开启,生产关闭 stat-view-servlet: enabled: true url-pattern: /druid/* login-username: ${DRUID_USERNAME:admin} login-password: ${DRUID_PASSWORD:admin} reset-enable: false web-stat-filter: enabled: true url-pattern: /* exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*' # ========== Redis ========== redis: host: ${REDIS_HOST:127.0.0.1} port: ${REDIS_PORT:6379} database: ${REDIS_DATABASE:0} # ⚠️ 本地 Redis 无密码,这里必须【整行注释】而不是写成 `${REDIS_PASSWORD:}`: # 后者解析成空字符串 ""(非 null),Redisson 会因此发送 AUTH "", # Redis 返回 "ERR AUTH called without any password configured",启动直接失败。 # password: ${REDIS_PASSWORD} timeout: 5000ms lettuce: pool: max-active: 8 max-idle: 8 min-idle: 0 max-wait: 3000ms # ========== 刷新缓存共享密钥(仅本地/测试)========== # 老门户 `RefreshCacheController` 的 4 条 `@NoAuth` 端点自带一串写死的 32 位共享密钥; # 迁移时按 AGENTS.md「批 6 第三十四切片」④ 的 (B) 方案改成**配置化**(代码里零密钥,红线 11)。 # ⚠️ 这里是**本地测试值**,不是任何环境的真实密钥;生产**不配**即 fail-closed # (任何请求都回 "token不正确"),部署时用 `PARKING_REFRESH_CACHE_TOKEN` 或 # `--parking.refresh-cache.token=...` 配成现网原串即可让老前端/运维脚本零改造。 # ⚠️ 冒烟脚本 `tools/api_smoke.py` 用的是同一个值;改这里必须同步改那边。 parking: refresh-cache: token: ${REFRESH_CACHE_TOKEN:local-refresh-cache-test-token} # ========== 老新组织 id 换算表(仅本地/测试)========== # 新 `system_org` 只有 1 行 id=1,而存量业务表存的是老 `sys_org.id`(本机镜像里 # 10003 有 498 条 `td_b_api_log`、92 个区块;10007 有 2 条日志)。不配这项时 # `LoginUserBridge` 恒等映射(= 与改造前完全一致,存量接口按 org 过滤会查空)。 # ⚠️ 这里是**本地镜像的测试映射**,不是生产口径;生产用 `LEGACY_ORG_ID_MAPPING` # 或 `--parking.legacy.org-id-mapping=...` 按实际上线数据配置,格式 `新id:老id,...`。 # ========== 老新操作员 id 换算表(仅本地/测试)========== # 新 `system_users` 只有 admin(id=1),本机 `sys_op` 是空表,没有真实老 id 可对。 # 这里给一个**本地测试值**,只为验证换算链路真的生效(opId 会写进审计列); # 它不是生产口径,生产必须按真实 `sys_op` 数据用 `LEGACY_OP_ID_MAPPING` 配置。 legacy: org-id-mapping: ${LEGACY_ORG_ID_MAPPING:1:10003} op-id-mapping: ${LEGACY_OP_ID_MAPPING:1:10001} # ========== 日志级别 ========== logging: level: root: info com.zteits.parking: debug # 打开后可以看到 SQL 语句 com.zteits.parking.framework.mybatis: debug org.springframework.security: info