long
|
4a17fe8a0c
|
调整综合转化统计医生维度口径
|
2026-07-02 11:55:15 +08:00 |
|
long
|
e5959fd89a
|
1
|
2026-06-11 14:26:41 +08:00 |
|
long
|
f7e52bcafc
|
Merge branch '20260610-long'
|
2026-06-10 14:37:44 +08:00 |
|
long
|
2e59e883b8
|
订单详情优化
|
2026-06-10 14:37:32 +08:00 |
|
long
|
af9bd05bb4
|
update资源分发小程序
|
2026-06-09 10:31:18 +08:00 |
|
long
|
8a1a9ea0ca
|
Merge branch '20260604-long'
|
2026-06-09 10:13:49 +08:00 |
|
long
|
9e019708f2
|
Merge branch 'master' of https://gitee.com/v_cms/zyt
|
2026-06-09 10:05:49 +08:00 |
|
long
|
2712c262bd
|
1
|
2026-06-09 10:05:44 +08:00 |
|
long
|
7a4973470c
|
Merge branch 'codex/latest-appointment-filter'
|
2026-06-06 15:59:19 +08:00 |
|
long
|
e79f3190b8
|
feat: 支持患者列表按最近挂号筛选
- tcm.diagnosis/lists 新增最近有效挂号时间区间与渠道筛选,lists/count 共用过滤逻辑
- 诊单患者列表更多筛选增加最近挂号时间和渠道,并与顶部挂号快捷筛选互斥
- 明确 daterange-picker change 事件转发,列表补充最近挂号渠道摘要展示
|
2026-06-06 15:58:23 +08:00 |
|
long
|
1811abc794
|
完善支付单创建方式链路
|
2026-06-06 15:25:16 +08:00 |
|
long
|
07abf2abca
|
支付方式完善
|
2026-06-05 18:24:41 +08:00 |
|
long
|
c76bd5416a
|
代收金额快照
|
2026-06-05 17:35:49 +08:00 |
|
long
|
b9486f32fe
|
Merge branch '20260604-long'
|
2026-06-05 12:02:40 +08:00 |
|
long
|
07018598ad
|
add
素材分发 增加用户备注
add_asset_user_remark.sql
|
2026-06-05 12:02:35 +08:00 |
|
long
|
e6209c8912
|
Merge branch '20260604-long'
|
2026-06-04 17:37:29 +08:00 |
|
long
|
123e9075dd
|
处方增加禁用修改
|
2026-06-04 15:11:16 +08:00 |
|
long
|
cdf8b1f76d
|
udpate
|
2026-06-04 11:46:32 +08:00 |
|
long
|
ff61e815d8
|
时间范围筛选优化
|
2026-06-04 10:51:35 +08:00 |
|
long
|
6b528c34c8
|
add DoctorNote
诊单 增加医生备注入口
|
2026-06-03 15:18:12 +08:00 |
|
long
|
07dacbcb28
|
Merge branch 'master' of https://gitee.com/v_cms/zyt
|
2026-06-02 14:20:26 +08:00 |
|
long
|
d364fe506a
|
1
|
2026-06-02 14:20:20 +08:00 |
|
long
|
1dd5133202
|
Merge branch '20260601-long'
|
2026-06-01 18:30:37 +08:00 |
|
long
|
51b34a98b5
|
Update list.vue
|
2026-06-01 18:30:29 +08:00 |
|
long
|
450be5852f
|
Merge branch '20260601-long'
|
2026-06-01 17:02:47 +08:00 |
|
long
|
3c35ab67cd
|
update
h5 :问诊列表
add 完成诊单 +医生备注
|
2026-06-01 17:00:38 +08:00 |
|
long
|
576ab05681
|
Merge branch 'mini-sport'
|
2026-05-29 18:17:58 +08:00 |
|
long
|
132a17b946
|
update
|
2026-05-29 18:17:44 +08:00 |
|
long
|
c589bfa647
|
1
|
2026-05-29 15:59:14 +08:00 |
|
long
|
e4312ab5d1
|
update
|
2026-05-29 12:12:07 +08:00 |
|
long
|
7f4fad7b62
|
update
|
2026-05-29 12:05:22 +08:00 |
|
 longandCursor
|
9b5cd5b2b9
|
优化握力环训练页:内联视频舞台并修复小程序兼容与完成浮层布局。
将示范视频从自定义组件移至页面主体,避免 mp 端 vOn/ref 崩溃;奖励特效改为 prop 信号驱动,完成弹层移出 page 容器修复右侧裁切,并修正后台音频配置与 CLI 热重载监听。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-29 10:59:17 +08:00 |
|
long
|
9f3db8f281
|
update
|
2026-05-28 17:44:30 +08:00 |
|
long
|
6cb8688587
|
Merge branch 'feat/vite-build'
|
2026-05-28 15:28:16 +08:00 |
|
long
|
0e5b5beb9c
|
增加 cli 启动命令
npm run dev:mp-weixin
|
2026-05-28 15:27:45 +08:00 |
|
long
|
8d635bb7ed
|
update
|
2026-05-28 15:10:06 +08:00 |
|
long
|
6efc340bd8
|
Merge branch 'master' of https://gitee.com/v_cms/zyt
|
2026-05-28 14:33:38 +08:00 |
|
long
|
c435e6ae4e
|
Update main.js
|
2026-05-28 14:33:31 +08:00 |
|
long
|
afd88714ec
|
Merge branch 'mini-sport'
|
2026-05-28 11:49:41 +08:00 |
|
long
|
bb21825c16
|
ADD total_open_rate
增加开口率
|
2026-05-28 11:49:23 +08:00 |
|
 longandClaude Opus 4.7
