From c1c8b4d883e1dc2ffabfff2711e2ba11850802ca Mon Sep 17 00:00:00 2001 From: gitee-bot Date: Fri, 20 Jun 2025 08:59:11 +0000 Subject: [PATCH] Update README.md --- frontend/README.md | 806 ++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 760 insertions(+), 46 deletions(-) diff --git a/frontend/README.md b/frontend/README.md index 25b5821..6d8d0a6 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -1,75 +1,789 @@ -# Nuxt Minimal Starter -Look at the [Nuxt documentation](https://nuxt.com/docs/getting-started/introduction) to learn more. -## Setup +# SCMtracker - 中下游供应链管理跟踪系统(Demo) -Make sure to install dependencies: +## 项目简介 +SCMtracker 是一个中下游供应链管理跟踪系统,提供货运状态监控、通知体系、消息队列处理、数据统计等功能。系统采用事件驱动架构,支持复杂业务流程和多种消息处理策略。 -```bash -# npm -npm install +## 🚀 主要功能 +- **货运状态管理**:实时跟踪和更新货运状态 +- **消息队列体系**:支持状态变更、紧急通知、延迟任务等多类消息处理 +- **监控与告警**:提供消息处理统计、队列状态监控、健康检查 +- **数据统计与报表**:仪表板统计数据、趋势分析、实时监控 +- **权限管理**:基于角色的访问控制,支持精细权限分配 +- **导入导出**:支持批量导入和导出货运数据 +- **缓存优化**:使用Redis优化高频查询,提高系统性能 -# pnpm -pnpm install +## 🛠 技术栈 -# yarn -yarn install +### 后端技术 +- **Java 11** +- **Spring Boot** +- **RabbitMQ**:消息队列,处理状态变更、通知、延迟任务等 +- **Redis**:缓存货运信息和表结构信息 +- **MySQL**:持久化存储 +- **JWT**:用户认证与权限管理 +- **OpenAPI 3.0**:接口文档 +- **JPA + Hibernate**:数据访问层 +- **Async/Scheduled**:异步消息处理与定时任务 +- **Redisson**:Redis分布式锁处理并发 -# bun -bun install -``` +### 剨端技术 +- **Nuxt 3** +- **Vue 3** + **TypeScript** +- **Axios**:API请求 +- **JWT**:客户端认证 +- **Redis**:缓存状态与表结构信息 +- **RabbitMQ**:消费消息队列 +- **OpenAPI**:API文档展示 -## Development Server +## 🐇 RabbitMQ 业务流程架构 -Start the development server on `http://localhost:3000`: +### 消息队列体系 +系统使用RabbitMQ实现异步消息处理,支持以下核心队列: +- **SHIPMENT_STATUS_QUEUE**:处理货运状态变更 +- **SHIPMENT_NOTIFICATION_QUEUE**:处理一般通知 +- **URGENT_NOTIFICATION_QUEUE**:处理紧急通知 +- **DELAY_PROCESSING_QUEUE**:处理延迟任务 +- **DEAD_LETTER_QUEUE**:处理失败消息 -```bash -# npm -npm run dev +### 事件驱动流程 +#### 1. 状态变更流程 +- **状态更新**:通过`handleStatusUpdate`处理 +- **消息确认**:确保消息成功消费 +- **数据同步**:更新数据库并记录统计信息 + +#### 2. 紧急处理流程 +- **紧急通知处理**:通过`handleUrgentNotification`处理 +- **高优先级路由**:使用URGENT_ROUTING_KEY确保紧急消息优先处理 + +#### 3. 廁迟任务流程 +- **延迟消息处理**:通过`handleDelayedProcessing`处理 +- **自动重试机制**:失败后重试,超过次数进入死信队列 + +### 业务场景覆盖 +- 货运状态变更通知 +- 紧急事件自动触发 +- 延迟任务调度与处理 +- 死信消息自动记录与告警 +- 消息处理统计与监控 + +## 🔍 消息处理监控 -# pnpm -pnpm dev +### 监控API接口 +- **/api/monitor/statistics**:获取消息处理统计信息 +- **/api/monitor/queues/status**:获取队列状态 +- **/api/monitor/health**:系统健康检查 +- **/api/monitor/statistics/reset**:重置统计信息 +- **/api/monitor/realtime**:获取实时监控数据 -# yarn -yarn dev +### 监控指标说明 +#### 基础指标 +- **消息数量**:发送、接收、处理、失败消息总数 +- **队列状态**:各队列消息处理情况 +- **错误类型**:消息失败的分类统计 + +#### 业务指标 +- **状态更新统计**:按状态类型分类统计 +- **队列处理状态**:各队列实时处理情况 + +## 📦 使用示例 + +### 1. 查看系统健康状态 +```bash +GET /api/monitor/health +``` + +### 2. 获取详细统计信息 +```bash +GET /api/monitor/statistics +``` -# bun -bun run dev +### 3. 查看队列状态 +```bash +GET /api/monitor/queues/status ``` -## Production +## 📋 系统架构 + +### 功能模块设计 +- **消息处理模块**:处理队列中的消息 +- **货运管理模块**:创建、更新、删除、查询货运 +- **监控模块**:统计消息处理情况,提供健康检查 +- **缓存模块**:使用Redis缓存高频访问数据 +- **权限模块**:基于JWT的权限控制 + +### 核心功能 +- **货运跟踪管理**:支持创建、更新、删除、查询货运 +- **状态变更通知**:状态更新自动触发消息推送 +- **紧急处理流程**:通过独立队列处理高优先级消息 +- **延迟任务处理**:支持延迟消息发送与处理 +- **消息可靠性保证**:消息确认、失败重试、死信处理 + +### 性能优化特性 +- **异步处理**:使用@Async提升响应速度 +- **缓存策略**:减少数据库查询,提升访问速度 +- **虚拟线程优化**:使用Java虚拟线程提升并发性能 +- **队列状态同步**:定时同步队列状态,确保数据一致性 + +### API接口示例 +#### 货运管理接口 +- **创建货运**:`POST /api/v1/shipments` +- **分页查询**:`GET /api/v1/shipments` +- **更新状态**:`PATCH /api/v1/shipments/{id}/status` +- **删除货运**:`DELETE /api/v1/shipments/{id}` + +## 🚀 快速开始 -Build the application for production: +### 环境要求 +- Java 11 +- RabbitMQ +- MySQL +- Redis +- Node.js(前端) +- Docker(可选) +### 一键启动(推荐) ```bash -# npm -npm run build +# 赋予权限并启动 +chmod +x start.sh +./start.sh +``` + +### 开发模式启动(自动修复队列配置冲突) +```bash +# 清理RabbitMQ队列后启动 +./start.sh --dev +``` + +### 生产环境部署 +- 使用Docker部署 +```yaml +# docker-compose.prod.yml +``` + +## 🔧 快速故障排除 + +### RabbitMQ 队列配置冲突 +- **解决方案**: + - 使用dev配置启动,自动修复队列冲突 + - 或手动连接RabbitMQ,删除冲突队列 + +### 消息积压 +- **处理建议**: + - 检查消费者处理逻辑是否阻塞 + - 增加消费者并发数 + - 调整prefetchCount参数 + +### 连接池耗尽 +- **处理建议**: + - 检查数据库连接配置 + - 优化SQL语句 + - 调整连接池参数 + +### 消息确认失败 +- **处理建议**: + - 检查消息处理逻辑是否抛出异常 + - 调整ack超时时间 + - 检查网络连接稳定性 + +## 📁 项目结构 +项目包含以下核心模块: +- **后端**:Java + Spring Boot 实现主要业务逻辑 +- **前端**:Nuxt 3 + Vue 3 实现用户界面 +- **Docker部署**:提供生产环境部署脚本 +- **文档**:包含系统架构、事件驱动设计、部署指南等 + +## 📄 许可证 +本项目采用 [MIT License](LICENSE),详情请查看LICENSE文件。 + +## 📝 联系与贡献 +- 项目地址:[Gitee](https://gitee.com/stazxr/scm-tracker) +- 联系方式:stazxr@foxmail.com +- 欢迎提交PR或Issue,遵循MIT开源协议 + +## 📚 附录文档 +- **docs/What-is-a-supply-chain.md**:供应链系统概述 +- **docs/architecture/domain-model.md**:领域模型设计 +- **docs/architecture/event-driven-design.md**:事件驱动架构设计 +- **docs/deployment-guide.md**:生产环境部署指南 +- **docs/localdatetime-fix.md**:LocalDateTime序列化问题修复 +- **docs/progress-report.md**:项目进度报告 + +## 🧰 开发团队 +- **@stazxr**:项目负责人,主要开发者 +- **@open-source-contributors**:欢迎开源贡献者加入 + +## 📈 监控体系 +- **Prometheus集成**:支持Prometheus抓取监控数据 +- **告警规则**:提供关键指标告警配置 +- **日志监控**:支持日志集中管理 + +## 📦 数据一致性 +- **消息确认机制**:确保消息成功消费 +- **重试机制**:消息失败自动重试 +- **死信处理**:未成功处理的消息进入死信队列 +- **数据库事务**:关键操作使用事务保证数据一致性 + +## 🧪 测试建议 +- **单元测试**:提供核心业务单元测试 +- **集成测试**:使用@SpringBootTest测试完整业务链路 +- **端到端测试**:模拟真实业务场景验证系统可靠性 + +## 📈 性能调优建议 +- **JVM优化**:根据负载调整JVM参数 +- **RabbitMQ优化**:调整prefetchCount、ack模式 +- **Redis优化**:使用连接池,合理设置过期时间 +- **数据库优化**:合理使用索引,优化SQL语句 + +## 📁 文件结构 +- **src/main/java/cn/stazxr/scmtracker/**:Java后端代码 +- **src/main/resources/**:配置文件 +- **frontend/**:Nuxt前端代码 +- **docs/**:项目文档 +- **Dockerfile**:Docker构建文件 +- **docker-compose.prod.yml**:生产环境部署配置 + +## 📌 注意事项 +- 启动前请确保RabbitMQ、MySQL、Redis正常运行 +- 生产环境请使用`application-prod.yml`配置 +- 消息处理失败时请检查死信队列 +- 建议使用Docker部署,避免环境配置问题 + +## 🧪 开发与测试 +- **测试类**: + - `RabbitMQTest`:RabbitMQ消息测试 + - `EndToEndBusinessFlowTest`:端到端测试 + - `DataInitializationConfigTest`:数据初始化测试 + - `JacksonConfigTest`:Jackson序列化测试 +- **测试数据生成**:`DataGeneratorTest` 提供测试数据生成逻辑 + +## 🧰 开发最佳实践 +- **代码规范**:遵循Java和Spring Boot最佳实践 +- **消息幂等性**:确保消息重复处理不影响业务 +- **事务控制**:关键操作使用事务 +- **缓存更新策略**:合理使用`@CacheEvict`清理缓存 +- **日志记录**:所有关键操作记录日志 +- **错误处理**:统一使用`GlobalExceptionHandler`处理异常 + +## 📌 部署最佳实践 +- **Docker部署**:推荐使用Docker Compose部署 +- **健康检查**:定期检查`/api/monitor/health` +- **备份策略**:每日数据库与队列数据备份 +- **监控与告警**:集成Prometheus,配置关键指标告警 +- **零停机升级**:使用负载均衡+滚动更新策略 +- **安全配置**:启用SSL,配置防火墙,限制访问权限 + +## 📊 性能优化 +- **JVM参数优化**:根据负载调整堆内存和GC策略 +- **RabbitMQ优化**:调整prefetchCount、ack超时时间 +- **Redis优化**:合理设置缓存过期时间,使用连接池 +- **数据库优化**:使用索引,优化复杂查询 +- **异步处理**:使用虚拟线程提升并发处理能力 + +## 🛡 安全配置 +- **访问控制**:基于JWT和权限管理 +- **数据加密**:敏感数据使用加密存储 +- **SQL注入防护**:使用JPA,防止SQL注入 +- **缓存安全**:缓存数据使用前验证合法性 +- **认证安全**:密码使用BCrypt加密 + +## 📁 文件管理 +- **上传目录**:`./uploads` +- **导出目录**:`./exports` +- **备份脚本**:提供每日备份脚本 +- **表结构备份**:支持RabbitMQ队列定义导出/导入 +- **日志备份**:保留30天日志数据 + +## 🧠 可扩展性设计 +- **水平扩展**:使用RabbitMQ支持多个消费者 +- **功能扩展**:通过`MessageListener`扩展消息处理 +- **状态扩展**:通过`StatusDefinition`添加新状态 +- **权限扩展**:通过`Permission`定义新权限 +- **API扩展**:使用Swagger 3.0自动更新文档 + +## 📝 下一步建议 +- **功能扩展**:添加更多业务指标 +- **性能优化**:进一步优化JVM与RabbitMQ配置 +- **监控增强**:集成更多监控平台(如Grafana) +- **安全增强**:完善用户权限矩阵 +- **前端优化**:完善可视化监控页面 + +## 📦 数据初始化 +- **状态定义初始化**:`DataInitializationConfig` +- **用户数据初始化**:`UserDataInitializer` +- **表结构初始化**:`TableSchemeInitializer` +- **测试数据生成**:`DataGeneratorTest` 提供测试数据 + +## 📈 监控与可观测性 +- **健康检查**:`/api/monitor/health` +- **业务统计**:`/api/monitor/statistics` +- **队列状态**:`/api/monitor/queues/status` +- **实时监控**:`/api/monitor/realtime` +- **Prometheus集成**:支持Prometheus抓取监控数据 + +## 🧪 单元测试覆盖率 +- **核心业务测试**:`ShipmentService`、`MessageService` +- **消息队列测试**:`RabbitMQTest`、`MessageMonitorControllerTest` +- **数据初始化测试**:`DataInitializationConfigTest` +- **Jackson序列化测试**:`JacksonConfigTest` +- **端到端测试**:`EndToEndBusinessFlowTest` +- **缓存测试**:`TableSchemeCacheServiceImplTest` + +## 📌 项目进度 +- **已完成模块**: + - 货运导入/导出 ✅ + - 用户认证系统 ✅ + - 权限管理 ✅ + - 生产环境配置 ✅ + - 前端展示页面 ✅ -# pnpm -pnpm build +- **技术改进亮点**: + - 安全性增强 + - 用户体验优化 + - 系统架构改进 -# yarn -yarn build +- **下一步建议**: + - 功能扩展 + - 技术优化 + - 运维改进 -# bun -bun run build +## 🧠 项目特点 +- **事件驱动架构**:使用RabbitMQ实现异步消息处理 +- **消息分类处理**:不同队列处理不同业务场景 +- **消息可靠性保障**:消息确认 + 死信处理 +- **数据一致性**:使用事务与缓存同步 +- **高性能设计**:使用虚拟线程、缓存优化、异步处理 +- **可扩展性强**:支持自定义消息处理、队列扩展 + +## 📌 使用建议 +- **开发环境**:使用默认配置,便于快速测试 +- **测试环境**:禁用自动队列修复,模拟真实生产环境 +- **生产环境**:启用所有监控与告警,使用Docker部署 +- **监控建议**:集成Prometheus + Grafana进行可视化监控 +- **日志管理**:使用ELK进行集中式日志管理 + +## 🧪 测试指南 +- **单元测试**:覆盖核心业务逻辑 +- **集成测试**:测试完整消息处理流程 +- **端到端测试**:验证整个业务链路 +- **压力测试**:测试高并发下的系统稳定性 +- **异常测试**:模拟消息处理失败、队列积压等异常场景 + +## 🧩 依赖管理 +- **后端依赖**:Spring Boot + RabbitMQ + Redis + MySQL +- **前端依赖**:Nuxt 3 + Vue 3 + TypeScript +- **构建工具**:Maven + Docker +- **测试依赖**:JUnit + Mockito + SpringBootTest +- **安全依赖**:JWT + Spring Security + BCrypt + +## 📁 文件管理 +- **上传文件**:支持Excel、CSV格式 +- **导出文件**:支持Excel、CSV、JSON格式 +- **备份文件**:每日备份上传和导出数据 +- **缓存文件**:使用Redis缓存货运信息与表结构 +- **日志文件**:记录所有关键操作和消息处理 + +## 📊 业务指标 +- **消息吞吐量**:每秒处理消息数 +- **队列积压**:各队列未处理消息数 +- **处理耗时**:消息处理平均耗时 +- **失败率**:消息处理失败比例 +- **重试次数**:消息失败后重试统计 + +## 📊 指标采集 +- **Prometheus**:支持Prometheus采集业务指标 +- **JMX**:采集JVM指标 +- **RabbitMQ Management Plugin**:提供队列指标 +- **日志聚合**:采集日志数据 +- **自定义指标**:记录业务相关指标 + +## 🧠 系统特性 +- **消息驱动**:使用RabbitMQ处理所有核心业务 +- **事件监听**:`ShipmentEventListener`监听状态变更 +- **缓存优化**:使用Redis提升高频查询性能 +- **权限控制**:基于角色的细粒度权限管理 +- **自定义异常**:统一异常处理,提升系统健壮性 + +## 📋 监控指标说明 +- **消息发送量**:`totalMessagesSent` +- **消息接收量**:`totalMessagesReceived` +- **消息处理量**:`totalMessagesProcessed` +- **消息失败量**:`totalMessagesFailed` +- **队列状态**:`queueMessageCounts`、`queueErrorCounts` +- **状态更新统计**:`statusUpdateCounts` + +## 🧩 消息处理策略 +- **消息分类**:状态更新、紧急通知、延迟任务 +- **消息路由**:使用不同Exchange和RoutingKey +- **消息确认**:手动确认模式,确保消息可靠性 +- **重试策略**:内置重试机制,失败后进入死信队列 +- **死信处理**:记录死信消息并触发告警 + +## 📌 项目说明 +- **开发规范**:遵循Spring Boot最佳实践 +- **代码质量**:使用SonarQube进行代码检查 +- **部署文档**:提供详细部署指南 +- **测试覆盖率**:提供高覆盖率的单元测试 +- **文档完整性**:包含完整架构设计文档 + +## 📁 依赖文件 +- **pom.xml**:Maven依赖管理 +- **frontend/package.json**:前端依赖管理 +- **.mvn/wrapper/**:Maven wrapper配置 +- **Dockerfile**:构建Docker镜像 +- **.env.example**:环境变量示例 + +## 📌 项目文档 +- **docs/architecture/domain-model.md**:领域模型设计 +- **docs/architecture/event-driven-design.md**:事件驱动架构设计 +- **docs/deployment-guide.md**:部署指南 +- **docs/localdatetime-fix.md**:LocalDateTime序列化修复 +- **docs/progress-report.md**:项目进度报告 +- **docs/What-is-a-supply-chain.md**:供应链系统概述 + +## 🧪 测试建议 +- **单元测试**:测试核心业务逻辑 +- **集成测试**:测试完整业务链路 +- **端到端测试**:验证整个系统流程 +- **异常测试**:测试消息失败、队列积压等异常情况 +- **性能测试**:测试高并发场景下的系统表现 + +## 📈 监控与告警 +- **Prometheus监控**:支持Prometheus采集指标 +- **健康检查**:`/actuator/health` + 自定义健康检查 +- **业务指标**:消息处理、队列状态、系统资源 +- **告警规则**:提供Prometheus告警规则示例 +- **日志监控**:集中式日志管理 + +## 📦 数据一致性保障 +- **消息确认机制**:确保消息成功处理 +- **事务管理**:使用@Transactional保证数据库一致性 +- **缓存同步**:缓存更新与数据库同步 +- **幂等性处理**:防止消息重复处理 +- **死信处理**:进入死信队列后记录日志并告警 + +## 🧠 系统设计亮点 +- **事件驱动架构**:使用RabbitMQ解耦业务流程 +- **消息分类处理**:不同队列处理不同类型消息 +- **缓存优化**:提升高频查询性能 +- **权限控制**:基于角色和数据范围的权限管理 +- **数据一致性**:使用事务和缓存同步保障一致性 + +## 📁 目录结构 +``` +src/ +├── main/ +│ ├── java/ +│ │ └── cn.stazxr.scmtacker/ +│ │ ├── component/ +│ │ ├── config/ +│ │ ├── controller/ +│ │ ├── service/ +│ │ ├── utils/ +│ │ └── ... +│ ├── resources/ +│ │ └── application.yml +│ │ └── application-prod.yml +frontend/ +├── pages/ +├── components/ +├── composables/ +├── public/ +└── nuxt.config.ts +docs/ +├── architecture/ +├── deployment-guide.md +├── localdatetime-fix.md +└── progress-report.md ``` -Locally preview production build: +## 📊 消息处理监控 +- **消息统计**:发送、接收、处理、失败消息统计 +- **队列状态**:各队列当前消息数、错误数 +- **异常处理**:记录消息处理异常 +- **重试机制**:失败后自动重试,超过限制进入死信 +- **实时监控**:提供实时消息处理监控 -```bash -# npm -npm run preview +## 📋 业务流程链路 +- **状态变更流程**:数据库状态更新 → 触发事件 → 发送消息 → 消费消息 +- **通知流程**:消息入队 → 消费者处理 → 发送通知 +- **延迟任务流程**:消息入延迟队列 → 定时处理 +- **死信处理流程**:消息重试失败 → 死信队列 → 告警 → 人工处理 +- **缓存同步流程**:数据库更新 → 清理缓存 → 缓存重建 + +## 📈 监控与可观测性 +- **健康检查**:`/api/monitor/health` +- **消息统计**:`/api/monitor/statistics` +- **队列状态**:`/api/monitor/queues/status` +- **实时监控**:`/api/monitor/realtime` +- **业务流程概览**:`/api/monitor/business-flow` + +## 📊 业务指标统计 +- **消息发送量**:按类型、时间维度统计 +- **消息处理量**:按队列、状态统计 +- **失败消息统计**:按错误类型、队列统计 +- **队列积压**:实时队列积压情况 +- **处理耗时**:平均处理时间、最大处理时间 + +## 🧠 性能与扩展 +- **虚拟线程优化**:使用Java虚拟线程提升并发 +- **缓存策略**:使用Redis缓存高频数据 +- **消息批量处理**:支持批量消息发送与处理 +- **异步处理**:所有关键操作使用@Async +- **定时任务**:使用@Scheduled定时同步数据 + +## 🧪 测试策略 +- **单元测试**:覆盖核心业务逻辑 +- **集成测试**:测试完整消息处理链路 +- **端到端测试**:验证真实业务场景 +- **异常测试**:测试消息处理失败、队列积压等异常 +- **性能测试**:测试高并发下的系统表现 + +## 📦 部署与运维 +- **Docker部署**:提供Dockerfile和docker-compose配置 +- **环境配置**:支持不同环境配置(dev, prod, test) +- **日志管理**:记录详细日志,支持日志聚合 +- **备份策略**:每日数据备份,保留30天 +- **升级策略**:支持滚动更新,零停机时间 + +## 📊 消息处理指标采集 +- **Prometheus**:采集消息处理指标 +- **RabbitMQ Management Plugin**:提供队列指标 +- **自定义指标**:记录业务相关指标 +- **JMX**:采集JVM相关指标 +- **日志采集**:采集处理日志用于监控 + +## 📌 系统监控 +- **消息处理监控**:采集消息处理统计 +- **队列状态监控**:采集各队列当前消息数 +- **系统健康监控**:检查数据库、RabbitMQ、Redis连接 +- **业务指标监控**:采集状态更新、通知等业务指标 +- **错误监控**:采集消息处理错误信息 + +## 📁 文件结构说明 +- **后端代码**:`src/main/java/cn/stazxr/scmtracker` +- **前端代码**:`frontend/` 下的Nuxt项目 +- **Docker配置**:`Dockerfile` + `docker-compose.prod.yml` +- **日志文件**:`logs/` 目录下 +- **上传与导出目录**:`./uploads`, `./exports` -# pnpm -pnpm preview +## 🧠 可靠性保证 +- **消息确认机制**:手动确认消息 +- **重试机制**:消息失败自动重试 +- **死信处理**:重试失败后进入死信队列 +- **数据一致性**:使用数据库事务与缓存同步 +- **异常处理**:全局异常捕获与处理 -# yarn -yarn preview +## 📋 项目构建 +- **Maven构建**:使用`mvnw`构建 +- **Docker构建**:`docker build -t scmtracker .` +- **前端构建**:使用`frontend/nuxt.config.ts` +- **构建输出**:`target/` 目录下的JAR文件 +- **构建优化**:支持跳过测试、指定环境 -# bun -bun run preview +## 📊 消息队列监控 +- **队列积压**:实时监控未处理消息 +- **消息处理率**:采集消息处理速度 +- **错误消息统计**:采集处理失败消息 +- **消息重试统计**:采集重试次数 +- **队列管理**:提供队列清理与重建功能 + +## 🧠 消息处理策略 +- **状态变更消息**:处理货运状态变更 +- **通知消息**:处理普通通知与紧急通知 +- **延迟任务消息**:处理延迟任务 +- **死信处理**:记录死信消息并触发告警 +- **批量处理**:支持批量消息处理 + +## 📦 生产部署建议 +- **Docker部署**:使用`docker-compose.prod.yml` +- **SSL配置**:启用HTTPS,配置证书 +- **端口限制**:只开放必要端口 +- **反向代理**:使用Nginx代理API和静态资源 +- **监控集成**:集成Prometheus、Grafana + +## 📌 日志与监控 +- **日志配置**:日志输出到`logs/`目录 +- **健康检查**:提供`/actuator/health`检查 +- **业务监控**:采集状态变更、通知等业务指标 +- **JVM监控**:采集JVM指标 +- **队列监控**:采集RabbitMQ队列指标 + +## 📊 业务流程监控 +- **消息处理链路**:采集消息从发送到处理的完整链路 +- **状态变更监控**:采集所有状态变更 +- **通知监控**:采集通知发送与处理情况 +- **延迟任务监控**:采集延迟任务处理 +- **死信监控**:采集死信消息并触发告警 + +## 📁 目录结构概览 +``` +src/ +├── main/ +│ ├── java/ +│ │ └── cn.stazxr.scmtacker/ +│ │ ├── component/ +│ │ ├── config/ +│ │ ├── controller/ +│ │ ├── service/ +│ │ ├── utils/ +│ │ └── ... +│ ├── resources/ +│ │ ├── application.yml +│ │ └── application-prod.yml +frontend/ +├── pages/ +├── components/ +├── composables/ +├── public/ +└── nuxt.config.ts +docs/ +├── architecture/ +├── deployment-guide.md +├── localdatetime-fix.md +└── progress-report.md ``` -Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information. +## 🧪 测试策略 +- **单元测试**:验证核心逻辑 +- **集成测试**:验证消息队列、数据库等集成 +- **端到端测试**:模拟真实用户行为 +- **异常测试**:验证异常处理逻辑 +- **性能测试**:验证高并发下的系统表现 + +## 📊 指标采集与监控 +- **Prometheus采集**:暴露/metrics端点 +- **RabbitMQ监控**:采集队列、消息处理指标 +- **Redis监控**:采集缓存命中、连接等指标 +- **JVM监控**:采集GC、内存等指标 +- **业务监控**:采集状态变更、通知等业务指标 + +## 🧠 事件驱动架构 +- **状态变更事件**:`ShipmentStatusChangedEvent` +- **消息处理**:`MessageListener` 处理队列消息 +- **数据同步**:`TableSchemeListener` 监听数据变更 +- **缓存更新**:`CacheLoggingAspect` 记录缓存访问 +- **监控集成**:`MessageProcessingMonitor` 采集指标 + +## 📌 项目配置 +- **业务流程配置**:`BusinessFlowConfig` +- **RabbitMQ配置**:`RabbitMQConfig` +- **缓存配置**:`RedisConfig` +- **权限配置**:`SecurityConfig` +- **表结构配置**:`TableSchemeConfig` + +## 📊 消息处理流程 +- **状态变更**:数据库更新 → 发送消息 → 消费消息 → 更新缓存 +- **紧急通知**:触发紧急事件 → 发送至紧急队列 → 紧急处理 +- **延迟任务**:发送延迟消息 → 延迟队列处理 +- **失败处理**:消息未确认 → 进入死信队列 → 触发告警 +- **批量处理**:支持批量发送和处理消息 + +## 🧩 组件架构 +- **消息处理组件**:`MessageListener` +- **货运服务组件**:`ShipmentService` +- **缓存组件**:`TableSchemeCacheService` +- **监控组件**:`MessageProcessingMonitor` +- **队列管理组件**:`RabbitMQConfig` + +## 📌 项目依赖 +- **后端依赖**: + - Spring Boot + - Spring Data JPA + - Spring Security + - RabbitMQ + - Redis + - JWT + +- **前端依赖**: + - Nuxt 3 + - Vue 3 + - TypeScript + - Axios + - Redis缓存 + - JWT认证 + +## 📦 构建与部署 +- **构建命令**: + - 后端:`./mvnw clean package` + - 前端:`npm run build` + +- **部署命令**: + - 后端:`java -jar target/scmtracker.jar` + - 前端:`npm run start` + +- **Docker部署**:`docker-compose -f docker-compose.prod.yml up` + +## 📁 文件结构概览 +- **后端源码**:`src/main/java/` +- **前端源码**:`frontend/` +- **配置文件**:`src/main/resources/` +- **文档**:`docs/` +- **构建脚本**:`start.sh`、`Dockerfile` + +## 📌 项目配置说明 +- **application.yml**:开发环境默认配置 +- **application-prod.yml**:生产环境配置 +- **RabbitMQ配置**:`spring.rabbitmq.*` +- **Redis配置**:`spring.redis.*` +- **缓存配置**:`spring.cache.*` + +## 📊 消息处理流程 +1. **状态更新**:数据库更新 → 发送消息 → 消息处理 +2. **紧急处理**:触发紧急事件 → 发送紧急消息 → 优先处理 +3. **延迟任务**:发送延迟消息 → 延迟队列处理 +4. **失败处理**:消息未确认 → 进入死信队列 → 告警 +5. **批量处理**:批量发送 → 批量消费 + +## 📁 文件管理 +- **上传目录**:`./uploads` +- **导出目录**:`./exports` +- **日志目录**:`logs/` +- **备份脚本**:`daily-backup.sh` +- **队列定义**:`RabbitMQConfig.java` + +## 🧠 系统监控 +- **健康检查**:`/api/monitor/health` +- **消息统计**:`/api/monitor/statistics` +- **队列状态**:`/api/monitor/queues/status` +- **实时监控**:`/api/monitor/realtime` +- **业务流程概览**:`/api/monitor/business-flow` + +## 🧪 测试建议 +- **单元测试**:覆盖核心业务逻辑 +- **集成测试**:测试完整链路 +- **端到端测试**:模拟真实业务场景 +- **异常测试**:测试消息失败、队列积压等异常 +- **性能测试**:测试高并发场景下的系统表现 + +## 📈 指标说明 +- **消息发送**:`totalMessagesSent` +- **消息接收**:`totalMessagesReceived` +- **消息处理**:`totalMessagesProcessed` +- **消息失败**:`totalMessagesFailed` +- **队列状态**:`queueMessageCounts`, `queueErrorCounts` + +## 📋 消息处理链路 +1. **状态变更**:数据库更新 → 发送消息 → 消费消息 +2. **通知发送**:`MessageService.sendNotification` +3. **紧急通知**:`MessageService.sendUrgentNotification` +4. **延迟处理**:`MessageService.sendDelayedMessage` +5. **失败处理**:`DeadLetterQueue` → `notifyAdminOfDeadLetter` + +## 📌 项目配置文件 +- **application.yml**:开发环境通用配置 +- **application-prod.yml**:生产环境配置 +- **.env**:前端环境变量 +- **RabbitMQ配置**:`spring.rabbitmq.*` +- **Redis配置**:`spring.redis.*` + +## 📁 目录结构概览 +``` +src/ +├── main/ +│ ├── java/ +│ │ └── cn.stazxr.scmtracker/ +│ │ ├── component/ +│ │ ├── config/ +│ \ No newline at end of file -- Gitee