AI辅助开发
目录
简介
本项目是一个企业级BI分析平台,采用微服务架构与Kratos框架,结合Claude Code Skills实现“从需求到部署”的全生命周期工程化开发。项目通过规范驱动开发(Spec-Driven Development)工作流,配合多种Skills覆盖架构设计、数据库设计、API设计、代码生成、模块开发、测试编写、质量保障与运维排查等环节,显著提升开发效率与代码质量。
项目结构
项目以多服务微架构组织,核心服务包括分析服务、基础数据服务、租户管理、定时任务、系统管理、前端控制台与浏览器扩展等。服务之间通过gRPC/HTTP协议通信,配置中心采用Nacos,数据层以StarRocks为主,消息队列使用Kafka,缓存使用Redis,链路追踪采用OpenTelemetry/Jaeger。
图表来源
章节来源
核心组件
- 服务入口与配置加载:分析服务入口负责加载Nacos配置、初始化日志与追踪、雪花算法、服务注册与Wire依赖注入,随后启动HTTP/gRPC服务。
- 统一错误与响应:公共组件提供统一错误码体系与响应格式,便于跨服务一致化处理。
- 依赖注入:通过Wire集中管理服务、业务与数据层依赖,确保模块解耦与可测试性。
- 技术栈与规范:Go 1.25.5 + Kratos v2.9.2,StarRocks OLAP,Kafka消息队列,Nacos配置中心,OpenAPI文档生成,Git子模块管理。
章节来源
- [[[[bi-analysis/cmd/bi-analysis/main.go]]]]
- [[[[bi-common/apitypes/error.go]]]]
- [[[[bi-analysis/internal/biz/biz.go]]]]
- [[[[bi-analysis/internal/service/service.go]]]]
- [[[[CLAUDE.md]]]]
架构总览
系统采用Kratos分层架构:cmd入口 -> 依赖注入 -> 服务层 -> 业务层 -> 数据层 -> 数据库。服务通过Nacos注册与发现,HTTP/gRPC双协议对外提供能力,StarRocks承载分析型数据,Kafka支撑异步事件与数据同步,Redis提供缓存加速,OpenTelemetry/Jaeger实现可观测性。
图表来源
章节来源
详细组件分析
分析服务入口与配置加载
- 环境参数解析:支持通过命令行传入运行环境(dev/prod)。
- Nacos配置源:按环境加载application-{env}.yaml,统一配置中心优先级。
- 日志与追踪:基于公共组件初始化日志与链路追踪。
- 雪花算法:从配置初始化分布式ID生成器。
- 服务注册:基于Nacos客户端创建服务注册实例。
- 依赖注入:通过Wire生成app并启动HTTP/gRPC服务。
图表来源
章节来源
统一错误与响应机制
- 错误码格式:采用七位格式XXYYZZZ,XX为错误类型,YY为模块代码,ZZZ为序号。
- HTTP状态映射:根据错误类型映射到标准HTTP状态码,实际响应由中间件统一返回200并携带业务错误码。
- 错误提取:提供从Kratos错误中提取业务错误码与消息的方法,便于统一处理与上报。
图表来源
章节来源
依赖注入与模块划分
- Wire ProviderSet:在biz与service包中分别导出ProviderSet,集中声明依赖关系,便于生成注入代码。
- 服务层职责:实现proto定义的服务接口,协调业务层与数据层。
- 业务层职责:封装领域逻辑,保证用例与实体的清晰分离。
- 数据层职责:抽象仓储接口,屏蔽数据库细节。
图表来源
章节来源
数据库设计与StarRocks规范
- 表类型:Primary Key用于可更新的主数据,Duplicate Key用于只追加的日志数据。
- 分桶与副本:标准分桶键为高基数列,开发环境副本数1,生产环境副本数3。
- 索引策略:对低基数列使用BITMAP索引加速查询。
- 软删除:统一使用deleted_at字段实现软删除。
- 动态分区:日志表采用动态分区管理生命周期。
- 公共字段:所有业务表包含审计字段created_by/updated_by/created_at/updated_at/deleted_at。
- ID生成:使用雪花算法生成分布式唯一ID。
图表来源
章节来源
API设计与代码生成
- API定义:使用Protobuf定义gRPC/HTTP接口,结合注解生成OpenAPI文档。
- 代码生成:通过Makefile执行proto生成、OpenAPI文档生成、配置生成与wire依赖生成。
- 文档同步:支持将OpenAPI文档同步至Apifox,便于前后端协作。
图表来源
章节来源
规范驱动开发(Spec-Driven Development)
- 规范创建:通过/spec-specify创建功能规范,明确目标与范围。
- 需求澄清:使用/spec-clarify消除歧义,确保一致性。
- 计划生成:使用/spec-plan生成实施计划与里程碑。
- 任务分解:使用/spec-tasks生成可执行的任务清单。
- 实施执行:使用/spec-implement推进落地执行。
- 一致性分析:使用/spec-analyze检查规范与实现的一致性。
图表来源
章节来源
Claude Code Skills在各阶段的应用
- 研发编排:bi-compose串联各阶段Skill,形成从需求到部署的流水线。
- 架构设计:bi-tech-architecture指导技术选型与系统设计。
- 工程管理:bi-submodule-management管理Git子模块。
- 编码规范:bi-coding-standards统一Go/TS代码风格。
- 数据库设计:bi-database-design与bi-starrocks-query负责建表与查询优化。
- API设计:bi-api-design规范接口定义与OpenAPI生成。
- 代码生成:bi-proto-generation自动化生成Proto/Wire代码。
- 后端开发:bi-development与bi-kafka-integration实现模块开发与消息集成。
- 配置管理:bi-nacos-config集成动态配置中心。
- 前端开发:bi-frontend-development与bi-echarts-visualization规范前端与可视化实现。
- 安全合规:bi-security强化认证授权与安全防护。
- 质量保障:bi-code-review与bi-testing规范代码审查与测试。
- 性能优化:bi-performance进行全链路性能分析与优化。
- 运维排查:bi-troubleshooting支持故障定位与问题排查。
- DevOps:bi-devops配置CI/CD与容器化部署。
图表来源
章节来源
依赖关系分析
- 工作区聚合:go.work声明了多模块聚合,便于统一构建与测试。
- 公共依赖:bi-common与bi-proto作为公共模块,被各业务服务依赖。
- 服务间依赖:分析服务依赖公共组件与Proto定义;基础数据服务同样依赖公共组件与Proto。
图表来源
章节来源
性能考量
- OLAP查询优化:利用StarRocks的分桶、副本与索引策略,结合动态分区管理日志表生命周期。
- 缓存策略:Redis用于热点数据与会话缓存,降低数据库压力。
- 异步处理:Kafka承接高吞吐事件,实现削峰填谷与解耦。
- 链路追踪:OpenTelemetry/Jaeger定位性能瓶颈与异常路径。
- 代码生成与依赖注入:减少样板代码,提升可维护性与运行效率。
故障排查指南
- 配置问题:优先检查Nacos配置是否正确加载,确认环境变量与配置文件优先级。
- 依赖注入:若服务无法启动,检查wire生成代码是否更新,ProviderSet是否完整。
- 错误码定位:通过统一错误码提取方法快速定位业务错误来源。
- 数据库异常:核对建表规范与索引策略,检查分桶与副本配置。
- 网络与注册:验证服务注册与发现是否正常,排查网络连通性。
章节来源
结论
本项目通过Claude Code Skills与规范驱动开发(Spec-Driven Development)实现了从需求到部署的高效闭环。借助统一的架构规范、数据库设计与API生成流程,以及完善的质量保障与运维工具链,显著提升了开发效率与代码质量。建议在后续迭代中持续完善Skills覆盖度与自动化程度,进一步缩短交付周期并增强团队协作效率。
附录
- 常用命令:初始化工具、生成代码、构建与运行等,详见项目文档。
- 提交与发布:遵循Git分支与提交规范,确保版本演进有序可控。
- 环境准备:私有依赖访问、基础服务启动与配置优先级,详见项目文档。
章节来源