You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
houqin-java/.codebuddy/plans/项目技术要求文档_29ab44d0.md

6.7 KiB

name overview todos
项目技术要求文档 基于已有的7份设计文档和用户补充信息创建项目技术要求文档08-技术要求.md覆盖技术栈选型、架构设计、安全、性能、开发规范、部署运维、测试等维度并纳入无中间件方案、蓝牙策略配置等新增需求。
id content status
write-tech-doc 编写docs/08-项目技术要求.md文档涵盖技术栈、架构、安全、性能、蓝牙策略、去中间件方案、开发规范、部署运维、测试要求全量内容 completed
id content status dependencies
update-model-bluetooth 更新docs/04-核心数据模型.md新增蓝牙策略配置表(sys_bluetooth_policy)和审核表(sys_bluetooth_policy_audit)打卡记录表增加check_type字段 completed
write-tech-doc
id content status dependencies
update-api-bluetooth 更新docs/05-API接口规范.md新增蓝牙策略配置API和打卡记录check_type返回字段 completed
write-tech-doc
id content status dependencies
update-flow-bluetooth 更新docs/03-业务流转逻辑.md蓝牙校验流程改为按策略配置判断强制/非强制),补录模式仅在强制蓝牙+蓝牙失败时触发 completed
write-tech-doc

产品概述

医院物业SaaS管理后台的项目技术要求文档作为内部团队开发标准所有开发人员必须严格按照此标准执行。

核心功能

  • 明确技术栈选型与版本要求Java+Spring Boot+MariaDB+Vue+uni-app+Redis
  • 定义架构设计规范(多租户、模块化、前后端分离、双端、读写分离、去中间件方案)
  • 规定安全要求(认证、四级权限、行级数据隔离、蓝牙校验、审计日志)
  • 设定性能基线API响应<500ms、蓝牙交互可靠性、数据补录降级
  • 制定开发规范API规范、代码规范、数据库规范、模块开发规范
  • 约定部署运维要求(私有云部署、数据库定时备份与恢复、缓存管理、版本更新策略)
  • 新增蓝牙策略配置要求(物业公司配置是否强制蓝牙、医院账号审核、报表区分蓝牙/手动打卡)

技术栈选型

后端

  • 语言Java 17+
  • 框架Spring Boot 3.x
  • 数据库MariaDB 10.6+(主从复制读写分离)
  • 缓存Redis 7.x权限/字典/菜单缓存Pub/Sub用于应用内事件
  • ORMMyBatis-Plus 3.5+
  • 认证Spring Security + JWT
  • 文件存储腾讯云COS

前端Web

  • 框架Vue 3 + TypeScript
  • 构建工具Vite 5.x
  • 状态管理Pinia
  • 路由Vue Router 4
  • UI组件库Element Plus企业级后台管理场景适配度最高
  • HTTP客户端Axios
  • 图表ECharts

小程序

  • 框架uni-app + Vue 3
  • 蓝牙SDKuni-bleuni-app蓝牙低功耗插件
  • UI组件库uni-ui

基础设施

  • 部署私有云Docker + Docker Compose
  • CI/CDJenkins/GitLab CI
  • 版本管理Git

去中间件方案

不引入RocketMQ/Kafka等消息中间件采用以下替代方案

1. 权限变更实时通知

  • 方案:数据库轮询标记 + Spring Event
  • 实现:权限变更时写入sys_config表标记字段permission_version递增各服务实例定时5秒轮询该字段检测到版本变化时触发本地权限缓存刷新
  • 优势:无额外中间件依赖,实现简单可靠
  • 降级轮询间隔内最大5秒延迟对权限场景可接受

2. 异步任务处理

  • 方案Spring @Async + 自定义线程池
  • 实现:配置ThreadPoolTaskExecutor,核心线程数=CPU核心数最大线程数=2*CPU核心数队列容量1000拒绝策略CallerRunsPolicy
  • 适用场景:报表导出、消息推送、日志异步写入
  • 持久化:关键任务落库后异步执行,避免线程池丢失

3. 模块间通信

  • 方案Spring ApplicationEvent + ApplicationEventPublisher
  • 实现模块间通过Spring Event解耦事件定义在共享API模块中
  • 跨实例:结合数据库轮询标记实现(事件落库+轮询消费)
  • 适用场景:工单完成触发评价、巡检异常触发报修、低分评价通知主管

4. 定时任务

  • 方案Spring @Scheduled + 数据库分布式锁
  • 实现:@Scheduled注解声明定时任务,通过shedlock或数据库行锁保证集群内单实例执行
  • 适用场景巡检任务自动生成、保洁超时预警、合同到期提醒、Beacon心跳检测

架构设计

整体架构

客户端层Vue3 Web管理后台 | uni-app微信小程序
    ↓ HTTPS
网关层Spring Cloud Gateway / Nginx 反向代理
    ↓
应用层Spring Boot 单体应用模块化IModulePlugin
    ↓
数据层MariaDB主从读写分离| Redis缓存 | 腾讯云COS

读写分离方案

  • 实现MariaDB主从复制 + MyBatis-Plus动态数据源切换
  • 规则:写操作走主库,读操作走从库
  • 注解:自定义@ReadOnly注解标记读操作AOP切面切换数据源
  • 容错:从库不可用时自动降级到主库读取

数据库备份与恢复

  • 定时备份每日凌晨2:00全量备份mysqldump每4小时增量备份binlog
  • 备份保留全量备份保留30天增量备份保留7天
  • 备份存储:私有云本地磁盘 + 异地备份服务器
  • 恢复流程:全量恢复 + binlog重放RTO<2小时RPO<4小时
  • 定期演练:每季度执行一次恢复演练

蓝牙策略配置(新增)

  • 配置方:物业公司管理员
  • 审核方:医院账号
  • 配置项:各场景是否强制蓝牙连接(巡检打卡/巡检拍照/保洁打卡/保洁拍照/考勤打卡)
  • 数据模型:新增sys_bluetooth_policy配置表 + sys_bluetooth_policy_audit审核表
  • 打卡记录标记:所有打卡记录区分check_typeBLUETOOTH/MANUAL后台列表和报表明确显示
  • 降级逻辑非强制蓝牙场景下蓝牙失败可直接手动打卡记录check_type=MANUAL强制蓝牙场景下蓝牙失败进入补录模式

性能要求

  • API平均响应时间 < 300msP99 < 500ms
  • 列表查询响应 < 500ms含分页
  • 报表生成 < 5s单月数据
  • 并发支持单实例100 QPS水平扩展
  • 蓝牙校验扫描超时3秒距离计算<100ms

开发规范

  • API规范遵循已有05-API接口规范.md
  • 代码分层Controller → Service → RepositoryDTO/VO/Entity严格分离
  • 命名规范:包名小写、类名大驼峰、方法名小驼峰、常量全大写下划线
  • 数据库规范遵循已有04-核心数据模型.md公共字段约定
  • 模块开发遵循已有06-扩展接口规范.md IModulePlugin规范
  • 审计日志所有写操作自动记录使用AOP切面统一处理
  • 单元测试核心业务Service覆盖率 >= 70%