评估版本: QuickBlue v4.0.0 (PostgreSQL 版) 评估对象:
QuickBlue-MicroAI-pg(后端 27 个 Maven 模块)+QuickBlue-MicroAI-webpg(前端) 评估工具: 全量代码仓库扫描 + 静态分析 + 配置审计 评估日期: 2026-10-01 评估维度: 服务独立性、耦合度、数据隔离、扩展性、可维护性、技术栈先进性 评估角色: 专家团架构师(含架构设计师、安全专家、DBA、DevOps 专家、前端架构师) 基准环境(本项目根 pom 实测): Spring Boot 4.1.1 · Spring Cloud 2025.1.3 · Spring Cloud Alibaba 2025.1.0.0 · PostgreSQL 18 · JDK 21 历史版本总结: 见QuickBlue微服务架构评估报告_v3.0.md
x┌─────────────────────────────────────────────────────────────────────┐│ 前端层 (Vue 3 + Ant Design Vue 4) ││ QuickBlue-MicroAI-webpg ││ 238 个 .vue + 162 个 ts/js | views 按域组织(support/system/ai)│└───────────────────────────┬─────────────────────────────────────────┘│ HTTP / SSE┌───────────────────────────▼─────────────────────────────────────────┐│ API 网关层 (Spring Cloud Gateway + WebFlux) ││ QuickBlue-gateway :8080 ││ ┌─────────────┬──────────────┬──────────────┬──────────────┐ ││ │ 鉴权过滤器 │ 全局日志 │ 跨域配置 │ Sentinel 限流 │ ││ │ Sa-Token │ 请求/响应 │ 环境变量注入 │ + 规则持久化 │ ││ │ + Redis │ + 慢请求 │ │ │ ││ └─────────────┴──────────────┴──────────────┴──────────────┘ │└──┬───────────┬──────────────┬──────────────┬───────────────┬────────┘│ │ │ │ │▼ ▼ ▼ ▼ ▼┌──────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐│System│ │ Business │ │ Support │ │ AI │ │ Report ││:8086 │ │ :8082 │ │ :8083 │ │ :8084 │ │ :8085 ││认证/ │ │ 通知/ │ │ 文件/字典│ │ 智能体/ │ │ 报表引擎 ││组织/ │ │ 地区 │ │ 任务/模板│ │ RAG/合规 │ │ BI ││权限 │ │ │ │ 代码生成 │ │ /安全 │ │ │└──┬───┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘│ │ │ │ ││ ┌──────┴──────────────┴──────────────┴──────────────┘│ │ 统一主键策略:雪花算法 (BIGINT + ASSIGN_ID)│ │ SnowflakeIdentifierGenerator (common-database)│ └──────┬──────────────┬──────────────┬──────────────┐▼ ▼ ▼ ▼ ▼┌──────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐│ DB │ │ DB │ │ DB │ │ DB+Vector│ │ DB ││system│ │ business │ │ support │ │ ai │ │ report ││ 21表 │ │ 7表 │ │ 33表 │ │ 23表+pgv │ │ 5表 │└──────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘↕ 服务间调用QuickBlue-api-* 契约层 (Spring 原生 @HttpExchange + RestClient+ LoadBalancer + Resilience4j 熔断)┌─────────────────────────────────────────────────────────────────────┐│ 公共层: QuickBlue-common-*(8) │ QuickBlue-starter-*(2) │ QuickBlue-api-*(5) ││ 基础设施: Nacos 3.2.1 | Redis/Redisson 4.7.0 | Sentinel | SBA 4.1.2 ││ Micrometer Tracing + Zipkin (默认关闭) │ pgvector │└─────────────────────────────────────────────────────────────────────┘⚠️ 已知偏离:business 的 NoticeMapper.xml L79/L128 存在跨库 SQL(SELECT ... FROM QuickBlue_system.t_employee),绕过 api-system 契约
| 层级 | 模块 | main | test | 职责 | 主键策略 | 评分 |
|---|---|---|---|---|---|---|
| 网关层 | QuickBlue-gateway | 31 | 0 | 统一入口、路由、鉴权、限流、跨域 | N/A | ⭐⭐⭐⭐ |
| 业务服务层 | QuickBlue-system | 181 | 0 | 用户/角色/部门/菜单/权限/登录/数据权限 | 雪花算法 | ⭐⭐⭐⭐ |
| QuickBlue-support | 308 | 1 | 文件/字典/配置/任务/帮助文档/代码生成/编号规则 | 雪花算法 | ⭐⭐⭐ | |
| QuickBlue-business | 47 | 1 | 通知公告、地区数据 | 雪花算法 | ⭐⭐⭐ | |
| QuickBlue-ai | 224 | 9 | AI 对话/RAG/智能体/流程/评审/合规网关/内容安全 | 雪花算法 | ⭐⭐⭐⭐⭐ | |
| QuickBlue-report | 84 | 0 | 报表引擎、BI、数据源管理 | 雪花算法 | ⭐⭐⭐⭐ | |
| 监控层 | QuickBlue-admin | 3 | 0 | 服务健康监控 (Spring Boot Admin) | N/A | ⭐⭐⭐⭐ |
| 公共层 | QuickBlue-common-* (8 个) | 131 | 2 | 核心工具/DB/Redis/安全/Web/Swagger/日志/Excel | N/A | ⭐⭐⭐⭐ |
| 能力层 | QuickBlue-starter-* (2 个) | 11 | 1 | 上下文传播、数据权限(SPI + fail-closed) | N/A | ⭐⭐⭐⭐ |
| 契约层 | QuickBlue-api-* (5 个) | 61 | 0 | 服务间契约与 DTO(@HttpExchange) | N/A | ⭐⭐⭐⭐ |
| 前端层 | QuickBlue-MicroAI-webpg | ~400 | — | 管理后台 SPA(238 vue + 162 ts) | N/A | ⭐⭐⭐⭐ |
| 总计 | 27 个 Maven 模块 | 1081 | 14 | — | — | — |
| 技术 | 版本 | 评估 |
|---|---|---|
| Java | 21 (LTS) | ✅ 最新 LTS |
| Spring Boot | 4.1.1 | ✅ 最新系列(含 Spring Framework 7) |
| Spring Cloud | 2025.1.3 | ✅ 最新代 |
| Spring Cloud Alibaba | 2025.1.0.0 | ✅ 最新代 |
| Nacos Client | 3.2.1 | ✅ 最新代 |
| PostgreSQL | 18(+ pgvector) | ✅ 最新 |
| MyBatis-Plus | 3.5.17(-spring-boot4 变体) | ✅ 适配 Boot 4 |
| Druid | 1.2.28(druid-spring-boot-4-starter) | ✅ 适配 Boot 4 |
| Sa-Token | 1.46.0(sa-token-spring-boot4-starter) | ✅ 适配 Boot 4 |
| Redisson | 4.7.0 | ✅ 最新代 |
| Resilience4j | 2.4.0 | ✅ 最新 |
| RocketMQ Starter | 2.3.6 | ✅ 良好 |
| Knife4j / SpringDoc | 5.4.0 / 3.1.0 | ✅ 最新 |
| Spring Boot Admin | 4.1.2 | ✅ 适配 Boot 4 |
| Micrometer Tracing + Brave + Zipkin | Boot 配套 | ✅ 集成(⚠️ 默认关闭) |
| Hutool / Fastjson2 / Guava / BouncyCastle | 5.8.39 / 2.0.58 / 33.4.8-jre / 1.80 | ✅ 最新 |
| EasyExcel / POI | 4.0.3 / 5.4.1 | ✅ 最新 |
| 内部调用 | Spring 原生 @HttpExchange + RestClient | ✅ 未引入 OpenFeign |
| 前端 | Vue 3 + Ant Design Vue 4 | ✅ 最新 |
| 分布式事务 | Seata(声明存在) | ➖ 未启用(全仓 0 处使用) |
评分: 8.0 / 10 ⭐⭐⭐⭐
| 特性 | 分析 |
|---|---|
| 独立进程 | 五个业务服务独立 Spring Boot 应用,独立端口(8082/8083/8084/8085/8086)+ 网关 8080 + 监控 9090 |
| 独立数据库 | 五服务各自独立 PostgreSQL 数据库,JDBC 配置零例外只连自己的库 |
| 零跨模块直连 | 全量 import 扫描:五个业务模块互相零直接依赖,全部经 api-* 契约 |
| 契约对齐 | api-* 与 modules-* 5 : 5 完全对齐,契约层被真实使用 |
| 独立 ID 生成 | 雪花算法统一主键 + SnowflakeIdentifierGenerator(支持环境变量配置 workerId/datacenterId) |
| 独立配置 | 每个服务在 Nacos 有独立配置,共享配置 6 份(postgresql/redis/sa-token/common/level3-protect 等) |
| 风险项 | 详情 | 严重度 | 实测依据 |
|---|---|---|---|
| 跨库 SQL 绕过契约 | business 的 NoticeMapper.xml L79/L128 直接 FROM QuickBlue_system.t_employee | 🔴 高 | 全量 SQL 扫描命中;t_employee 经 psql 确认存在于 system 库 |
| 代码生成器知晓全部库 | CodeGeneratorMultiDbConfig.java L55-59 列出 system/business/report/ai 四个库名 | 🟡 中 | 源码扫描 |
| 共用数据库账号 | 五个库共用同一 PostgreSQL 账号 | 🟡 中 | JDBC 配置实测 |
| 版本强绑定 | 所有模块统一 4.0.0,无法单服务独立发版 | 🟡 中 | 根 pom <QuickBlue.version> |
整改跨库 SQL:改经 api-system 调用;确实高频时在 system 侧提供专用接口
代码生成器库清单配置化:从 Nacos 读取,避免硬编码
生产环境按服务独立建库账号:限制最小权限,杜绝跨库操作
评分: 7.5 / 10 ⭐⭐⭐⭐
xxxxxxxxxx┌──────────────┐┌──────────▶│ api-system │◀── system 自身实现│ │ 13 契约文件 ││ └──────────────┘│┌─────┴─────┬──────────────┬──────────────┐│ │ │ │┌──────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐│system│ │ business │ │ support │ │ ai │ │ report │└──┬───┘ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────┬─────┘│ │ │ │ ││ import 计数(api-* 契约) │ ││ system → api×9 │ ││ business→ api×14 │ ││ support → api×5 │ ││ ai → api×0 │ ││ report → api×2 │ ││ │ │ │ │└───────────┴──────────────┴──────────────┴──────────────┘⚠️ 例外:business 经 SQL 直连 system 库(见 2.1.2)common 模块依赖层次(L0 → L3):L0: common-core ◀────────── 所有模块的基础(抽象层)L1: common-web ← 依赖 core common-redis ← 仅依赖 corecommon-swagger / common-excel ← 依赖 coreL2: common-database ← core + web common-log ← core + webL3: common-security ← core + redis
| 评估项 | 状态 | 分析 | 实测依据 |
|---|---|---|---|
| API 层设计 | ✅ 优秀 | 独立 api-* 模块定义契约与 DTO,接口与实现解耦,5:5 对齐 | import 矩阵 |
| 通信协议 | ✅ 优秀 | Spring 原生 @HttpExchange + RestClient + LoadBalancer,未引入 OpenFeign | 全仓扫描无 OpenFeign |
| 降级容错 | ✅ 良好 | Resilience4j 2.4.0 按目标服务聚合熔断 | 根 pom + 用量扫描 |
| 循环依赖 | ✅ 无 | 模块间零直接实现依赖,不存在循环 | import 矩阵 |
| 公共层边界 | ✅ 优秀 | 有可执行门禁:R1 引擎自包含 / R2 starter·common 不得依赖业务 / R3 不得含行业语义 | arch-check.ps1 扫描 1235 文件全 PASS |
| 数据耦合 | 🔴 严重 | business 跨库直查 system 表,形成隐式耦合(编译期无感、运行期报错) | NoticeMapper.xml L79/L128 |
| 版本源集中度 | 🟡 不足 | 根 pom 未固定 flyway/sentinel/seata/pgvector/liteflow 等版本 | 根 pom <properties> 实测 |
| 装配机制一致性 | 🟡 不足 | common-* 靠组件扫描(隐含约定),starter-* 靠 AutoConfiguration(显式),两套并存 | 源码 + META-INF/spring 实测 |
公共层依赖层次清晰(L0→L3 四级),且边界已被"可执行门禁"固化 —— 这是本框架最有价值的工程资产。
但 business 的跨库 SQL 破坏了这套架构唯一的强制承诺:它绕过 api-system 契约,使两个服务的库表结构无法独立演进。
评分: 6.0 / 10 ⭐⭐⭐
| 服务 | 数据库 | 表数 | 特殊扩展 | Flyway 记录 | 建表方式 |
|---|---|---|---|---|---|
| system | quickblue_system | 21 | 无 | 1(仅 baseline) | 手工脚本 |
| business | quickblue_business | 7 | 无 | 1(仅 baseline) | 手工脚本 |
| support | quickblue_support | 33 | 无 | 1(仅 baseline) | 手工脚本 |
| ai | quickblue_ai | 23 | pgvector | 3 | Flyway(10 个脚本) |
| report | quickblue_report | 5 | 无 | 2 | Flyway(2 个脚本) |
| 合计 | 5 个独立库 | 89 | — | — | — |
| 评估项 | 状态 | 分析 | 实测依据 |
|---|---|---|---|
| 物理隔离 | ✅ 优秀 | 五个服务各自独立数据库,JDBC 零例外只连自己的库 | nacos 配置实测 |
| 连接池隔离 | ✅ 良好 | 每服务独立 Druid 连接池 | 配置实测 |
| 数据权限 | ✅ 优秀 | QuickBlue-starter-datascope:平台定 DataScopeProvider SPI + 业务各自实现 + DenyAll fail-closed 兜底;三态语义(ALL/IDS/DENY)区分"解析不出"与"不需过滤" | starter 源码 + 门禁扫描 |
| 主键策略 | ✅ 统一 | 全模块雪花算法(BIGINT + ASSIGN_ID) | 源码扫描 |
| 向量存储 | ✅ 创新 | AI 服务用 PostgreSQL pgvector 实现向量存储,减少运维组件 | 依赖 + 表结构 |
| 跨库直连 | 🔴 严重 | business 在 SQL 中直查 QuickBlue_system.t_employee | NoticeMapper.xml L79/L128 |
| 迁移机制统一性 | 🟠 不足 | 三库仅 1 条 baseline(表实为手工脚本所建),ai 有 10 个脚本却只记录 3 条 → 两套机制并存 | flyway_schema_history 实查 |
| 租户列完整性 | 🟡 不足 | t_serial_number_record.tenant_id NOT NULL DEFAULT 0,实体无该字段 → 写入恒为 0 | DDL + 实体比对 |
| 账号隔离 | ⚠️ 不足 | 五个库共用同一 PostgreSQL 账号 | JDBC 配置 |
整改跨库 SQL(P0):改经 api-system;这是恢复"每服务一库"承诺的唯一方式
统一迁移机制(P1):Flyway 与手工脚本二选一并对齐;清除三个空的 db/migration 目录
生产环境每库独立账号:限制最小权限,从机制上杜绝跨库操作
补齐租户列:为不含租户的表补 tenant_id 并纳入隔离
评分: 7.5 / 10 ⭐⭐⭐⭐
| 维度 | 状态 | 分析 |
|---|---|---|
| 服务发现 | ✅ 优秀 | Nacos 3.2.1 注册中心,实例自动注册/下线 |
| 负载均衡 | ✅ 良好 | Spring Cloud LoadBalancer 客户端负载均衡 |
| 无状态设计 | ✅ 优秀 | Sa-Token 会话经 Redis 共享,服务本身无状态 |
| ID 分布式友好 | ✅ 良好 | 自定义 SnowflakeIdentifierGenerator,越界/非法值启动即失败(不再静默取模) |
| 连接池弹性 | ✅ 良好 | Druid 合理弹性参数 |
| 扩展点 | 现有实现 | 形态 | 成熟度 |
|---|---|---|---|
| 数据权限 | DataScopeProvider SPI + DataScopeInterceptor | Starter + SPI + fail-closed 兜底 | 🟢 范本 |
| 模型供应商 | ChatModelFactory + ChatModelFactoryManager | 策略模式(6 供应商) | 🟢 |
| 合规护栏 | ComplianceChatModel / …StreamingChatModel / …EmbeddingModel / …AgentScopeModel | 模型层装饰器(4 个) | 🟢 |
| 内容安全 | ContentSafetyProvider SPI + LocalKeywordSafetyProvider / AbstractHttpSafetyProvider | SPI + 适配器 | 🟢 |
| 智能体模型 | 继承 AgentScope ChatModelBase 实现 doStream | 官方扩展点 | 🟢 |
| 工具调用 | ToolRegistry + airag_tool 表 | 注册表 | 🟢 |
| 报表引擎 | report.engine + DatasourceConfigResolver SPI | 能力自包含(R1 门禁守护) | 🟢 |
| 上下文传播 | QuickBlue-starter-context + ContextContributor SPI | Starter + SPI | 🟢 |
| 组件 | 状态 | 分析 |
|---|---|---|
| RPC 熔断 | ✅ 已用 | Resilience4j 2.4.0(按目标服务聚合) |
| Web 限流 | ✅ 已用 | Sentinel + 网关路由级限流 + 规则持久化 |
| 消息队列 | ✅ 已接入 | RocketMQ 2.3.6 |
| 分布式事务 | ➖ 声明未用 | Seata 在 BOM 中,全仓 io.seata / @GlobalTransactional 0 处 |
| 链路追踪 | 🟡 集成但默认关闭 | Micrometer Tracing + Zipkin |
| Starter 群 | 🟠 未成型 | 实际仅 context / datascope 两个 |
| 待上提能力 | 🟠 被锁在业务模块 | 编号规则引擎在 QuickBlue-support(且当前调用必失败:库中规则 ID 与枚举 ID 不匹配) |
| 发布/版本化 | 🟠 缺失 | 未见 BOM 与私服发布机制 |
评分: 5.5 / 10 ⭐⭐
| 维度 | 状态 | 分析 | 实测依据 |
|---|---|---|---|
| 分层架构 | ✅ 良好 | Controller → Service → Manager → DAO,分层清晰 | 源码扫描 |
| 包结构 | 🟡 部分不一致 | 多数模块为 com.budaos.{模块}.{功能}.{层级};个别模块 18 个包平铺,缺少域/基建分界 | 包清单实测 |
| 统一异常/响应 | ✅ 良好 | common-core 提供统一异常体系与响应格式 | 源码 |
| AOP 横切 | ✅ 优秀 | 操作日志、防重复提交、数据权限均通过切面统一处理 | 源码 |
| 架构门禁 | ✅ 优秀 | 4 条规则可执行,扫描 1235 个文件,非零退出即失败 | arch-check.ps1 |
| 单元测试 | 🔴 严重不足 | 14 个测试类 / 1081 个 main 文件 = 1.3% | 逐模块计数 |
| 空目录 | 🟠 不足 | 12 个空目录(含 system/plugin、META-INF/spring 等未完成意图) | 文件系统实测 |
| 源文件编码 | 🟠 不足 | 部分业务类中文注释乱码 | 实测 |
| 模块 | main | test | 说明 |
|---|---|---|---|
| ai | 224 | 9 | 唯一体系化测试(63 个用例:合规/内容安全/装饰器) |
| common-database | 14 | 2 | 雪花 ID 配置姿态测试 |
| support | 308 | 1 | 编号规则 |
| business | 47 | 1 | — |
| starter-datascope | 6 | 1 | 装配守卫 |
| system / report / gateway / admin | 299 | 0 | 🔴 |
| common-core/web/security/redis/log/excel/swagger | 117 | 0 | 🔴 |
| api-*(5 个) | 61 | 0 | 🔴 |
| 维度 | 状态 | 分析 |
|---|---|---|
| 配置分层 | ✅ 优秀 | 本地 yaml → Nacos 共享配置(6 份)→ 服务私有配置 |
| 环境区分 | ✅ 良好 | 多 profile(默认 dev),.env 区分 5 套环境 |
| 敏感信息 | 🔴 严重 | application-dev.yaml 含明文口令(Ai@2026 / budaos),且 SPRING_PROFILES_ACTIVE 默认值 = dev;redis 存在弱默认值 ${REDIS_PASSWORD:budaos} |
| 密钥管理 | ⚠️ 部分 | 已具备环境变量注入机制(${DB_PASSWORD}),但 dev 文件未落实 |
| 维度 | 状态 | 分析 |
|---|---|---|
| 模型合规网关 | ✅ 强制项已实现 | 按 baseUrl 真实域名判定区域;白名单外一律不可用;四条链路装饰器(含向量化) |
| 内容安全网关 | ✅ 强制项已实现 | 输入输出双向 + 流式分段缓冲;证据表(默认不存原文,仅长度 + 不可逆摘要 + 规则版本指纹) |
| 留痕纪律 | ✅ 优秀 | 日志/异常/证据表三处统一"绝不记原文",只记长度与规则标签 |
| 三级等保 | ✅ 优秀 | 双因子认证、密码复杂度、定期改密、登录锁定、文件检测 |
| 密码加密 | ✅ 优秀 | Argon2id + 自定义盐值 |
| 国密支持 | ✅ 良好 | SM4 + BouncyCastle 1.80 |
| SQL 注入防护 | ✅ 良好 | Druid WallFilter 启用 |
| XSS 防护 | ✅ 良好 | 后端 XssFilterConfig + 前端框架 |
| CSRF | ⚠️ 需确认 | 相关配置需专项复核 |
| 维度 | 状态 | 分析 |
|---|---|---|
| 服务监控 | ✅ 良好 | Spring Boot Admin 4.1.2 |
| 健康检查 | ✅ 良好 | Actuator 端点 |
| 请求日志 | ✅ 良好 | 网关全局日志 + 慢请求 |
| 链路追踪 | 🟡 集成未启用 | Micrometer Tracing + Zipkin,默认关闭 |
| SQL 监控 | ✅ 良好 | P6Spy 3.9.1 + MyBatis-Plus 日志 |
| 指标采集 | 🟠 不足 | Prometheus / Grafana 未接入 |
| 告警 | 🔴 缺失 | 无配置化告警规则 |
评分: 9.0 / 10 ⭐⭐⭐⭐⭐
| 选型 | 评价 | 分析 |
|---|---|---|
| Java 21 (LTS) | ✅ 优秀 | 虚拟线程等特性可用 |
| Spring Boot 4.1.1 + Spring Framework 7 | ✅ 极度前沿 | 已跨过 Boot 3→4 大版本,全栈适配(MyBatis-Plus/Druid/Sa-Token/Knife4j 均为 boot4 变体) |
原生 @HttpExchange 替代 OpenFeign | ✅ 务实 | 少一层依赖,服务间契约用 Spring 原生能力 |
| PostgreSQL 18 + pgvector | ✅ 正确 | 一体化方案:关系型 + 向量检索,减少运维组件 |
| Sa-Token 替代 Spring Security | ✅ 务实 | 轻量、API 简洁 |
| Redisson 4.7.0 分布式锁 | ✅ 良好 | 与 Redis 生态一致 |
| AgentScope 2.0.2 + LangChain4j | ✅ 前瞻 | 智能体开发框架,模型层具备官方扩展点 |
| Argon2id 密码哈希 | ✅ 最安全 | 抗 GPU 攻击 |
| Resilience4j + Sentinel 双机制 | ✅ 分层清晰 | RPC 熔断 + Web 限流 |
| 风险项 | 分析 | 严重度 |
|---|---|---|
| Seata 未使用 | 声明"支持 AT/TCC/Saga"但全仓 0 处使用,对外陈述易被高估 | 🟡 中 |
| 可观测默认关闭 | 能力具备但未常态化启用 | 🟡 中 |
| 版本源不集中 | 部分第三方依赖版本未在根 pom 固定 | 🟡 中 |
| Seata/Sentinel 等由 BOM 管理 | 升级时缺乏全局视图 | 🟢 低 |
xxxxxxxxxx技术栈先进性9.0│┌─────────┼─────────┐│ │ │可维护性 5.5 ──────────┼───────── 6.0 数据隔离│ │ ││ │ │└─────────┼─────────┘│耦合度 7.5 ─────────┼───────── 7.5 扩展性│服务独立性8.0综合:加权 7.13 / 10 (均权 7.25 / 10)
| 评估维度 | 得分 | 权重 | 加权分 | 说明 |
|---|---|---|---|---|
| 服务独立性 | 8.0 | 20% | 1.60 | 零跨模块直连;被 1 处跨库 SQL 拉低 |
| 耦合度 | 7.5 | 20% | 1.50 | 契约层生效 + 门禁守卫;扣分于跨库 SQL 与版本源 |
| 数据隔离 | 6.0 | 15% | 0.90 | 库级隔离正确;被跨库 SQL 击穿 + 三库无真实迁移 |
| 扩展性 | 7.5 | 15% | 1.13 | Starter + SPI 成型;扣分于死依赖与能力未上提 |
| 可维护性 | 5.5 | 20% | 1.10 | 门禁优秀;测试 1.3%、无 CI、空目录与编码损坏并存 |
| 技术栈先进性 | 9.0 | 10% | 0.90 | Boot 4.1.1 + Cloud 2025.1.3 + Java 21 |
| 综合得分 | — | 100% | 7.13 / 10(71.3 / 100) | — |
口径说明(重要): ① 上表采用加权口径(与历史报告 v6.0/v9.0 一致:服务独立性 20% / 耦合度 20% / 数据隔离 15% / 扩展性 15% / 可维护性 20% / 技术栈 10%)。 ② 若采用六维度均权口径,综合得分为 7.25 / 10(72.5 / 100)。 ③ 两种口径差异仅 1.2 分,源于可维护性权重不同 —— 本文档显式给出权重与两种结果,避免"一个分数、多种算法"。
当前等级: L4 — 可管理级(部分达成)
| 等级 | 名称 | 要求 | 当前状态 |
|---|---|---|---|
| L1 | 初始级 | 能运行 | ✅ 已达成 |
| L2 | 基础级 | 服务拆分、独立部署 | ✅ 已达成 |
| L3 | 规范级 | 配置中心、网关、鉴权、监控 | ✅ 已达成 |
| L4 | 可管理级 | 完整熔断降级、链路追踪、分布式事务 | ⚠️ 部分达成 |
| L5 | 优化级 | 自动弹性伸缩、混沌工程、全量灰度 | ❌ 未达成 |
维持 L4 的判断依据
✅ 契约与边界已固化:模块间零直接依赖(实测 import 矩阵)+ 4 条架构门禁可执行(扫描 1235 文件)
✅ RPC 熔断与 Web 限流双机制在用:Resilience4j 2.4.0 + Sentinel
✅ 合规与安全双护栏成型:模型合规(按端点域名判定,覆盖含向量化的四条链路)+ 内容安全(双向 + 流式分段缓冲 + 证据表)
✅ 数据权限 fail-closed:未接 SPI 即全拒绝,且在框架层而非业务层实现
⚠️ 链路追踪集成但默认关闭
⚠️ 分布式事务未落地:Seata 声明未用
🔴 跨库 SQL 击穿数据隔离
🔴 测试覆盖率 1.3%,CI 缺失
🔴 明文凭据入库且默认 profile 为 dev
晋升 L5 的前置条件:① 接入 CI 让门禁成为强制关卡;② 整改跨库 SQL 与凭据;③ 测试覆盖率提升至 30%+;④ 可观测常态化(追踪默认开启 + 告警)。
| # | 改进项 | 影响 | 工作量 | 优先级 |
|---|---|---|---|---|
| 1 | 接入 CI — arch-check.ps1 + mvn test 串成流水线(门禁已具备"非零退出即失败"形态,只差挂载点) | 终结"边界靠记忆",是其余改进的守门人 | 0.5d | 🔴 极高 |
| 2 | 整改跨库 SQL — business NoticeMapper.xml L79/L128 改经 api-system 调用 | 恢复"每服务一库"的唯一强制承诺 | 0.5d | 🔴 极高 |
| 3 | 轮换明文凭据 — dev 文件口令视为已泄露需轮换;改为占位符;默认 profile 去敏感值 | 安全合规 | 0.5d | 🔴 高 |
| 4 | 统一数据库迁移机制 — Flyway 与手工脚本二选一;清除三个空 db/migration | 消除只在启动时暴露的冲突隐患 | 1d | 🔴 高 |
| # | 改进项 | 影响 | 工作量 | 优先级 |
|---|---|---|---|---|
| 5 | Starter 装配测试 — 补 Spring 上下文测试(历史曾漏掉启动期循环依赖) | 工程质量 | 1d | 🔴 高 |
| 6 | 核心 Service 测试 — system / support 关键路径(目标覆盖率 30%) | 质量保障 | 3d | 🔴 高 |
| 7 | 内容安全证据页前端 + 第三方适配器落地 | 招标强制项闭环 | 3d | 🟠 中高 |
| 8 | 编号规则修通(规则 ID 与枚举对齐)并评估上提为 Starter | 扩展性 | 1d | 🟠 中高 |
| 9 | Seata 决策 — 真接入或移除声明 | 对外陈述真实性 | 0.5d | 🟠 中高 |
| 10 | 可观测常态化 — 追踪默认开启 + 配置化告警 | 可观测性 | 2d | 🟠 中高 |
| 11 | 清理空目录(12 个)与统一源文件编码 | 可维护性 | 0.5d | 🟡 中 |
| 12 | BOM 化版本源 — 收敛第三方版本到根 pom | 可维护性 | 1d | 🟡 中 |
| # | 改进项 | 影响 | 工作量 | 优先级 |
|---|---|---|---|---|
| 13 | Starter 群补齐 — audit / file / id / mq / observability | 扩展性 | 5d | 🔴 高 |
| 14 | 测试覆盖率至 60%(集成测试 + 契约测试) | 质量保障 | 10d | 🟠 中高 |
| 15 | 生产环境每库独立账号 + 密码加密(Jasypt/Vault) | 数据安全 | 3d | 🟠 中高 |
| 16 | 前端工程拆分(按域拆包或拆工程) | 构建与权限模型 | 5d | 🟠 中高 |
| 17 | 统一返回/异常/包结构规范并纳入门禁(R6/R7/R8) | 可维护性 | 3d | 🟡 中 |
| 18 | 多环境配置体系(dev/test/staging/prod Nacos 命名空间) | 环境管理 | 3d | 🟡 中 |
| # | 改进项 | 影响 | 工作量 | 优先级 |
|---|---|---|---|---|
| 19 | 分布式事务落地(跨服务一致性场景,Seata 或 Saga) | 数据一致性 | 5d | 🟡 中 |
| 20 | 自动弹性伸缩(K8s HPA + 指标) | 资源优化 | 5d | 🟡 中 |
| 21 | 混沌工程(故障注入、容错验证) | 系统韧性 | 5d | 🟢 低 |
| 22 | 全量灰度发布(蓝绿 / 金丝雀) | 发布安全 | 5d | 🟢 低 |
| 23 | 发布能力建设(BOM + 私服 + 版本兼容矩阵) | 对外授权/交付 | 5d | 🟡 中 |
模块边界真实成立:五个业务模块互相零直接依赖(全量 import 矩阵实测),全部经 api-* 契约;api 与 modules 5:5 对齐
架构边界可执行:arch-check.ps1 把 4 条边界做成"非零退出即失败",扫描 1235 个文件(含"框架不得含行业语义")
数据权限 fail-closed + SPI 化:平台定接口、业务各自实现、DenyAll 兜底 —— 未接 SPI 即全拒绝,不静默越权
合规与安全双护栏:模型合规按 baseUrl 真实域名判定区域且覆盖含向量化的四条链路;内容安全输入输出双向 + 流式分段缓冲
留痕纪律统一:日志 / 异常 / 证据表三处一致"绝不记原文";证据表只存长度 + 不可逆摘要 + 规则版本指纹
技术栈处于行业前列:Spring Boot 4.1.1 + Spring Cloud 2025.1.3 + Java 21 + 原生 @HttpExchange
五服务五库隔离准确:每个服务 JDBC 零例外只连自己的库
部署资产齐备:Dockerfile、docker-compose、build.sh、Sentinel 规则、部署脚本
AI 能力内建:AgentScope 2.0.2 + LangChain4j + pgvector,智能体/工具/RAG/流程/评审齐备
| 级别 | 风险 | 状态 |
|---|---|---|
| 🔴 P0 | 跨库 SQL 击穿数据隔离 | ❌ 待整改 |
| 🔴 P0 | 明文凭据入库 + 默认 profile 为 dev | ❌ 待整改 |
| 🔴 P0 | 测试覆盖率 1.3% | ❌ 待补齐 |
| 🔴 P0 | 无 CI,门禁无挂载点 | ❌ 待接入 |
| 🟠 P1 | 迁移机制不统一(三库仅 baseline) | ❌ 待统一 |
| 🟠 P1 | Seata 零使用 / 编号规则调用必失败 | ❌ 待决策/修正 |
| 🟠 P1 | 内容安全证据页前端未做 / 第三方未接 | ❌ 待开发 |
| 🟡 P2 | 空目录 12 个 / 部分源文件编码损坏 | ❌ 待清理 |
QuickBlue v4.0.0 是一个骨架强、边界清、技术栈新的微服务框架。它做对了三件在同类脚手架里少见的事:
模块间零直接依赖(实测,非声称),且靠 api-* 契约维系;
把架构边界做成可执行门禁,而不是写在文档里靠自觉;
合规与内容安全的留痕纪律统一(绝不记原文、脱敏必须真的生效)。
但它同时暴露出两个结构性问题:
一处跨库 SQL 就击穿了整套"每服务一库"的承诺 —— 说明再好的架构约定,只要缺少自动化检查,就会被单点绕过;
工程质量与架构水平严重不匹配 —— 1081 个 main 文件仅 14 个测试类、无 CI、三库迁移机制空转。
结论:这是一个 "架构已到位、工程化待补课" 的框架。 最值得投入的不是新增能力,而是把已有的边界与纪律变成机器守得住的东西 —— 这也是路线图把"接入 CI"列为 P0 第 1 项的原因。
分层(
common → starter → api → modules)是对的,模块间零直连这一点比多数同类脚手架做得好。 但分层必须能回答"新东西放哪"—— 当前缺一条决策规则(含业务语义→域;需被多域复用→starter;需自动装配→starter;否则→common),否则support(308 文件 / 18 包)这类模块会持续膨胀。 最该立刻做的一件事:把NoticeMapper.xml的跨库 SQL 改为经api-system调用 —— 它破坏的正是这套架构唯一的强制承诺。
正向:Sa-Token 1.46.0 + Argon2id + SM4 国密 + BouncyCastle;网关鉴权、XSS 过滤、Druid WallFilter 在位;模型合规与内容安全的留痕纪律是同类项目里少见的自觉。 必须处理:① 明文口令入库,且
SPRING_PROFILES_ACTIVE默认值为 dev;②redis存在弱默认值;③ 跨库 SQL 绕过 system 侧的行级权限与字段脱敏;④ 进入 git 的口令应视为已泄露,需轮换而非仅删除。
正向:五服务五库,每服务只连自己的库(零例外);Druid + p6spy + MyBatis-Plus 分页/租户插件齐备;89 张表规模可控。 两点必办:① 迁移机制不统一(三库只有 baseline,表实为手工脚本所建)—— 必须二选一并对齐,否则将来会在启动时报出难以定位的冲突;② 跨库查询使两库无法独立迁移/备份恢复,也破坏了"按域分库"带来的部署自由度。
正向:
deploy/docker-compose.yml、deploy/build.sh、docker/Dockerfile.app、deploy/scripts、nacos_config/sentinel-rules均齐备;Nacos 3.2.1 承担注册与配置;Spring Boot Admin 4.1.2 提供运行态面板。 最大缺口:没有 CI。 仓库内不存在任何 CI 配置。arch-check.ps1已具备挂载形态,但在接入之前,架构边界仍然依赖"人记得执行"。 建议:先把arch-check.ps1与mvn test串成一条最小流水线 —— 这比补任何单个功能更能守住质量线。
实测:前端工程
QuickBlue-MicroAI-webpg—— 238 个.vue+ 162 个 ts/js,views按域组织:support 54 / system 47 / ai 34 / business 16 / report 12 / install 2。 意见:① 页面规模已到需要按域拆分工程或至少拆分路由包的程度,否则构建与权限模型会先于功能成为瓶颈;② 前端测试未纳入自动化;③.env区分 development/localhost/pre/production/test 五套,环境治理良好,但需确认.env.*未携带敏感值入库。
| 维度结论 | 取证方式 |
|---|---|
| 版本号 | 逐项读取根 pom.xml <properties> |
| 模块规模 | 逐模块统计 src/main 与 src/test 下 .java 数量 |
| 模块依赖矩阵 | 全仓扫描 import com.budaos.<模块>. 并按来源归组 |
| 数据隔离 | 读取 nacos_config/services/*.yaml 的 JDBC URL;psql 实查各库表数与 flyway_schema_history |
| 跨库 SQL | 全仓大小写不敏感 SQL 扫描 + t_employee 存在性 psql 确认 |
| 依赖是否真被使用 | 对 io.seata / sleuth / micrometer 等做全仓使用性扫描 |
| 空目录 / 编码 / CI | 文件系统实测 |
| 架构门禁 | 运行 tools/arch-check.ps1(R1/R2/R2/R3 全 PASS,扫描 1235 文件) |
❌ 未做性能压测:并发、吞吐、故障注入、真实链路时延均未测试 → 本报告不含性能结论
❌ 未做渗透测试:仅做配置与依赖审计,未验证鉴权绕过、注入、越权等实际攻击面
❌ 未做前端深度审查:仅统计规模与目录结构,未审组件质量、状态管理与构建产物
❌ 未做运行时验证:网关路由、Fail-Closed 行为、告警链路等未做运行验证
⚠️ 评分是判断而非计算结果:各维度分值与权重由本次证据综合给出,用于排期与横向比较,不构成验收结论
xxxxxxxxxx最新版本 = v4.0(本文档,对应产品 QuickBlue 4.0.0)→ 描述【当前实际】历史一代 = v3.0 → 见 QuickBlue微服务架构评估报告_v3.0.md
报告生成: 专家团架构师评审(架构设计师 / 安全专家 / DBA / DevOps 专家 / 前端架构师) 评估工具: 全量代码仓库扫描 + 静态分析 + 配置审计 技术栈: Spring Boot 4.1.1 + Spring Cloud 2025.1.3 + Spring Cloud Alibaba 2025.1.0.0 + PostgreSQL 18 + JDK 21 + Vue 3 项目版本: QuickBlue 4.0.0 规范: 所有边界规则以
tools/arch-check.ps1为准(可执行、非零退出即失败)