Skip to content

开发记录

2026-05-28

数据库迁移重置

  • 删除 3 个过期迁移文件,用 prisma migrate diff 生成干净基线迁移
  • 数据库完全重置后通过 prisma db push 同步 12 张表
  • 修复 prisma.config.ts seed 命令缺少 dotenv/config 的问题
  • 执行 seed 写入初始数据(admin 用户 + 2 角色 + 2 产品)

Organization 模块补全

  • OrganizationService 新增 findById 方法
  • 创建 OrganizationController:8 个 REST 端点(组织 CRUD + 房间管理)
  • DTO:CreateOrgDto / UpdateOrgDto / CreateRoomDto
  • 编写 Service 单测 12 个、Controller 单测 8 个,全部通过

Permission 模块全新建

  • 新建 PermissionService:CRUD + 权限树构建(递归)
  • 新建 PermissionController:6 个端点(含 GET /tree)
  • 校验:重复 code / 父权限存在性
  • 编写 Service 单测 9 个、Controller 单测 6 个,全部通过

OTA Task 模块全新建

  • 新建 OtaTaskService:创建升级任务 + MQTT 通知下发 + 分页列表 + 详情
  • 校验:固件存在 / 设备存在 / 产品匹配
  • 新建 OtaTaskController:POST / GET / GET:id
  • 编写 Service 单测 7 个、Controller 单测 3 个,全部通过

设备状态改为 Redis TTL 驱动

  • 设备在线状态由属性上报消息驱动(非 webhook)
  • 属性上报 → setOnline() → Redis key TTL=120s
  • 2 分钟无上报 key 自动过期,设备视为离线
  • DeviceService.findAll 从 Redis 获取实时在线状态,懒同步 PostgreSQL
  • MqttController webhook 仅记录连接日志,不再驱动状态变更

设备指令追踪改为 Redis

  • pendingCommands Map 替换为 pendingTimers(仅存定时器)
  • Redis key device:cmd:{msgId} 带 TTL,进程崩溃自动清理
  • confirmCommand 同步清理 Redis key

Web 前端清理

  • 删除 7 个不存在后端 API 的模块(menu/dept/dict/config/log/notice/statistics)
  • 删除 8 个未接入路由的视图页面
  • 删除 DictSelect / DictTag / NoticeDropdown 组件
  • 删除 dict store,修复 permission/user store 残留引用

测试统计

  • 新增 45 个单元测试(Organization 20 + Permission 15 + OtaTask 10)
  • 现有测试无回归

文档更新

  • 功能状态/开发计划/开发记录同步更新
  • 开发路线移入开发进度目录

2026-05-27

文档框架全面完善

  • 架构与协议 12 份文档完成:系统架构、业务流程(6个时序图)、技术选型、数据模型(10实体)、物模型/MQTT/API协议、EMQX配置、WebSocket、OTA、缓存策略
  • 软件部分 11 份文档完成:后端5份(含MQTT服务设计、固件OTA服务)、小程序3份(项目总览/界面交互设计/技术实现)、Web后台3份
  • 小程序/Web 界面与交互设计含 ASCII 线框图原型
  • 数据库设计从4表扩展至12表(新增RBAC、Organization/Room、Firmware、OtaTask)
  • 设备影子存储矛盾解决:两级存储(Redis热缓存+PostgreSQL权威)
  • 所有交叉引用、章节编号、文件命名统一

硬件文档新增

  • EnvSense-Box 环境传感器产品概述+硬件设计+软件设计文档
  • EnvSense-Box 代码仓库推送至 GitHub (ESP32+四类传感器+AHT20/BMP280/BH1750/SC8CO2)
  • EnvSense-Box README 从车载ROS改为家庭环境监控定位

开发指南更新

  • 设备接入指南重写:Arduino → ESP-IDF 示例(cJSON+esp_mqtt)
  • 新增 ESP-IDF 环境搭建指南
  • 编码规范新增 C/ESP-IDF 章节
  • 功能状态/开发计划/开发记录同步更新
  • 新增 EnvSense-Box 接入示例

产品定义更新

  • 术语表新增 Organization/Room 术语
  • 竞品分析目录调整为竞品参考
  • 功能需求文档完整

2026-05-16

文档审查与修复

  • MQTT Topic 统一:增加设备注册流程、双ID体系、固件兼容性说明
  • API 规范补充 IoT 接口:Device/Product/Telemetry CRUD
  • 物模型命名统一:actionsservices
  • 补充业务错误码体系 (15+ 错误码)
  • 数据库设计补充 IoT 表 (Product/Device/DeviceLog)
  • InfluxDB 增加存储策略和降采样规则

文档系统全面完善

  • 新增 API 接口规范 (18 个端点详解)
  • 新增编码规范 (TS/Vue3/数据库/Git)
  • 新增前端开发指南 (Web + UniApp)
  • 新增设备接入指南 (ESP32 示例)
  • 新增测试策略文档
  • 新增部署详细流程
  • 新增四路继电器硬件文档 (产品/硬件/软件)
  • 新增开发路线板块

文档重构

  • 将 8 个分散章节重组为 8 统一编号章节
  • 删除 11 个空占位文件
  • 统一项目名称 IoTForgeX → YunStack-IoT
  • 修复所有死链接

2026-05-15

项目初始化

  • 建立 YunStack-IoT 项目根目录
  • 创建 CLAUDE.md 项目配置文件
  • 确立 4 个子项目结构

文档站点部署

  • 配置 Cloudflare Pages
  • 修复构建错误 (死链接)
  • 首次成功部署

2024-05 ~ 2025-03

四路继电器固件 v2.0

  • 重构为组件化架构 (relay/key/ch423)
  • CH423 IO 扩展芯片驱动封装
  • NVS 断电状态保存
  • 按键长按翻转控制

后端基础框架 (历史)

  • NestJS 项目搭建
  • JWT 认证 + RBAC 权限
  • 用户/角色/菜单/部门 管理
  • MQTT 客户端封装
  • Redis/InfluxDB 基础集成
  • Swagger API 文档

Web 管理后台 (历史)

  • Vue3 + Element Plus 框架搭建
  • 完整的系统管理模块 (用户/角色/菜单/部门/字典/配置/通知/日志)
  • Pinia 状态管理
  • 权限路由

小程序 (历史)

  • UniApp Vue3 项目搭建
  • 多种微信登录方式
  • 个人中心/设置/反馈

硬件 (历史)

  • IHE-RM-04 四路继电器 v1.0 设计
  • PCB v1.0 (KiCad) → v2.0 (立创EDA)
  • 外壳结构设计

2024-03-30

四路继电器项目启动

  • IHE-RM-04 硬件设计文档首次建立
  • ESP32-C3 平台选型确认
  • 硬件需求定义