Commit Graph

126 Commits

Author SHA1 Message Date
ozh 82aa7d6925 feat(event): 告警列表/详情接真实字段与新增告警详情页
- HomeAlarm 类型按 2026-09-23 联调实测重写:content/createTime/
  deviceAlias/otherInfo 扩展等,status 枚举确认 0-待处理 1-已忽略
  2-已处理 3-自动处理;splitAlerts 待处理判定改 status===0,单测同步
- 新增 pages/event/feature/detail 告警详情页(getAlarmDetail、状态徽章、
  设备/房间/时间/扩展信息行),路由与分包注册,事件卡片与首页告警
  点击均跳详情
- 事件页/首页改用 resolveCurrentHome 共享当前家庭,卡片展示 content、
  deviceAlias 优先、两行截断与红点行标
- 家庭圈成员行点击改群昵称(showModal editable + updateMemberNickName),
  转让/改昵称入口放开给所有成员(成员响应无 userId,isOwner 不可靠,
  由后端 400 校验兜底)
- ListRow value 推到行尾并支持 valueClass 自定义样式
2026-09-23 15:18:07 +08:00
ozh 6ec6fc7138 feat(device): 跌倒状态卡图标替换为产品状态图
- 新增 src/assets/event/ 三张状态图(fall-alert 摔倒报警 / fall-suspect
  疑似摔倒 / fall-cleared 解除摔倒)
- FallStatusCard 按 alarmType 映射产品图,未匹配状态(驻留/正常/离线)
  仍回退 ⌁ 占位字符
2026-09-23 10:16:39 +08:00
ozh 5e00280d2c refactor(api): 接口路径抽至 src/constants/endpoints 集中维护
- 新增 endpoints.ts:HOME/CARE_MEMBER/HOME_ROOM/HOME_DEVICE/HOME_ALARM/
  USER/THIRD_PLATFORM 七组路径 + GATEWAY_PREFIX(user/biz 网关分组)
