fastbee/CLAUDE.md
2026-03-21 17:27:38 +08:00

174 lines
9.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# CLAUDE.md
本文件为 Claude Code (claude.ai/code) 在此代码库中工作时提供指导。
## 项目概述
FastBee 是一个基于若依框架构建的物联网平台(v3.8.5)。后端为多模块 Spring Boot 应用,前端包含三个独立应用。所有 Java 包名使用 `com.fastbee`。
## 构建命令
### 后端(Java/Maven)
```bash
# 构建所有模块
mvn clean package
# 跳过测试构建
mvn clean package -DskipTests
# 构建指定模块
mvn clean package -pl fastbee-admin -am -DskipTests
```
可运行的 JAR 文件生成在 `fastbee-admin/target/`。通过 `fastbee.sh start|stop|restart|status` 启动/停止服务。
### 前端 - yack-web(Vue 2,管理后台)
```bash
cd yack-web
npm install
npm run dev # 开发服务器(代理到 localhost:8080)
npm run build:prod # 生产环境构建
npm run lint # ESLint 代码检查
```
### 前端 - yack-view(Vue 3 + Vite,低代码可视化)
```bash
cd yack-view
npm install
npm run dev # Vite 开发服务器
npm run build # 生产环境构建
npm run lint # ESLint 代码检查
# 或使用 Makefile:
make dev
make dist
```
### 前端 - yack-app(UniApp 移动端)
```bash
cd yack-app
npm install
# 通过 HBuilderX 或 uni-app CLI 构建
```
## 架构说明
### 后端模块结构
```
fastbee-admin/ # Spring Boot 入口(端口 8080),Web 层
fastbee-framework/ # 安全配置、拦截器、核心框架装配
fastbee-common/ # 公共工具类、领域模型、注解、常量
fastbee-open-api/ # REST API 控制器(对外暴露的接口)
fastbee-service/
fastbee-iot-service/ # IoT 业务逻辑(设备、产品、规则)
fastbee-system-service/ # 系统管理(用户、角色、菜单)
fastbee-server/ # 基于 Netty 的协议服务器
base-server/ # 抽象服务器基类
iot-server-core/ # IoT 服务器核心逻辑,消息分发
mqtt-broker/ # 内嵌 MQTT Broker(EMQX 的替代方案)
http-server/ # HTTP 设备接入服务器(端口 8081)
tcp-server/ # TCP 服务器(端口 8888)
coap-server/ # CoAP 服务器(端口 5683)
sip-server/ # SIP 服务器
boot-strap/ # 服务器启动引导
fastbee-protocol/ # 协议编解码
base/ # 协议抽象层
collect/ # 数据采集协议实现
fastbee-iot-data/ # IoT 时序数据存储(支持 TDengine)
fastbee-mq/ # RocketMQ 消息队列集成
fastbee-notify/ # 多渠道通知系统
fastbee-record/ # 设备数据记录/持久化
fastbee-plugs/
generator/ # 代码生成器(Velocity 模板)
quartz/ # 定时任务管理
ruleEngine/ # LiteFlow 规则引擎(IoT 场景自动化)
oss/ # 对象存储(S3/阿里云 OSS)
mqtt-client/ # MQTT 客户端插件
oauth/ # OAuth 2.0(JustAuth)
pay/ # 支付集成
http/ # Forest HTTP 客户端配置
```
### 关键架构模式
**数据流(设备 → 平台):** 设备 → 协议服务器(Netty,端口因协议而异)→ `iot-server-core` 消息分发器 → RocketMQ → `fastbee-record` 持久化 → MySQL/TDengine。实时推送通过 WebSocket 发送至前端。
**MQTT Broker 模式:** 通过 `server.broker.enabled` 配置 — `true` 使用内嵌 Netty Broker(端口 1883/8083);`false` 使用外部 EMQX Broker。
**规则引擎:** LiteFlow 规则链存储在 `iot_scene` 表,脚本存储在 `iot_script` 表。规则在启动时从数据库加载,支持可选的轮询刷新机制。
**多数据源:** 动态数据源(主 MySQL + 可选 TDengine `taos` 数据源)。TDengine 默认禁用(`enabled: false`)。
**认证方式:** 通过 `Authorization` 请求头传递 JWT Token。Token 配置在 `application.yml` 的 `token:` 节点下。
**API 文档:** 服务运行时可通过 `/swagger-ui/index.html` 访问 Swagger/OpenAPI 文档。
### 前端架构
- **yack-web**:Vue 2 + Element UI + Vuex + Vue Router。管理后台,消费后端 REST API。`vue.config.js` 中的代理配置指向 `localhost:8080`。
- **yack-view**:Vue 3 + TypeScript + Vite + Naive UI + Pinia。独立的低代码可视化设计器(基于 GoView)。单独部署,通常挂载在 Nginx 的 `/view/` 路径下。
- **yack-app**:UniApp(Vue 2 语法)iOS/Android 移动端,通过 MQTT.js 和 HTTP 与平台通信。
## 运行时配置
`application-dev.yml` 关键配置:
- MySQL:`localhost:3306/fastbee`,用户名 `root`,密码 `fastbee`
- Redis:在 `application-dev.yml` 中单独配置(Redisson 单节点模式)
- 激活的 Profile 在 `application.yml` 中设置:`spring.profiles.active: prod`(本地开发时改为 `dev`)
本地开发请切换至 dev profile —— prod profile 需要生产环境基础设施支持。
## 数据库
SQL 初始化脚本位于 `sql/` 目录。主数据库:`fastbee`。最新完整脚本:`sql/yack-20260316.sql`(共 117 张表)。
### 数据库通用约定
- **多租户**:大多数 IoT 表含 `tenant_id` / `tenant_name` 字段
- **审计字段**:`create_by`、`create_time`、`update_by`、`update_time`
- **软删除**:`del_flag`(0=正常,2=删除)
- **国际化**:单独的 `*_translate` 表存储多语言翻译
- **复杂数据**:物模型、配置等使用 JSON 列存储
### 主要表分类
**告警监控**:`iot_alert`(告警定义)、`iot_alert_log`(告警历史)、`iot_alert_notify_template`、`iot_alert_scene`、`iot_device_alert_user`
**设备管理**:`iot_device`(设备注册表)、`iot_device_group`、`iot_device_record`(导入/分配/回收历史)、`iot_device_share`(设备共享权限)、`iot_device_user`(设备归属)、`iot_keep_user`(运维人员)
**产品管理**:`iot_product`(产品定义)、`iot_category`(产品分类,层级结构)、`iot_things_model`(物模型,1380+ 条)、`iot_things_model_template`(物模型模板)、`iot_product_authorize`(授权码)
**网关与子设备**:`iot_sub_gateway`(网关-子设备关系)、`iot_product_sub_gateway`(产品级网关-子产品映射)
**Modbus 配置**:`iot_modbus_config`、`iot_modbus_job`(轮询任务)、`iot_modbus_params`(产品级参数模板)、`iot_product_modbus_job`、`iot_var_temp`(采集变量模板)、`iot_var_temp_salve`
**规则引擎**:`iot_scene`(场景自动化,LiteFlow 规则链)、`iot_script`(规则脚本)、`bridge`(数据桥接端点:HTTP/MQTT/数据库)、`iot_script_bridge`、`iot_device_job`(设备定时任务)
**场景编排**:`scene_model`(场景管理)、`scene_model_data`(数据源绑定)、`scene_model_device`、`scene_model_tag`(输入变量)、`scene_tag_points`(计算变量)、`iot_scene_device`、`iot_scene_script`
**数据日志**:`iot_device_log`(设备事件日志)、`iot_event_log`、`iot_function_log`(服务调用日志)、`iot_device_air_log`(Air780 上报)、`iot_simulate_log`(模拟设备日志)
**固件升级**:`iot_firmware`(固件版本)、`iot_firmware_task`(升级任务)、`iot_firmware_task_detail`(逐设备状态跟踪)
**SCADA 与可视化**:`iot_goview_project`(GoView 可视化项目)、`iot_goview_project_data`、`scada`(SCADA 页面)、`scada_component`(UI 组件)、`scada_device_bind`(组件-设备绑定)、`scada_echart`、`scada_gallery`(图标库,3896+ 条)、`scada_model`(3D 模型)
**SIP 与媒体**:`sip_device`(摄像头/录像机)、`sip_device_channel`、`sip_config`、`iot_sip_relation`、`media_server`(流媒体服务器)
**OAuth 与认证**:`oauth_client_details`(支持 DuerOS/AliGenie/小米)、`oauth_access_token`、`oauth_refresh_token`、`oauth_approvals`、`oauth_code`、`sys_auth_user`(第三方登录)
**通知系统**:`notify_channel`(邮件/短信等渠道)、`notify_template`(消息模板)、`notify_log`(发送历史)
**系统管理(若依 RBAC)**:`sys_user`、`sys_role`、`sys_menu`(3430+ 菜单项)、`sys_dept`(117+ 部门)、`sys_post`、`sys_user_role`、`sys_role_menu`、`sys_role_dept`、`sys_config`、`sys_dict_type`(166+ 类型)、`sys_dict_data`(738+ 条)、`sys_oper_log`、`sys_logininfor`、`sys_job`、`sys_job_log`、`sys_notice`、`sys_client`、`sys_user_relation`
**定时任务(Quartz)**:`qrtz_job_details`、`qrtz_triggers`、`qrtz_cron_triggers`、`qrtz_simple_triggers`、`qrtz_fired_triggers`、`qrtz_scheduler_state`、`qrtz_locks` 等共 11 张表
**对象存储**:`oss_config`(S3/阿里云 OSS 配置)、`oss_detail`(文件上传历史)
**代码生成**:`gen_table`、`gen_table_column`
**其他**:`iot_group`(设备分组)、`iot_protocol`(支持的通信协议)、`iot_social_platform`(第三方登录平台)、`app_language`(4 种语言)、`app_preferences`(用户偏好)、`command_preferences`(指令预设模板,120+)、`order_control`(指令权限控制)、`news`/`news_category`(新闻资讯)
## 代码生成
代码生成器模块(`fastbee-plugs/generator`)使用 Velocity 模板生成 Java + Vue 的 CRUD 脚手架代码。模板位于 `fastbee-plugs/generator/src/main/resources/vm/`。