|
|
61f9b33f8c
|
feat(iter-v2): T01 partial - TOKEN_SECRET check, SQL param, export credential, docs
- S2: logs.ts LIMIT/OFFSET SQL parameterization (? placeholders)
- S3: checkTokenSecret() startup validation, JWT_SECRET→TOKEN_SECRET in backup.ts
- S3: Access Token expiry shortened to 2h (from 30d)
- S4: Export download uses HMAC signed short-term token (/prepare endpoint)
- S4: Frontend export.ts adapted for prepare-then-download flow
- .env.example reorganized with security notes
- Added PRD and architecture docs for iteration v2
|
2026-06-11 08:58:24 +08:00 |
|
|
|
ae9b415822
|
refactor: TransactionItem 左滑提示改为 prop 控制
|
2026-06-10 17:35:58 +08:00 |
|
|
|
31f6487d61
|
feat: 前后端功能对齐 - 实现8个对齐差距
P0-1: 分类拖拽排序 - category-manage 添加拖拽 UI
P1-1: 反馈回复展示 - 新增 GET /feedback/mine + 前端我的反馈Tab
P1-2: 备份管理页面 - 新增下载端点 + backup-manage 页面
P2-1: 统计年度/周视图 - stats 支持 period 参数 + 前端维度切换器
P2-2: 数据导入 - 新增 POST /import 端点 + data-import 页面
P2-3: 数据导出服务端化 - 新增 GET /export 流式端点
P3-1: 健康检查展示 - health 移到 auth 前 + admin 状态卡片
P3-2~4: 交易标签系统 - tags CRUD + 交易关联 + 按标签筛选统计
后端: 新增 tag.ts/export.ts 路由, 改造 feedback/backup/transaction/stats
前端: 新增 DragSortList 组件, 3个新页面, 改造 7 个现有页面
QA 修复: 5个严重Bug + 4个潜在问题
|
2026-06-10 17:30:36 +08:00 |
|
|
|
5df910c9f1
|
feat(ui): UI/交互优化 — 动画系统+Design Token+骨架屏+微反馈
1. Design Token 统一:CategoryIcon/BudgetBar/Numpad/Skeleton/TransactionItem
硬编码hex颜色替换为 $primary/$border/$danger 等SCSS变量
2. 入场动画:mixins.scss 添加 fade-in-up/bounce-in/count-up 等 mixin+keyframes,
首页卡片/金额/快捷按钮应用交错入场动画
3. 记账成功动画增强:SaveSuccess 增加纸屑粒子爆发+光环脉冲效果,
prefers-reduced-motion 下自动隐藏
4. 骨架屏替代文字加载:recurring/group-manage/notifications 三个页面
从"加载中..."替换为骨架屏;空状态增加图标容器+引导文案
5. 交互微反馈:分类按压0.92缩放、推荐虚线呼吸动画、
Tab滑块cubic-bezier优化、快捷按钮弹性按压
6. 左滑删除提示:TransactionItem首项1.5s后自动微微左滑再回弹,
引导用户发现滑动删除功能
|
2026-06-10 15:59:42 +08:00 |
|
|
|
9f5802d634
|
fix: 修复3个高优先级Bug + 5个中低优先级问题
BUG-01: recurring /sync next_date 更新逻辑错误(应用循环后的 next)
BUG-02: bills onReachBottom loading 缺 .value
BUG-03: group store switchToPersonal 缺少 await (3处)
OPT-04: notification requireNotificationEditAuth 加 try-catch
OPT-05: category 迁移源分类条件改为 is_custom=1 AND user_id=?
OPT-06: user 旧头像删除加 try-catch + 日志
CODE-02: format.ts 跨年日期显示年份
CODE-05: notification isValidUrl 去掉相对路径允许
|
2026-06-10 15:59:12 +08:00 |
|
|
|
f586f9e117
|
fix: 金额编辑器小数位溢出挤位 + 编辑页自动聚焦 + 周期账单移除冗余聚焦
|
2026-06-09 16:54:13 +08:00 |
|
|
|
6b26951b1b
|
fix: 金额输入框样式优化 + 预算页键盘遮挡修复 + admin 样式修复
- AmountEditor: 未聚焦时透明,聚焦时粘土卡片浮起;¥/单位 baseline 对齐
- budget: 补充 Numpad 占位高度,auto-focus 改为 false 缩短页面
- admin/feedback: 补充 modal-mask mixin
- admin/track: filter-tabs 与 scroll-view 分离 + 格式化
|
2026-06-09 14:44:25 +08:00 |
|
|
|
768c72d7b7
|
feat: 金额编辑器交互优化 — 支持光标定位、插入删除、长按删除
- 新增 AmountEditor 组件,页面只接一个组件即可获得完整金额编辑体验
- Numpad 增强:支持 cursorIndex 光标输入 + 长按连续删除
- 金额编辑纯函数 amount-edit.ts 集中管理插入/删除/校验规则
- 记一笔、预算页、周期账单弹窗统一接入 AmountEditor
- 默认聚焦金额、点击备注/日期/分类隐藏 Numpad、再次点击金额恢复
- 空值输入小数点规范为 0.
|
2026-06-09 14:09:14 +08:00 |
|
|
|
ac20a70a20
|
refactor: 移除前端接口缓存 — 每次 onShow 都实时请求最新数据
|
2026-06-09 09:21:16 +08:00 |
|
|
|
4e4b7dac69
|
fix: 周期账单弹窗 — Numpad 移到 scroll-view 外 + 防重复提交 + @confirm 绑定
|
2026-06-09 09:13:28 +08:00 |
|
|
|
df6f1a54d6
|
refactor: Numpad 组件支持 fixed prop — 弹窗内嵌 / 页面固定两种模式
|
2026-06-09 09:10:36 +08:00 |
|
|
|
7bf899f0b1
|
refactor: 周期账单 Numpad 改为弹窗内嵌,移除 fixed 定位
|
2026-06-09 09:08:03 +08:00 |
|
|
|
a277f1533b
|
fix: 首页刷新/反馈按钮/周期键盘三个 bug 修复
|
2026-06-09 09:06:44 +08:00 |
|
|
|
f745f4b4f0
|
fix: 修复 feedback 状态类型 — string → Feedback['status'] 联合类型
|
2026-06-09 09:02:02 +08:00 |
|
|
|
6908ffed0e
|
feat: 智能分类建议 — 根据金额/备注/历史自动推荐分类
|
2026-06-08 17:21:10 +08:00 |
|
|
|
057c69800e
|
feat: 周期账单 — 自动生成定期交易(房租/订阅/工资)
|
2026-06-08 17:17:16 +08:00 |
|
|
|
986c187156
|
feat: 忽略反馈也支持回复 — 统一标记处理/忽略的回复流程
|
2026-06-08 17:03:50 +08:00 |
|
|
|
91ff95ea48
|
feat: 反馈处理增加回复功能 — 管理员可回复用户反馈并推送通知
|
2026-06-08 17:02:34 +08:00 |
|
|
|
a1e62e487d
|
feat: 数据导出增强 — 日期范围/类型筛选/CSV+JSON 格式
|
2026-06-08 16:58:48 +08:00 |
|
|
|
be665f7859
|
fix: S3 UI优化 — 底部弹窗/FAB 安全区适配
|
2026-06-08 16:54:56 +08:00 |
|
|
|
4e43a9049a
|
fix: S2 缺陷修复 — emoji/类型/双重请求/动画/prefers-reduced-motion
|
2026-06-08 16:53:27 +08:00 |
|
|
|
618cd20ebf
|
docs: S1 全面扫描汇总报告 — 12 项发现
|
2026-06-08 16:47:34 +08:00 |
|
|
|
3279440ce6
|
docs: S1 全面扫描实施计划
|
2026-06-08 16:40:43 +08:00 |
|
|
|
2b04f057a9
|
docs: 质量迭代设计文档 — S1 全面扫描方案
|
2026-06-08 16:37:26 +08:00 |
|
|
|
41cddcd2c1
|
fix: 修复 feedback 查询 LIMIT/OFFSET 参数类型错误
- 和 logs.ts 同样的问题,execute 对参数类型要求严格
- 改为直接嵌入 SQL 字符串
|
2026-06-08 16:24:15 +08:00 |
|
|
|
4d3a390075
|
fix: queryTrackEvents 也过滤 undefined 值
|
2026-06-08 16:22:02 +08:00 |
|
|
|
ef4ab774b0
|
fix: 修复日志查询 undefined 序列化问题
- queryLogs 过滤掉 undefined 值
- 防止 undefined 被序列化为 'undefined' 字符串导致筛选失败
|
2026-06-08 16:14:22 +08:00 |
|
|
|
af15a41186
|
fix: 日志和埋点页面修复
日志页:
- 关键词搜索添加搜索按钮
- 修复搜索样式重复问题
埋点页:
- 事件类型显示中文名称(页面访问、用户操作等)
- 今日事件和热门事件使用标签样式
- 添加日期筛选和关键词搜索
- 事件类型筛选可横向滚动
|
2026-06-08 16:12:38 +08:00 |
|
|
|
6ef44805f5
|
fix: 修复埋点查询 LIMIT/OFFSET 参数类型错误
- mysql2 execute 对 LIMIT/OFFSET 参数类型要求严格
- 改为直接嵌入 SQL 字符串(pSize 和 offset 已是安全的数字)
|
2026-06-08 15:56:16 +08:00 |
|
|
|
50c41d8759
|
fix: 埋点统计和日志查询修复
- track.vue: 修复日期格式化(处理 ISO 格式)
- track.vue: 筛选标签改为可滚动
- logs.ts: 修复 queryLogs 参数传递(移除 undefined date)
|
2026-06-08 15:50:30 +08:00 |
|
|
|
b21c90c560
|
fix: 修复 feedbacks 表 TEXT 类型默认值问题
- admin_reply TEXT 不能有 DEFAULT '',移除默认值
- 此问题导致 feedbacks 和 track_events 表都创建失败
|
2026-06-08 15:42:17 +08:00 |
|
|
|
7f6da1fa10
|
fix: 恢复使用服务器本地时间,不硬编码时区
- logger.ts: 使用 new Date() 服务器本地时间
- logs.ts: 统计使用服务器本地时间
- 时区显示由客户端处理
|
2026-06-08 15:37:21 +08:00 |
|
|
|
3ce5ff4b65
|
fix: 日志时区修复 + 日期选择器
- logger.ts: 使用 UTC+8 时区记录日志
- logs.ts: 统计使用 UTC+8 今日日期
- logs.vue: 日期选择器改用 picker 组件
- 移除未使用的 showDatePicker 变量
|
2026-06-08 15:35:50 +08:00 |
|
|
|
fc3491742f
|
fix: 全面检查修复 — 路由顺序 + 安全加固
- logs.ts: /track/stats 和 /track/list 移到 /:date 之前,修复路由匹配问题
- config.ts: 添加配置键白名单校验,限制值长度 500 字符
- track.ts: 添加输入校验,限制事件数量和字段长度
- index.ts: /api/track 添加 rate limiter
|
2026-06-08 15:27:57 +08:00 |
|
|
|
a1e3106899
|
feat: 埋点统计系统 — 数据库存储 + 管理后台查询
后端:
- track_events 表存储埋点数据(事件类型、页面、数据、用户)
- track 路由改为写入数据库
- logs 路由新增 /track/stats 和 /track/list 查询接口
前端:
- 新增埋点统计页面(今日事件、7天趋势、热门事件)
- 支持按事件类型筛选
- 管理后台添加「埋点统计」入口
|
2026-06-08 15:19:12 +08:00 |
|
|
|
162f2dc89c
|
fix: 日志系统修复
- userId 延迟到 finish 事件获取(authMiddleware 已执行)
- 日志记录 UTC 时间戳,支持前端按用户时区显示
- 日期筛选和级别筛选 watch 监听修复
- 添加 showDatePicker 变量定义
|
2026-06-08 15:06:29 +08:00 |
|
|
|
860c599b7c
|
fix: 系统检查修复 — 安全和稳定性
后端:
- config.ts 使用 requireAdmin 中间件,统一响应格式
- feedback.ts 使用 requireAdmin 中间件,移除重复权限检查
- feedback.ts 添加 affectedRows 检查(反馈不存在时返回 404)
- 全局错误处理中间件兜底未捕获异常
前端:
- request.ts 添加 15 秒请求超时设置
|
2026-06-08 14:48:39 +08:00 |
|
|
|
dcab68b3a8
|
fix: 修复 logs.ts TypeScript 类型错误 — level 参数类型处理
|
2026-06-08 14:34:45 +08:00 |
|
|
|
cc09a177ef
|
feat: 管理后台日志查询系统
后端:
- 新增 /api/logs 路由,支持日志文件列表、统计、查询
- 按日期/级别/关键词筛选日志
前端:
- 新增日志管理页面,展示今日统计和7天趋势
- 支持按级别筛选和关键词搜索
- 管理后台添加「系统日志」入口
|
2026-06-08 14:33:09 +08:00 |
|
|
|
0de4c9832c
|
feat: 请求日志 + 前端埋点系统
后端:
- 新增 logger 中间件,记录所有请求到 logs/ 目录
- 新增 /api/track 接口接收前端埋点数据
前端:
- 新增 tracker 工具,支持页面访问/操作/错误埋点
- request.ts 添加 API 错误自动埋点
- App.vue 初始化全局错误追踪
文档:
- CLAUDE.md 更新项目结构
- DEV.md 添加埋点和日志说明
|
2026-06-08 14:28:11 +08:00 |
|
|
|
2f122d0a96
|
docs: 更新 DEV.md — 后端 API 响应格式规范
- 统一响应格式 { code: 0, data: ... }
- 错误码规范说明
|
2026-06-08 11:30:58 +08:00 |
|
|
|
d681dc67a3
|
fix: 后端 API 响应格式统一 — config 和 feedback 路由
- config.ts: 响应格式改为 { code: 0, data: ... }
- feedback.ts: 响应格式改为 { code: 0, data: ... }
- 修复前端 request 函数因响应格式不标准导致的请求失败
|
2026-06-08 11:30:38 +08:00 |
|
|
|
9423f15f29
|
docs: 更新 DEV.md — API 调用规范和页面加载模式
- request 函数正确调用格式说明
- 页面数据加载标准模式(initialLoaded 守卫)
|
2026-06-08 11:25:03 +08:00 |
|
|
|
65c2a81486
|
fix: API 调用格式修复 — request 参数传递方式
- feedback.ts: 修复 request 调用格式,使用 { url, data } 对象
- config.ts: 修复 request 调用格式,使用 { url } 对象
|
2026-06-08 11:23:43 +08:00 |
|
|
|
24166aeb62
|
fix: 系统检查修复 — 布局一致性 + bug 修复
- 公告图片样式统一:圆角 $radius-md,间距 $space-sm
- 首页紧急公告弹窗样式改为 SCSS 变量
- 新增 modal-mask-high mixin 统一高层级弹窗
- admin/config.vue 添加 initialLoaded 守卫避免重复请求
- notifications/index.vue 添加 initialLoaded 守卫
- notification store 所有方法添加 try-catch 错误处理
|
2026-06-08 11:21:08 +08:00 |
|
|
|
ecfb67872d
|
fix: sys_config seed 补充 app_name 字段
- seed.sql 添加 app_name 默认值
- init.ts 迁移中添加 app_name 兼容已有数据库
|
2026-06-08 11:13:27 +08:00 |
|
|
|
8b5589192d
|
fix: 修复编辑公告保存失败 — 图片上传逻辑
- uploadImageIfNeeded 增加 notif_ 前缀判断
- 编辑保留原图时不再尝试上传本地文件
|
2026-06-08 11:04:33 +08:00 |
|
|
|
5124b390a7
|
fix: 移除 configStore 默认值,等待后端返回
- appName/appSlogan/appDescription 改为 computed,从 config 读取
- 后端配置加载完成前为空字符串
|
2026-06-08 11:02:16 +08:00 |
|
|
|
6af876a8f4
|
feat: 品牌文案配置化 + 全页面下拉刷新
- 新增 configStore 管理品牌文案(appName, appSlogan, appDescription)
- 关于弹窗、分享标题使用 configStore 读取品牌名
- 所有数据页面添加下拉刷新功能
- 所有数据页面 onShow 时自动刷新数据
|
2026-06-08 10:59:09 +08:00 |
|
|
|
62ca400b64
|
feat: 反馈回复通知 + 修复导入
- 管理员回复反馈时自动发送个人通知给用户
- 修复 config.ts 和 feedback.ts 的 pool 导入方式
|
2026-06-08 10:40:42 +08:00 |
|