|
c3e4dfa479
|
feat(training): 握力环训练全面优化 - 音效集成 + 沉浸式画布 + Canvas 2D
## 主要改动
### 1. 音效集成
- 集成 4 个捏碎音效(鸡蛋/核桃/易拉罐/气球)
- 集成背景音乐 BGM + 右上角开关按钮
- 修复音效 URL 空值时的崩溃问题
- useMetronome 新增 volume 参数(默认 1.0)
- 节拍音量调小至 0.35,避免木鱼声过大
### 2. 画布升级到 Canvas 2D 接口
- 解决微信小程序 canvas-id 接口的警告
- 支持同层渲染,可与其他元素正常叠加
- 使用 requestAnimationFrame 替代 setTimeout
- DPR 自适应,Retina 屏幕高清渲染
### 3. 粒子特效差异化升级
- 4 种物品各自独立配色和形状
- 🥚 鸡蛋: 蛋黄黄+白色,圆形,中速
- 🌰 核桃: 4 种棕色,方形/三角/长方形,重粒
- 🥫 易拉罐: 5 种银色,长方形,快速
- 🎈 气球: 8 色彩虹,小颗粒,飘浮(低重力)
- 新增双层冲击波效果
- 粒子旋转动画(方形/三角形/长方形)
- 多形状粒子绘制(circle/square/triangle/rect)
### 4. 沉浸式画布重新设计
- 画布占屏幕 60vh(min 720rpx, max 900rpx)
- 背景与页面无缝融合(#f8fafc)
- 中心 1400rpx 大放射光晕,营造空间感
- 握力环放大至 520rpx,内圈 280rpx
- 完全移除浮动气泡(性能优化)
### 5. 视觉与体验优化
- 主题色改回青绿色(#14b8a6),握力环保持粉色突出
- 训练完成卡片大改造:
- 大号 emoji 跳动动画
- 统计项加入图标(💪⏱️🔥)
- 食物对照可视化(emoji + 数量,最多 3 个)
- 食物库扩展到 7 种(糖果/饼干/巧克力/苹果/香蕉/米饭/可乐)
- BPM 数字大号显示(80rpx 深粉色)
- 实时统计栏增加分隔线和顶部彩色高光
### 6. 性能优化(低配机器友好)
- 静态背景渐变(0 性能消耗)
- 单层中心光晕(无动画)
- 外发光仅在播放时启用
- GPU 加速(will-change + transform/opacity)
- 移除 backdrop-filter(高消耗)
### 7. Bug 修复
- crush-canvas 的 \$scope of null 错误
- 进入页面时音效预热不再发声(静音预热)
- 修复 walnut emoji 错用花生(🥜→🌰)
- 弹窗遮挡粒子动画(延迟 1200ms 显示弹窗)
### 8. 文档
- 新增音效采集清单(grip-ring-audio-shopping-list.md)
## 修改文件
- grip-ring.vue: 主页面,音效集成、UI 重设计、食物对照
- grip-ring-canvas.vue: 沉浸式画布、握力环主体
- crush-canvas.vue: Canvas 2D 升级、差异化粒子系统
- useMetronome.ts: 音量参数支持
- dev-training-entry/index.vue: 入口配置微调
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-28 11:35:43 +08:00 |
|
long
|
3ebe3c58c8
|
Update metronome.vue
|
2026-05-27 18:27:25 +08:00 |
|
 longandClaude Opus 4.7
|
0225e9f971
|
feat(training): 握力环页面简化重构
## 主要改动
### 1. 连续训练模式
- 移除组数/休息逻辑,只统计总次数和时长
- 训练持续进行直到用户手动暂停
- 实时显示次数、时长、消耗糖分
### 2. 递进式奖励系统
- 鸡蛋(8-12次) → 核桃(15-20次) → 易拉罐(25-30次) → 气球(40-50次)
- 每个奖励在区间内随机触发
- 奖励按顺序递进,不会跳级
- 捏碎粒子特效 + 奖励弹窗
### 3. 糖分计算与食物对比
- 公式: (MET × 体重 × 时长) / 4
- MET = 3.5, 体重 = 60kg
- 食物对比: 苹果/香蕉/米饭/巧克力/可乐
### 4. 视觉设计优化
- 真实握力环造型(完整圆环 + 中空 + 握点)
- 立体渐变和纹理效果
- 挤压动画(训练时整体缩放)
- 简洁交互(整个环可点击,无中心按钮)
### 5. 问题修复
- 修复进入页面时音效预热响声(静音预热)
- 暂时禁用音效URL(避免404错误)
- 修复捏碎特效层级问题
## 技术实现
- 新增: grip-ring.vue (主页面)
- 新增: grip-ring-canvas.vue (画布组件)
- 修改: useMetronome.ts (静音预热)
- 修改: exercises.ts (移除握力环)
- 修改: index.vue (添加头部链接)
- 修改: dev-training-entry/index.vue (添加菜单入口)
- 修改: pages.json (添加路由)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 18:26:45 +08:00 |
|
long
|
b9d2541b32
|
chore: record session journal - 握力环训练趣味化
|
2026-05-27 16:53:33 +08:00 |
|
 longandClaude Opus 4.7
|
261f8315de
|
feat(training): 握力环训练趣味化 - 捏碎特效 + 卡路里统计
## 新增功能
### 1. Canvas 粒子捏碎特效
- 新建 crush-canvas.vue 组件(透明叠加层)
- 4 种捏碎物品:鸡蛋🥚、核桃🥜、易拉罐🥫、气球🎈
- 粒子物理模拟:径向扩散 + 重力 + 空气阻力 + 生命值衰减
- 性能优化:固定 60fps 时间步长,粒子边界清理
### 2. 随机触发逻辑
- 平均每 8-12 次随机触发捏碎特效
- 在握力环压缩峰值(scale 0.65)时触发
- 随机选择 4 种物品之一
- 资源清理:训练暂停/结束时清理所有定时器
### 3. 卡路里统计与完成页面
- 标准 MET 公式计算卡路里(MET = 3.5,默认 60kg)
- 5 种食物自动匹配(苹果、鸡蛋、巧克力、香蕉、米饭)
- 完成页面显示:组数、次数、时长、卡路里、食物对比
- 样式设计:浅色清爽风格,绿色渐变卡片
### 4. 预留接口
- useTTS.ts:预留 MiMo TTS 语音鼓励接口
## 技术实现
- Canvas 粒子系统:20-30 个粒子,物理模拟流畅
- 类型安全:完整的 TypeScript 类型定义
- 性能优化:固定时间步长、边界清理、资源管理
- 响应式布局:适配不同屏幕尺寸
## 相关任务
Task: .trellis/tasks/05-27-grip-ring-gamification
PRD: prd.md
Research: research/calorie-calculation.md
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-05-27 16:52:41 +08:00 |
|
long
|
ffe4849c27
|
Merge branch 'master' into mini-sport
|
2026-05-27 16:34:13 +08:00 |
|
long
|
012830de4a
|
1
|
2026-05-27 14:47:29 +08:00 |
|
long
|
3325be0622
|
feat(metronome): 双引擎(BgAudio 档位+InnerAudio 自定义)+音频迁移 CDN
- 档位模式用 BackgroundAudioManager+预合成循环 mp3, 锁屏可继续播放
- 自定义模式保留 InnerAudio, 支持任意 BPM(40~240)/拍号(2/3/4), 仅前台
- UI 折叠区区分两种模式, preset 默认进, 点"⚙ 自定义节奏"切换
- 音频资产全部迁移到腾讯云 COS, 删除本地 6 个 mp3/jpg (-210KB)
- server 上传白名单补 mp3/wav/m4a/aac/amr/wma 格式
|
2026-05-26 11:15:15 +08:00 |
|
 longandCursor
|
0e46bf8e0d
|
feat(metronome): 升级到 BackgroundAudioManager,iOS 真后台播放
iOS 微信小程序硬限制:
InnerAudioContext 切到后台/锁屏一定被挂起,
即使配置 requiredBackgroundModes 也无效。
唯一支持 iOS 真后台的音频 API 是 BackgroundAudioManager。
新增预合成档位音轨(ffmpeg 拼接 click + click-wood):
- loop_80bpm_2.mp3 慢走 6.0s 4 周期循环 (72 KB)
- loop_110bpm_2.mp3 健走 5.45s 5 周期循环 (66 KB)
- loop_130bpm_2.mp3 快走 5.54s 6 周期循环 (67 KB)
- cover.jpg 200×200 emerald 占位封面 (474B)
新 hook training/hooks/useMetronomeBg.ts:
- 封装 uni.getBackgroundAudioManager() 单例
- 必填 metadata: title/coverImgUrl/singer/epname/webUrl
- onEnded 重赋 src 实现循环 (BgAudio 无原生 loop 属性)
- onPause 同步 isPlaying,用户从锁屏控制条点暂停 UI 自动同步
- 暴露 playLoop(id)/pause/resume/stop API
metronome.vue 改造:
- 切换为 useMetronomeBg,移除右下角微调和拍号选择
(预合成 mp3 改不了 BPM/拍号,要么砍要么扩 9 个 mp3)
- 中央圆按钮逻辑:
· 未选档位 → 默认开"健走"
· 选了档位且在播 → 暂停
· 选了档位且暂停 → 恢复
- 视频 playbackRate 跟当前档位 BPM 同步(80→0.65× / 110→0.89× / 130→1.05×)
- 加底部提示"🔒 锁屏可继续播放,放兜里走也能听到"
- onHide 不 stop,onUnmounted 才 stop(避免锁屏控制条挂死)
副作用:
- 锁屏/通知栏会显示带封面+暂停按钮的音乐控制条(老人友好)
- 切档位有 200~500ms 延迟 (用户主动操作可接受)
- 不再支持任意 BPM 微调 (3 档已覆盖大部分场景)
旧的 useMetronome.ts 暂时保留,如 BgAudio 真机验证 OK 再清理。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-26 09:39:33 +08:00 |
|
 longandCursor
|
b93313d935
|
docs(training): 沉淀 BgAudio 设计备忘到 README
记录未来做健身模块时上 BackgroundAudioManager 的完整方案,
避免再调研一次。包含:
- 引擎选择对照表(BGM 用 BgAudio / 短音用 InnerAudio)
- BackgroundAudioManager 7 条限制清单
- 健身模块推荐架构(双引擎共存)
- 必备资产清单(BGM mp3 + 200×200 封面)
- BgAudio API 速查 + 场景切换模式代码
- 节拍器为何不一并升级的判断依据
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-26 09:27:56 +08:00 |
|
 longandCursor
|
c1dfb01f53
|
fix(metronome): 切后台/小窗后节拍声继续(放兜里也能听)
两层原因都修:
1. 微信限制(声明后台音频权限):
InnerAudioContext 默认在小程序进后台时被强制暂停。
必须显式声明 requiredBackgroundModes,iOS 才允许后台继续发声。
- manifest.json mp-weixin 全局加 requiredBackgroundModes:["audio"]
- pages.json 节拍器页 style 也加,双保险
说明:Android 大部分情况无需此声明也能后台,iOS 必需。
2. 代码层(onHide 不再主动 stop):
原 onHide 里 if(isPlaying) stop() 会在切后台/小窗时
立刻把节拍器自己关掉,跟需求相反。
新策略:
- onHide 留空 → 切后台/小窗时节拍器继续工作
- onUnmounted 才真正 stop + 释放屏幕常亮 → 用户主动离开
节拍器页(navigateBack/重启)时清理资源
实际场景:健走时把手机塞口袋,锁屏或切到微信聊天,
节拍声依然继续响,无需把手机一直拿着看。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-26 09:19:19 +08:00 |
|
 longandCursor
|
3f999b312d
|
tweak(metronome): 三档位拍数统一改为 2 拍
慢走/健走/快走 三档 accent 从 4 → 2:
- 走路场景天然是左-右双脚交替的 2 拍循环
- 重音落在每一步的"主脚"(默认左脚),节奏感更贴合步态
- 4 拍听感像跑步进行曲,2 拍才是健走/慢跑实际节奏
需要 3/4 拍号的可在右下角微调里手动切换。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-26 09:05:31 +08:00 |
|
 longandCursor
|
50abe5dece
|
refactor: 训练模块整体迁入分包,减小主包体积
主包超出 2MB 上限无法上传发布版,把训练相关全部移到独立分包。
目录调整:
- pages/training/* → training/pages/*
- hooks/use{Metronome,VoiceCoach,TrainingSession,TrainingBgm}.ts
→ training/hooks/*
- static/training/* → training/static/*
- 主包 hooks/ 目录已清空,所有 use* 都被分包独占
引用路径更新:
- 分包内 hook import 用相对路径 ../hooks/xxx,不依赖 @/ alias
- 资源路径 /static/training/audio/click.mp3
→ /training/static/audio/click.mp3
- useMetronome 默认 clickSrc / useVoiceCoach VOICE_BASE
/ useTrainingBgm BGM_BASE 全部对齐新路径
pages.json:
- 主包 pages 移除 training/index 和 training/metronome
- subPackages 新增 root="training",含 pages/index 和 pages/metronome
- 跟现有 TUIKit / doctor 分包风格一致
调用方:
- components/dev-training-entry navigateTo URL 更新成
/training/pages/metronome (此组件留在主包,主包跳分包是合法操作)
文档/工具同步:
- training/static/README.md 路径示例改为 training/static/...
- scripts/generate-voice.mjs VOICE_DIR 与提示输出对齐新路径
Git mv 检测到的全是 rename(R),历史完整保留。
分包总体 80K(pages 44K + hooks 20K + static 16K),主包瘦身明显。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-26 09:00:01 +08:00 |
|
long
|
f718df833e
|
update
|
2026-05-25 18:28:55 +08:00 |
|
 longandCursor
|
f068acf390
|
style(entry): 主按钮换心跳波形 icon,暂时隐藏练一练菜单
主按钮:
- "练" 单字改为 EKG 心跳波形 SVG icon
- 内联 data-uri SVG, 60rpx, 白色 stroke 2.6, 圆角线
- 加 1.6s 心跳脉动动画,模拟两次收缩(20%/40%),
跟外圈呼吸光环错频,层次感更强
- 健康主题更直观,跟运动/节拍场景契合
菜单:
- "练一练" 项暂时注释隐藏(后续恢复直接取消注释)
- 当前展开只剩"节拍器"一个入口
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 18:28:06 +08:00 |
|
 longandCursor
|
769d912eef
|
style(entry): 训练浮动入口美化,移除 DEV 标签
主按钮:
- 移除右上角红色 DEV 标签
- 单字"练" 48rpx 粗字号居中,不再 emoji+文字双层
- emerald 色由 #34d399 → #047857 渐变,跟节拍器主色统一
- 加双层立体阴影 + inset 高光,看起来像凸起的玻璃按钮
- 加 2 圈错相位呼吸光环(2.4s 周期),暗示可点击
- 关闭态用 CSS 几何 X 图标,旋转 135° 动画过渡
展开菜单:
- 圆角药丸卡片,带 backdrop-blur 玻璃质感,层级阴影
- "练一练"圆形 icon emerald 渐变 + 💪 emoji
- "节拍器"图标改成 3 根高低柱 CSS 模拟节拍/均衡器,
琥珀色渐变跟节拍器页面重音色呼应
- 右侧加细 › 箭头暗示可跳转
- 入场动画从 scale(0.92) 弹性放大,更顺滑
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 18:24:35 +08:00 |
|
 longandCursor
|
5aa0cda252
|
fix(metronome): 视频区域消除黑边 + PIP 遮罩融入画面
黑边原因:容器 280×240 跟 video 内容 1:1 不匹配,
微信 native video 默认 #000 底色从两侧露出来。
修复:
- walker-box 改成 260×260 正方形,跟视频比例一致,
contain 模式下视频撑满整个容器,左右没缝隙
- 容器和 video 的 background 都设成 #e8ecf2
(匹配视频右上角浅灰白渐变),万一还有 1rpx 缝也不刺眼
- 容器加微妙的 box-shadow,跟下方档位卡片视觉对齐
PIP/小窗按钮遮罩融入视频画面:
- cover-view 颜色从页面色 #f8fafc 改成 #dde2eb
(匹配视频右上角的浅灰渐变中间色)
- 盖在 video 上就像视频画面的一部分,看不出是色块
- 尺寸缩到 80×56 刚好覆盖 PIP 按钮,不多遮挡画面
- 左下加 18rpx 圆角让边缘柔和过渡
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 18:17:59 +08:00 |
|
 longandCursor
|
552da3aec2
|
feat(metronome): 节拍音改用真实木鱼录音
来源:Freesound 用户 the_very_Real_Horst 的"Fischtrommel_Muyu.mp3"
(ID 205999, CC BY 4.0,真实中国木鱼/Mokugyo 录音)
从 26 秒原录音中提取 1.665s 处第一个干净敲击,
ffmpeg 处理:
- 普通拍 click.mp3:原音木鱼,截 0.15s,标准化峰值 -0.3dB
- 重音拍 click-wood.mp3:asetrate 升 +3 半音让音色更清脆,
截 0.18s,标准化峰值 -0.4dB
- alimiter 限幅 0.97 防爆音,exp 衰减保留自然敲击尾巴
听感:
- 取代之前 ffmpeg 纯正弦合成的"叮"声
- 真乐器录音,木质共鸣空腔感清晰
- 重音通过升音区分,跟普通拍音色统一不违和
- mean 响度比合成版提升约 10dB
旧合成版备份在 audio/_backup/,不喜欢可一键恢复
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 18:12:35 +08:00 |
|
 longandCursor
|
ed5285b58a
|
fix(metronome): 视频改矩形完整显示,cover-view 挡住 PIP 按钮
之前圆形蒙版 + scale(1.4) 把小人手臂和头部裁掉一部分,
改成矩形容器:
- walker-box 280×240 微圆角矩形,object-fit:contain
小人四肢完整露出,不再被切
- 容器 background 跟页面色一致,video 自带灰白边自然融入
- 移除 transform:scale 缩放(原本只为推 PIP 按钮出圆外)
PIP/小窗按钮处理改为 cover-view:
- cover-view 是小程序唯一能覆盖在 native video 上的元素
- 右上角放 86×64 跟背景同色的色块,挡住原生按钮
- #ifdef MP-WEIXIN 条件编译,只在小程序端启用
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 17:47:19 +08:00 |
|
 longandCursor
|
0d35d1b6c3
|
fix(metronome): 顶部色协调 + 视频边缘柔化 + 节拍音加大
NavBar 颜色协调:
- 节拍器页 navigationBarBackgroundColor 从 #0f172a 暗色
改为 #f8fafc,跟页面背景纯色一致,顶部不再撕裂
- 文字色改 black,补 backgroundColor 防止下拉露出底色
视频边缘柔化(去掉硬切感):
- 页面背景从渐变改为纯色 #f8fafc,让 box-shadow 颜色稳定
- walker-clip 加 box-shadow 0 0 30rpx 12rpx #f8fafc
圆形外圈"消融"到背景里,不再有硬边框感
- video transform: scale(1.1) → 1.4
让 video 自带的灰白渐变边和右上角原生 PIP/小窗按钮
全部被推到圆外,被 overflow:hidden 切掉
节拍音重做(响度+音色):
- 时长从 0.13s 缩到 0.085s,去掉衰减尾巴更干脆
- 加 5ms white-noise burst 模拟敲击瞬间的"tk"音头
- volume 拉到 6 倍 + alimiter 限 0.98 防爆音
- 实测峰值从 -13.5dB 推到 0dB(满量程),
mean 从 -26dB 提到 -19dB,听感响度约翻倍
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 17:28:25 +08:00 |
|
 longandCursor
|
27c2ada4ec
|
feat(metronome): 浅色清爽改版 + 三档位 + 阳光节拍音
整页配色从暗色系换成浅色清爽:
- 背景 #f8fafc → #eef2f7 渐变
- 卡片纯白 + 柔和阴影
- 主圆 emerald 翡翠绿,重音切琥珀色
视频区域:
- 移除卡片外框/光晕/阴影,保留圆形蒙版
(圆形蒙版仍负责裁掉 video 灰白边 + 隐藏微信原生右上角小窗按钮)
- video 透明背景,跟白底融合
新增 3 档位推荐(主操作):
- 慢走 80 BPM · 健走 110 BPM · 快走 130 BPM
- 横排白卡,选中变浅绿 + emerald 描边
- 一键同步 BPM 和拍号,免去手动调
右下角微调(次要操作):
- absolute 定位胶囊,7 成透明
- ± BPM 微调 + 2/3/4 拍号
- 不抢主视觉,需要精确时才点
替换节拍音色(ffmpeg 合成):
- 普通拍 C6 1046Hz + C7 泛音,清脆"叮"
- 重音 G6 1568Hz + D7 + G7,更明亮"叮咚"
- 加 5ms attack + exp decay + 轻微回声,模拟钢片琴
- 旧的阴沉鼓点声备份在 audio/_backup/
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 17:14:45 +08:00 |
|
 longandCursor
|
6be5b4c45d
|
feat(metronome): walker 卡片改左右布局 + 圆形蒙版小人
老布局问题:视频被困在小白卡里、灰白渐变底跟暗卡片不搭、
左右大量空白、右上角小窗按钮没办法靠属性彻底隐藏。
新布局:
- 圆形蒙版裁切 video,灰白底自动收成柔和光晕,
原生右上角小窗/投屏按钮被切到圆外,看不见
- video 加 transform:scale(1.08) 让小人居中且裁掉边缘灰边
- 圆外加随节拍脉动的彩色 glow,颜色跟 badge 联动
(健走绿/快走黄/慢跑橙/快跑红)
- 视频右侧填充节奏数据三行:
· 每分钟 X 步
· 每步耗时 X ms
· 动画速度 X ×
把空白填上有意义的信息层级
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 17:02:47 +08:00 |
|
 longandCursor
|
fbf3d47b2a
|
fix(metronome): 跑步视频改用腾讯云 COS CDN 地址
微信开发者工具加载代码包内 mp4 极不稳定,改用 CDN 直接 URL:
- 抽取 RUNNER_VIDEO_URL 常量,后续替换源只改一处
- 注释里标记需把 cos.ap-guangzhou.myqcloud.com 加到
下载合法域名白名单(正式发布前)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 16:41:28 +08:00 |
|
 longandCursor
|
82c4d7e0a2
|
fix(metronome): 视频加载排错与初始化兼容性
针对开发者工具/老基础库下视频卡加载圈的问题:
- 去掉 video 标签上的 :playback-rate 属性绑定
(部分基础库初始化时设非 1.0 速率会导致首帧解码失败/卡死)
- 改在 @loadedmetadata 元数据加载完后再调用 videoCtx.playbackRate API
这样视频先以 1.0 原速播放,确认 ready 后再调速,兼容性更好
- 新增 @error 事件监听,失败时 console + toast 提示
便于诊断真机/工具的差异表现
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 16:31:45 +08:00 |
|
 longandCursor
|
867a6a97cf
|
feat(metronome): walker 区改用 MP4 视频,playbackRate 跟 BPM 同步
将之前的 PNG runner + CSS 律动方案,升级为真正的卡通 walk cycle 视频:
- 删除 runner.png(静态图无法表现关节运动)
- 新增 runner.mp4(LottieFiles 卡通跑步动画,150x150, 60fps, 27KB)
- walker 区从 image + CSS 抖动 改为 video + playback-rate 调速
- 视频原速基准 124 BPM(0.97s 一个 walk cycle = 2 步)
- playbackRate = clamp(bpm/124, 0.5, 2.0),贴合微信小程序限制
- 视频与节拍器同步策略:
· watch isPlaying → 自动 play/pause
· watch playbackRate → 调用 videoCtx.playbackRate API 兜底
· onMounted 默认暂停,等用户点开始才播
- 视频白底跟暗色卡片冲突,改用"嵌入式高亮卡片"设计:
· runner-card 白底 + 32rpx 圆角 + 阴影,像专业健康 APP
· video object-fit contain 保证不被裁切
- 移除冗余的 .ground 地面线样式
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 16:15:46 +08:00 |
|
 longandCursor
|
a3ee72b34d
|
feat(metronome): walker 区接入卡通跑步小人,跟 BPM 同步律动
- 替换原来两只脚印为一张跑步小人 PNG(static/training/runner.png)
- 静态 PNG + CSS 律动:
· runner-bob keyframes: 1 拍内做"下蹲→起跳→反向倾斜→落地"
四个阶段,模拟跑步身体起伏
· 上下抖动 ±14rpx, 左右轻摆 ±1.5°,scale Y 微妙压缩
· drop-shadow 让人物有立体感
- 阴影同步:runner-shadow-pulse 跟律动反向变化
(跳起时阴影变小变淡 0.2,落地时变大变浓 0.5)
- 动画 duration 绑定 --step-duration = 60000/bpm
· BPM 60 → 1000ms/次,慢悠悠
· BPM 120 → 500ms/次,正常跑
· BPM 180 → 333ms/次,紧张快跑
注意: 用户提供的文件实际是静态 PNG 不是 SVG 动图,
所以是"画面整体律动"而非真正的 walk cycle 关节运动。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 15:45:43 +08:00 |
|
 longandCursor
|
a08031b901
|
style(metronome): 禁止页面上下滚动
- pages.json 给 pages/training/metronome 加 disableScroll: true
(微信小程序级别禁滚动,主要避免下拉刷新和顶部回弹)
- .page CSS 改 min-height → height: 100vh + overflow: hidden
(双保险,防止 iOS 橡皮筋效果与内容超出滚动)
- 内容元素 gap 28→24rpx,微调避免内容被裁
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 14:15:36 +08:00 |
|
 longandCursor
|
665481a6d8
|
style(footprint): 圆润脚跟,告别尖锐 V 形
之前两段曲线都汇聚到 (50,138) 一点,且控制点位置偏下,
形成尖锐 V 形脚跟。修复:
- 脚跟底中心 (50,138) → (50,140),稍微下移
- 内侧弧控制点 (38,130) → (30,122)(40,140),从靠肩部
渐进到水平方向,切线在底部呈水平,不再向下尖收
- 外侧弧对称处理 (60,140)(70,122)
- 进入和离开脚跟底心时切线都水平,视觉上变成圆润 U 形
- 整体高度 138 → 140,viewBox 100x150 不变
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 13:02:39 +08:00 |
|
 longandCursor
|
30b344b776
|
style(metronome): 脚印重画为葫芦型,告别椭圆感
之前的 SVG path 内外侧太对称,看起来还是椭圆。重新设计:
- viewBox 100x140 → 100x150 (拉长比例 1:1.5,更"瘦长")
- 主体 path 内侧凹陷 + 外侧饱满,形成葫芦轮廓:
· 内侧足弓 x 收到 22 (凹陷)
· 外侧饱满 x 推到 78 (凸出)
· 前足比脚跟略宽,模拟真实脚型
- 5 个脚趾:
· 拇趾 rotate(-18°) 内侧明显倾斜
· 小趾 rotate(+22°) 外侧外展
· cy 沿弧线 22→11→9→13→20,形成自然弧形
· rx 从 6.5 递减到 3.5,大小过渡更自然
- 容器尺寸从 100x140 → 96x144,匹配 SVG 新比例
- walker 高度 200→220rpx 以容纳抬脚动画上限
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 12:49:36 +08:00 |
|
 longandCursor
|
e104249707
|
style(metronome): 脚印改用 SVG 矢量,单笔成型告别卡通感
div 拼接(椭圆+5 个圆)无论怎么调都摆脱不了"青蛙脚"既视感,
根本原因是 div 画不出曲线轮廓。改用 SVG path 单笔成型:
- 新增 static/training/footprint.svg(775B)
· path 一笔走完:前足→足弓凹陷→脚跟,模拟真实脚印拓印
· 5 个脚趾用 ellipse + rotate 转角,大小递减(7.2→3.8rpx)
· 内侧(拇趾侧)凹陷、外侧饱满,符合解剖学
· 单色 #e2e8f0 fill-opacity 0.92,接近湿沙脚印质感
- metronome.vue:
· 模板:删 heel + 5×toe,改用 image src=footprint.svg
· CSS:删除 70+ 行 heel/toe 位置定位,只保留 footprint 容器
· 左脚保持 scaleX(-1) 镜像,动画 keyframe 不变
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 12:45:17 +08:00 |
|
 longandCursor
|
9b6d9ce007
|
refactor(metronome): 整体视觉重设计 - 现代极简风
脚印拟真化:
- 颜色 鲜绿 → 浅白(rgba 241,245,249,0.92),降低饱和不再卡通
- 形状更紧凑:脚趾紧贴脚掌、大小递减弧形排布(22→18→16→14→12rpx)
- 不规则 border-radius 模拟真实脚印轮廓
- 移除多余渐变和厚重 box-shadow
布局重组(卡片化):
- 走路区域 + 配速 badge + 状态提示 → walker-card 统一卡片
- BPM 调节 + 拍号选择 → control-card 统一卡片
- 卡片背景 rgba(255,255,255,0.035) + 1rpx 描边,有 backdrop-blur
- 移除独立 hint 区,合并到 walker-card 顶部
控件精修:
- BPM 步进按钮 高度 120→96rpx,字号 44→38rpx,圆角更小
- 拍号选择器改为 iOS 风药丸式 segmented control,放在右侧
- 主圆 460→420rpx,BPM 字号 200→180rpx,腾出空间给下方
- "速度"标签 → "BPM"(更专业)
配速 badge 智能变色:
- <100 BPM 绿(健走)
- 100-129 黄(快走)
- 130-169 橙(慢跑)
- ≥170 红(快跑)
设计 token 抽取:
- 在 SCSS 顶部定义 $bg-grad / $card-bg / $text-* / $brand 等变量
- 圆角统一:卡片 28rpx, 按钮 20rpx, 药丸 999rpx
- 间距统一:卡片间距 28rpx, 控件间隔 14rpx
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 12:18:29 +08:00 |
|
 longandCursor
|
69da8066a6
|
feat(metronome): 节拍器下方加脚步行走动画
- 节拍器圆下方新增"脚印踏步"动画区域
· 纯 CSS+SVG-like(div 拼接),不依赖 canvas/Lottie/视频
· 左右脚交替踏步,起脚时落地阴影变小变淡,落地时变大变浓
· 1 拍 1 步,左右各占半周期(animation-delay 错相 0.5)
- 跟节拍器同步:CSS 变量 --step-duration = 60000/bpm,BPM 改了
步频立刻跟着变;暂停时 animation-play-state 自动停
- 智能配速提示:
· <70 BPM 慢走 · 适合热身
· 70-99 健走 · 日常配速
· 100-129 快走 · 心率提升
· 130-169 慢跑 · 进入有氧
· ≥170 快跑 · 高强度
- 重构 ringStyle/coreStyle 为统一 rootStyle,挂在根节点用
CSS 变量级联(--beat-duration / --step-duration)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 12:10:44 +08:00 |
|
 longandCursor
|
edc9993403
|
fix(metronome): 修复 iOS 真机静音键模式下无声音
iOS 微信小程序的 InnerAudioContext 默认会受系统侧边静音键影响,
单实例 obeyMuteSwitch = false 在 iOS 上不可靠,必须调用全局
API setInnerAudioOption 才能正常发声。
- App.vue onLaunch 调用 uni.setInnerAudioOption({
obeyMuteSwitch: false, mixWithOther: true })
- useMetronome.preload() 进页面时再调一次保险
- AudioPool.play() 改用 stop() + play() 替代 seek(0) + play(),
iOS 上 seek(0) 不一定能复位播放进度
- 预热改用 volume 0.01 极小音量替代 volume 0,iOS 上音量为 0
可能不会真正完成音频解码
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 11:48:16 +08:00 |
|
 longandCursor
|
8f14f3190e
|
fix(metronome): 修复第二拍延迟两倍间隔的 bug
drift correction 逻辑写反了:
drift = now - nextTickAt (此时为负数,下一拍还在未来)
nextDelay = intervalMs - drift ❌ = 2 × intervalMs
正确做法直接计算"目标时刻距现在还有多久":
nextDelay = nextTickAt - now ✅
现象:点击开始,第一拍立即响,但第二拍要等两倍拍间隔才响。
现在第一拍响完就立刻按 BPM 节奏进入第二拍。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 11:44:06 +08:00 |
|
long
|
71a3c63182
|
Update .gitignore
|
2026-05-25 11:33:01 +08:00 |
|
 longandCursor
|
d10678763f
|
revert(uniapp): 移除训练模块,代码已迁至 TUICallKit-Vue3
之前 6 个 commit 误把节拍器/练一练训练模块加在 uniapp 项目,
实际目标项目是 TUICallKit-Vue3(甄养堂主壳)。本提交清理 uniapp
项目所有相关改动:
- 删除 hooks/useMetronome.ts、useTrainingSession.ts、
useVoiceCoach.ts、useTrainingBgm.ts
- 删除 pages/training/* 与 components/dev-training-entry/
- 删除 static/training/* 与 scripts/generate-voice.mjs
- 还原 pages.json、pages/index/index.vue、pages/user/user.vue
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 11:29:03 +08:00 |
|
 longandCursor
|
2beace89f4
|
feat(TUICallKit-Vue3): 迁入节拍器与练一练训练模块
之前误将训练模块加在 uniapp 项目,实际目标项目是 TUICallKit-Vue3
(甄养堂主小程序壳),整体迁入:
- hooks/useMetronome.ts 节拍器(音频实例池+预热,无冷启动延迟)
- hooks/useTrainingSession.ts 训练 Session 状态机
- hooks/useVoiceCoach.ts 语音教练队列
- hooks/useTrainingBgm.ts 训练/休息 BGM 切换+渐变
- pages/training/index.vue 练一练主页(器械跟练)
- pages/training/metronome.vue 独立节拍器(老人友好版,
中央圆即开始/暂停按钮,纯 CSS 几何 icon,大字大按钮)
- pages/training/components/exercise-anim.vue CSS 动作动画
- pages/training/exercises.ts 5 个器械动作预设
- static/training/audio/*.mp3 3 种 click 音色(MIT 协议)
- scripts/generate-voice.mjs MiMo TTS 批量生成语音脚本
- pages.json 注册 pages/training/index 与 pages/training/metronome
- 「我的」页加 DevTrainingEntry 悬浮入口,生产环境自动隐藏
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 11:28:55 +08:00 |
|
 longandCursor
|
e5d0d7db93
|
style(training/metronome): 优化中央圆 UI,移除顶部拍点指示
- 移除顶部 .beat-bar 4 个圆点指示器,界面更简洁
- 中央圆按钮重新设计:
· "速度"标签下方居中放置纯 CSS 几何绘制的大 ▶/⏸ 图标
(icon-play 70rpx 三角形 / icon-pause 22rpx×84rpx 双竖条),
跨机型一致、不再依赖 emoji 字符
· 移除"开始/暂停"文字 + 药丸样式背景,保留 icon 即可识别
· 圆心使用更深的渐变和内/外阴影,质感更立体
· 增加第二层 ring 错相 0.4 周期播放,呼吸感更连续
- 状态提示文案调整:"点击" → "轻点"
- 顶部 padding 收紧 60rpx → 20rpx,圆体上下居中更平衡
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 11:18:30 +08:00 |
|
 longandCursor
|
35a42078ce
|
feat(training/metronome): 修复冷启动延迟 + 老人友好 UI
- useMetronome 改用音频实例池(默认 4 个 InnerAudioContext 轮流播放),
并在创建时静音预热,解决重新开始第一拍延迟 100-300ms 的问题;
同时也避免快 BPM 时上一拍未播完导致的丢音
- 暴露 preload(),节拍器页面 onShow 时主动预加载
- 移除 useMetronome 的 tapTempo 接口
- 重写节拍器页面:
· 中央大圆即"开始/暂停"按钮(老人一眼就懂的交互)
· 移除 Tap Tempo、滑块、速度术语
· 仅保留 -10/-1/+1/+10 大步进按钮调速
· 拍号简化为 2/3/4 拍三选项
· 大字号 BPM(200rpx) + 高对比度配色
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 11:02:15 +08:00 |
|
 longandCursor
|
e8e28d19fb
|
chore(uniapp): 内置 3 种节拍器 click 音色(MIT 协议)
- 来源:johnnysn/chrono-bump 开源节拍器项目(MIT License)
- click.mp3 (3.4KB) 默认标准节拍音
- click-soft.mp3 (4.2KB) 柔和音色备选
- click-wood.mp3 (4.6KB) 木鱼质感,节拍器页用作重音 accent
- 节拍器页接入 accent 音色:第 1 拍用 click-wood,后续用 click,听感更专业
- README 注明来源、协议、替换说明
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 10:53:31 +08:00 |
|
 longandCursor
|
163e40c73f
|
feat(uniapp): 节拍器独立工具页面
- 新增 /pages/training/metronome 节拍器页面:
· 中心大脉冲圆 + 重音变色(绿→金)
· 拍号选择 1/4 ~ 6/8,第 1 拍重音视觉指示
· BPM 滑块 (40-240) + 一键 ±1/±5 步进
· Tap Tempo(连续 2-5 次点击自动测速)
· 速度术语提示(Largo / Andante / Allegro 等)
· 屏幕常亮、切后台自动暂停
- useMetronome 新增 setAccentEvery / tapTempo 方法,支持 accentSrc 重音音色
- 训练页右上角加节拍器入口
- DEV 悬浮按钮升级为可展开菜单(练一练 + 节拍器)
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 10:48:06 +08:00 |
|
 longandCursor
|
d46cfff079
|
feat(uniapp): 加开发用「练一练」悬浮入口
- 新组件 dev-training-entry:右下角圆形悬浮按钮,带 DEV 标签
- 仅在 isDevMode() 为真时显示,上线打包自动隐藏
- 挂载到首页和个人中心,方便快速跳转 /pages/training/index 测试
后续走装修系统给 user 页配「练一练」服务图标后即可移除此组件
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 10:37:23 +08:00 |
|
 longandCursor
|
275a7a550d
|
feat(uniapp): 新增「练一练」器械跟练模块 MVP
- 节拍器 hook (useMetronome):setInterval + 漂移自校正,60-200 BPM 误差 <30ms
- 训练状态机 hook (useTrainingSession):组数/次数/休息阶段编排
- 语音引导 hook (useVoiceCoach):队列播放,关联节拍回调报数
- BGM hook (useTrainingBgm):训练/休息双音轨手写淡入淡出
- 5 个动作预设:哑铃弯举/推举/侧平举、握力环、健身环卷腹
- CSS 动画组件 exercise-anim:动画时长由 BPM 通过 CSS 变量驱动
- TTS 生成脚本 generate-voice.mjs:调小米 MiMo TTS 自动出 39 段语音
- 静态资源目录占位与素材准备说明
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-25 10:34:45 +08:00 |
|
long
|
f314e2e271
|
Merge branch 'new-miniapp'
|
2026-05-22 17:55:54 +08:00 |
|
long
|
4b749a1ee0
|
Merge branch 'cursor/self-input-stats'
|
2026-05-22 17:02:27 +08:00 |
|
 longandCursor
|
679e61057b
|
fix(stats/self_input): 唯一索引含 delete_time,软删后可重新录入
去掉「同日+同渠道」全局唯一,回到按录入人判重;唯一索引补 delete_time 避免软删占键导致 1062;错误提示带冲突记录 ID,迁移脚本兼容多次执行。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-22 17:01:58 +08:00 |
|
long
|
7e94c5dfd7
|
Merge branch 'cursor/self-input-stats'
|
2026-05-22 16:45:37 +08:00 |
|
long
|
003810114b
|
debug
|
2026-05-22 16:45:28 +08:00 |
|
long
|
55521b8e11
|
Merge branch 'cursor/self-input-stats'
|
2026-05-22 12:07:36 +08:00 |
|
 longandCursor
|
e4f181e4fe
|
fix(stats/self_input): 渠道字典、财务脱敏与同日同渠道全局唯一
自媒体来源改推广渠道字典;非白名单隐藏账户消耗/ROI;部门展示完整路径;业绩与消耗按日期+渠道全局去重。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-22 12:02:12 +08:00 |
|
 longandCursor
|
bba989c0af
|
fix(stats/self_input): 修复保存不入库/路由 404,补全部门与自媒体来源下拉
- 模型去掉 defaultSoftDelete=0,避免 ThinkPHP 软删过滤导致新增记录"隐形"
- 菜单 paths 改相对路径并新增「自录数据统计」目录,迁移已有菜单
- Lists/Overview 补部门关联、支持按部门筛选
- 数据权限改由 self_input_stats_view_all_roles 白名单 + DataScope 控制,
编辑/删除完全交给按钮权限校验(移除"仅本人可改"硬限制)
- 新增 /stats.self_input/mediaSourceOptions 接口,统计页/账户消耗页/录入弹窗
共用 useMediaSourceOptions + MediaSourceSelect,去重动态加载
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-22 11:47:15 +08:00 |
|
 longandCursor
|
183b6a1acf
|
feat(stats): 新增自录转化统计模块
支持后台用户手动录入个人业绩与账户消耗,独立计算转化指标,接入 DataScope 数据权限。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-05-22 09:17:16 +08:00 |
|
long
|
436f69c272
|
fix: support both exclusive and public resources for logged in users, include flags in quick returns
|
2026-05-21 14:36:02 +08:00 |
|
long
|
dc72a8ccaf
|
fix: getResourceList never returns -1, uses flags for disabled/expired tokens to keep guest mode working
|
2026-05-21 10:25:15 +08:00 |
|
long
|
499c969233
|
fix: distinguish disabled users from invalid tokens - disabled users see public resources as guest, only truly invalid tokens trigger re-login
|
2026-05-21 10:13:33 +08:00 |
|
long
|
3b44300216
|
fix: return code -1 when disabled user has token in getResourceList, triggers frontend logout
|
2026-05-21 10:08:15 +08:00 |
|
long
|
8bb7b5d30a
|
feat: add inline switch toggle for account status in user list
|
2026-05-21 10:01:58 +08:00 |
|
long
|
4c3becf33e
|
feat: use project standard search bar pattern for asset pages, add title/phone/date filters
|
2026-05-21 09:54:59 +08:00 |
|
long
|
a42fc6453a
|
feat: add resource edit functionality and time range filter in admin panel
|
2026-05-21 09:49:30 +08:00 |
|
long
|
dad06304f1
|
feat: make user_ids optional in admin resource form, unlinked resources become public
|
2026-05-21 09:47:44 +08:00 |
|