开发记录
2026-05-28
数据库迁移重置
- 删除 3 个过期迁移文件,用
prisma migrate diff生成干净基线迁移 - 数据库完全重置后通过
prisma db push同步 12 张表 - 修复
prisma.config.tsseed 命令缺少 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
- 物模型命名统一:
actions→services - 补充业务错误码体系 (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 平台选型确认
- 硬件需求定义