- src/api/* 全部接入常量,http/client.ts 改用 GATEWAY_PREFIX.user 判定网关
- transferOwner 加上 TransferOwnerParams 类型约束(替代 Record<string,unknown>)
- FallStatusCard 接收 alarmType(2026-09-22 实测字段),status 保留兼容
- 家庭圈详情页"转让群主"入口接通:仅群主可见,选人 Modal + 接口调用
- request.get/post params 类型放宽到 object 以匹配新实参/结构
- 新增 tests/unit/home/transferOwner.spec.ts(路径/业务码/202 三分支)
2026-09-22 17:56:31 +08:00
ozh de8df8bfcd refactor(device): 移除设备卡片未使用的离线样式类
iconOffline 在引入产品图后实际未生效(产品图在 card 父级判断离线条带
处理),删除 SCSS 类与 cardTop 上对应的拼接 className
2026-09-22 14:42:21 +08:00
ozh ff15db2f72 feat(device): ED719 跌倒检测独立卡片 + ED713 体征越阈告警
- 新增 FallStatusCard 组件与 FALL_STATUS_MAP 枚举(3101~3104 跌倒/疑似/
  解除/驻留),ED719 设备分支渲染独立状态卡,跳过体征面板与心率波形拉取
- ED713 体征新增医学阈值告警:心率 <60 或 >100 BPM、呼吸率 <12 或 >24
  /min 数值转红;频繁活动/无人/运动/不在床枚举态转橙
- 新增 FallDetectSigns 接口与 HomeDevice.runTimeInfo 联合类型
- 详情页样式补 heartValueDanger / metricValueWarning / metricValueDanger
2026-09-21 18:02:36 +08:00
ozh 40783ccabe feat(auth): 冷启动登录态校验 + 设备/房间列表样式打磨
- 新增 getLoginInfo(/v0/app/users/getLoginInfo)冷启动校验 token 有效性,
  http 层将 /v0/ 前缀路由到 user 服务;登录页 useDidShow 恢复 userInfo
  后落地,restoring 态防并发登录
- 详情页指标卡配色从数值移到标签(对齐 web 端 MetricCard),
  心率图标加底、设备信息卡补"设备信息"标题
- 设备列表新增"我的设备 N"分区标题,功能入口图标加圆底
- 房间列表改整卡圆角+行内分隔,删除按钮改浅红胶囊
- global.d.ts 补 png/jpg 模块声明
2026-09-21 17:08:52 +08:00
ozh 9f3ea3d82b feat(device): 设备卡片图标替换为型号产品图
- 新增 ED713/ED719/EB15 产品图资源,设备列表卡片图标按型号映射展示
  (subDeviceType 优先、deviceModel 兜底,EB15 为 EP832 网关子设备)
- 未匹配型号回落原字符图标并打印型号字段日志便于核对后端值
2026-09-21 15:58:44 +08:00
ozh a4b2e13a8e refactor(device): 解绑入口从列表卡片底部上移至详情页
- 设备列表移除卡片底部"解绑"通栏按钮与配套样式,
  解绑操作改为进入详情页底部 ListRow 触发,避免与卡片点击冲突
- 详情页新增 confirmUnbind/showModal 防误绑流程,成功后停轮询
  返回列表页;unbindHomeDevice 调用从列表页迁入详情页
2026-09-21 15:41:56 +08:00
ozh 213d61bbf6 feat(home): 当前家庭选择持久化,三页共享恢复逻辑统一
- 新增 store/currentHome.ts:storage 持久化 homeId,resolveCurrentHome
  优先恢复已存选择、失效回落第一条并重新落盘
- 设备列表/房间管理/添加设备三页统一走 resolveCurrentHome,
  切换家庭时同步 setCurrentHomeId
- 详情页隐藏 BLE 网络配置/设备配置入口(联调未完成),清理无用跳转函数
- 心率波形纵轴最小跨度 20 BPM,避免小波动被归一化放大成满幅曲线
2026-09-21 14:42:36 +08:00
ozh 05d46368d1 feat(device): 详情页接专用接口——单设备详情轮询 + 历史心率波形
- homeDevice.ts 新增 getHomeDeviceDetail(GET /ylHomeDevice/get/{installId},实测含 runTimeInfo)
  与 getVitalRecords(web 端同源 /iot/propertyRecord/getPropertyRecords,按 deviceName 查近一天倒序)
- 详情页轮询从「整列表再过滤」改为单设备详情接口,减小轮询载荷
- 恢复 VitalWave 心率波形 Canvas:历史 heartRate 序列按时间正序绘制贝塞尔平滑曲线 + 渐变填充
- 轮询生命周期 useDidShow 启停 / useDidHide 暂停,页面压栈后台不空跑
2026-09-18 17:36:58 +08:00
ozh d7bd20eb79 feat(device): 设备详情接入实时体征——EventChannel 传设备对象 + 3s 轮询刷新
- HomeDevice 补 runTimeInfo.properties 体征字段类型(2026-09-18 联调实测)
- 列表页跳详情改用 Taro.navigateTo 原生调用,EventChannel emit 整个 device 对象
- 详情页 getOpenerEventChannel 接收首屏零延迟渲染;setInterval 3s 轮询列表接口
  按 installId 定位刷新(对齐 web 端 VitalSignsDashboard SWR refreshInterval=3000)
- 体征六指标卡:呼吸率/体动/运动状态/在床状态/人体状态/人体位置,
  枚举文案复用 MOVE_STATE_MAP/BODY_STATUS_MAP/ONBED_STATUS_MAP
- 详情信息行新增安装房间
2026-09-18 17:24:48 +08:00
ozh ccca973d62 feat(build): 组件按需注入+分包+生产关 sourcemap,主包压至 0.42M
- app.config.ts 开启 lazyCodeLoading=requiredComponents
- 设备详情/添加/配置/BLE 迁移至 pages/device/feature 分包,家庭圈系列独立分包
- 路由常量同步分包路径;prod 构建关 devtool 剔除 .map
- 生产实测:主包 426K(目标 <1.5M 达成),family 分包 35K、device/feature 86K
- 附带:未登录业务码 202 接入踢登录(网关实测),房间/设备响应字段按联调实测修正
2026-09-18 17:07:26 +08:00
ozh 6377e53ecb feat(room): 房间管理入参类型化并支持使用场景选择(add/update 带 sence 枚举) 2026-09-17 14:44:26 +08:00
ozh cb2dc3d2aa feat(device): 设备列表/添加/解绑/房间管理接入真实接口,移除设备与场景 mock 层 2026-09-17 14:40:01 +08:00
ozh 5761a5fed2 feat(event): 首页/消息中心接入告警列表真实接口,移除事件 mock 层 2026-09-17 14:30:53 +08:00
ozh 7bef729e93 feat(family): 邀请体验优化——整行可点拉起分享、分享文案带邀请人、受邀直达自动加入
- 邀请行改为 open-type=share 的 Button 铺满整行,整行任意位置可点,视觉与普通行一致
- 分享标题带邀请人昵称:「XX 邀请你加入家庭圈「XX」」
- 接收方从分享卡进入:未登录先登录回跳,已登录且非成员时自动调 joinHome 完成加入,无需手动点击
2026-09-17 14:19:59 +08:00
ozh 0ef1f490e5 chore: 开发者工具关闭域名校验(urlCheck=false),放行内网网关联调 2026-09-17 14:09:11 +08:00
ozh a027c6ce2f feat(auth): 分享卡直达详情页未登录时先跳登录,登录后回跳原页面
- 家庭详情页 useDidShow 检测无 token 时 reLaunch 登录页并携带 redirect 参数
- 登录页登录成功/已有 token 时优先回跳 redirect 目标,无参数仍进首页
2026-09-17 14:05:36 +08:00
ozh 7f82b2f132 feat(family): 邀请他人改为微信转发分享(open-type=share + useShareAppMessage)
分享卡落到家庭详情页并携带 invite=1 标记,标题带家庭名
2026-09-17 13:59:13 +08:00
ozh 4b34910b4d chore(family): 关爱对象行未填联系人时不再显示占位文案 2026-09-17 11:58:25 +08:00
ozh a1901b5611 feat(family): 关爱对象详情页(查看/删除/编辑),列表行接入跳转
- 新建 pages/family/contact/detail:getCareMemberDetail 展示姓名/身份证脱敏/地址/紧急联系人,删除走确认弹窗 + deleteCareMember
- add 页支持编辑模式:memberId 参数预填原数据,save 带 memberId 走修改
- 家庭详情页关爱对象行加箭头跳转详情
2026-09-17 11:56:35 +08:00
ozh 2832053569 fix(family): 成员列表字段按联调实测修正(userNickName/role=OWNER 群主标识) 2026-09-17 11:40:42 +08:00
ozh f68bd299a7 feat(family): 详情页接入关爱对象列表与成员列表真实渲染
- 详情页新增「关爱对象」区:getCareMemberList 拉取并渲染姓名+联系人摘要,上限判定改以实际列表长度为准
- 成员区 HomeMember 主键按 transferOwner 入参修正为 memberId,显示名兼容 nickName/name 兜底
- 两个列表空态给出提示文案,不再渲染空白卡片
2026-09-17 11:38:28 +08:00
ozh 83a211ebd6 fix(family): 列表字段按联调实测修正(name/careMemberCount),修复卡片渲染空白 2026-09-17 11:16:49 +08:00
ozh e70aa7e3e6 feat(mine): 未登录时点头像区跳转登录页,副标题显示「点击登录」 2026-09-17 10:53:49 +08:00
ozh 5582fbb863 fix(http): 网关分服务前缀——登录接口走 /api/user,业务接口走 /api/biz 2026-09-17 10:51:55 +08:00
ozh 6889e9b4fa feat(family): 家庭圈列表/详情/关爱对象切换真实后端接口,移除 mock 数据层 2026-09-16 17:37:21 +08:00
ozh b1a9bef903 feat(mine): 个人中心改为展示登录返回的真实用户信息,移除 mock 数据源 2026-09-16 17:13:58 +08:00
ozh 86234d4f1f fix(login): 登录 token 从响应头 Token 提取落地(后端 Content.code 恒返 null) 2026-09-16 17:11:27 +08:00
ozh d3f9a6ae54 fix(http): 鉴权请求头改为自定义 token 头(后端联调约定,响应头 Token 同名下发) 2026-09-16 17:07:26 +08:00
ozh 87e4031fff fix(login): needUserInfo 授权改用 wx.getUserInfo(后端文档约定),暂缓手机号授权流程 2026-09-16 15:28:49 +08:00
ozh 026578dfbd fix(login): 手机号授权透传新版 code 令牌,兼容 iv/encryptedData 两种回传形态 2026-09-16 15:19:09 +08:00
ozh 10905df143 fix(login): noMobile 阶段后端将 openId 放 bindKey 字段返回,纳入兜底链 2026-09-16 15:15:48 +08:00
ozh 34a3887b2d fix(login): noMobile 响应缺 openId 时从本地缓存兜底,避免授权链路断开 2026-09-16 15:12:04 +08:00
ozh 96c2255c10 feat(login): 接续 noMobile 手机号授权注册步骤,登录链路全量调试日志 2026-09-16 10:59:38 +08:00
ozh 46c517ff42 fix(login): 适配首次登录 needUserInfo 二次授权流程,修复响应结构不符崩溃 2026-09-16 10:41:59 +08:00
ozh bd71d52c7f fix(auth): 守卫改到 navigation 统一出口,修复拦截器误改写请求 url 2026-09-15 17:26:47 +08:00
ozh 55c3ab8874 fix(http): 网络异常透传微信 errMsg,暴露真实失败原因(域名拦截/断网/超时) 2026-09-15 16:05:58 +08:00
ozh bb9f869a3e chore(dev): 关闭开发者工具域名校验,放行内网测试接口联调 2026-09-15 16:04:46 +08:00
ozh f9d0e3ba7f feat(auth): 开启路由级登录拦截,未登录访问受保护页重定向登录页 2026-09-15 16:04:40 +08:00
ozh 9581a991be feat(api): 家庭/房间/设备/告警接口骨架锁定路径 2026-09-15 13:56:07 +08:00
ozh f81d80f8ec fix(login): 登录成功跳转失败时恢复按钮可重试 2026-09-15 13:54:45 +08:00
ozh 90e6262c89 feat(login): 登录页改为微信一键登录并移除账密表单 2026-09-15 12:50:55 +08:00
ozh 44918644ef feat(login): 微信一键登录流程编排与单测 2026-09-15 12:43:28 +08:00
ozh 9871c11476 feat(auth): 微信小程序登录接口 wxMiniappLogin 替换 mock 2026-09-15 12:33:24 +08:00
ozh c65d179333 feat(store): authSlice 扩展 userInfo 并持久化 token 2026-09-15 11:57:54 +08:00
ozh 884a7b8343 fix(http): 401 踢登录防陈旧会话误清与跳转失败兜底 2026-09-15 11:47:18 +08:00
ozh 3adaaa65e2 feat(http): 登录态失效统一清登录态并踢回登录页 2026-09-15 11:34:18 +08:00
ozh 9fbe9266eb feat(http): 适配后端大写 envelope 与测试环境 BASE_URL 2026-09-15 11:18:26 +08:00
ozh fb66a9efe7 feat(http): 错误类型支持字符串业务码并新增 AuthExpiredError 2026-09-15 11:06:26 +08:00