|
|
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 |
|
|
|
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 |
|
|
|
50c41d8759
|
fix: 埋点统计和日志查询修复
- track.vue: 修复日期格式化(处理 ISO 格式)
- track.vue: 筛选标签改为可滚动
- logs.ts: 修复 queryLogs 参数传递(移除 undefined date)
|
2026-06-08 15:50:30 +08:00 |
|
|
|
3ce5ff4b65
|
fix: 日志时区修复 + 日期选择器
- logger.ts: 使用 UTC+8 时区记录日志
- logs.ts: 统计使用 UTC+8 今日日期
- logs.vue: 日期选择器改用 picker 组件
- 移除未使用的 showDatePicker 变量
|
2026-06-08 15:35:50 +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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
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 |
|
|
|
2705335002
|
feat: 系统配置 + 用户签名
- 新增 sys_config 表,存储应用版本号、标语、描述
- 关于小菜弹窗版本号改为从数据库动态获取
- 用户表新增 slogan 字段(个性签名)
- 编辑资料页面支持修改签名
- 管理后台新增系统配置管理页面
- 更新 CLAUDE.md 文档
|
2026-06-08 10:37:04 +08:00 |
|
|
|
29614fdb70
|
feat: 隐私政策 + 意见反馈系统
- 新增隐私政策页面,满足小程序审核要求
- 新增意见反馈功能(用户提交 + 管理员查看)
- 后端新增 feedbacks 表和反馈 API
- 管理后台新增反馈管理入口
- 我的页面添加意见反馈、隐私政策入口
|
2026-06-08 10:16:28 +08:00 |
|
|
|
8cf240f76b
|
feat: 新增小程序分享功能 — 全局默认+页面级定制
|
2026-06-08 10:09:53 +08:00 |
|
wangxiaogang
|
1abc55323d
|
feat: 用户体验优化 — 首页加载/继续记账/登录恢复
## 首页加载优化
- 分级加载:首屏只请求 overview + recentTx(2个请求)
- 数据新鲜度:30秒内不重复请求
- 次要数据异步加载:budget + todayData
- 非关键数据后台加载:userInfo + notifications
## 继续记账功能
- SaveSuccess 组件新增「继续记一笔」按钮
- 新增模式显示继续按钮,编辑模式自动返回
- 继续记账时保留分类和日期,清空金额和备注
## 登录失败恢复
- 登录重试机制:最多3次,间隔1秒
- 失败后显示提示而非静默等待
## 群组账单逻辑修正
- 群组账单 = 所有群组成员的个人账单之和
- 修改查询:WHERE user_id IN (群组成员)
|
2026-06-07 17:49:46 +08:00 |
|
wangxiaogang
|
bd7af8e512
|
feat: 全面系统检查与修复 — 51项问题修复
## 重大修复
### 安全性修复
- 修复 notification read-all SQL 运算符优先级 bug
- 修复 link_url XSS 漏洞(验证 URL 协议)
- 修复 LIKE 通配符注入(转义 % 和 _)
- 修复 uploadImageIfNeeded 运算符优先级 bug
- 401 时清理所有本地存储(token/nickname/avatar/role/group)
### 数据完整性修复
- 修复公告已读状态共享问题(新建 notification_reads 表)
- 修复群组账单数据缺失(退出群组时保留 group_id)
- 修复群组解散后邀请码仍可加入
- 修复分类迁移未校验目标类型
- 修复群组公告缺少 group_id 必填校验
### 功能修复
- 修复 category PUT /sort 路由冲突
- 修复 GROUP BY 不完整问题
- 修复 budget API 类型不匹配
- 修复 categoryStore.migrateCategory 不刷新本地数据
- 修复 groupStore 并发请求问题
- 修复账单页覆盖 store 数据
- 修复群组预算查询返回 0 而非 null
- 修复通知页面 onShow 不刷新列表
- 修复统计页面不必要的重复请求
### 用户体验优化
- 添加通知详情查看功能(弹窗)
- 添加通知图片服务器上传
- 添加 Markdown 富文本工具栏
- 添加管理页面客户端认证检查
- 添加管理员公告页面下拉刷新
- 添加数据导出进度反馈
- 添加账单删除后筛选金额更新
- Numpad 添加安全区域 padding
### 代码质量提升
- 提取 requireAdmin 为共享中间件
- filter-panel 使用设计 token
- 修复 getCurrentMonth 时区不一致
- 备份功能使用分页查询避免内存问题
- 管理后台仪表盘添加缓存
- 邀请码碰撞重试后报错
## 新增文件
- server/src/middleware/requireAdmin.ts — 共享管理员权限中间件
- client/src/pages/admin/notifications/index.vue — 公告管理页面
## 数据库变更
- 新增 notification_reads 表(公告已读记录)
- 群组解散时保留 groups 记录和 transactions.group_id
|
2026-06-07 15:35:37 +08:00 |
|
wangxiaogang
|
4f42f2c342
|
refactor: UI/UX 全面重构 — 设计系统统一
设计系统:
- uni.scss 扩展:间距/圆角/字体/阴影/动画 token 体系
- 新建 styles/mixins.scss:20+ 公共 mixin
页面重构(12 个页面):
- 首页/记账/统计/账单/个人中心/预算/分类管理
- 群组管理/通知中心/管理员/用户管理/编辑资料
所有硬编码替换为设计 token:
- 颜色:#FFF8F0→$bg, #FFFFFF→$surface, #FF8C69→$primary 等
- 间距:40rpx→$space-xl, 24rpx→$space-md 等
- 字体:28rpx→$font-lg, 24rpx→$font-md 等
- 圆角:20rpx→$radius-lg, 40rpx→$radius-2xl 等
- 阴影:统一使用 $shadow-md/$shadow-sm
重复样式提取为 mixin:
- page-base, sticky-header, nav-bar, card, modal-mask
- tabs, tab, state-box, shimmer, flex-center 等
|
2026-06-06 22:37:46 +08:00 |
|
wangxiaogang
|
a35689cdda
|
feat: 全面公告系统 + 全系统 Bug 修复
全面公告系统:
- notifications 表新增置顶/强提醒/定时发布/过期/配图/链接字段
- 后端增强:7 个接口(列表/置顶/未读数/已读/发布/编辑/删除)
- 首页强提醒公告弹窗
- 通知中心:置顶标记、配图展示、链接跳转、管理员操作
- 管理员发布表单:标题+内容+链接+配图+置顶+强提醒+定时+过期
Bug 修复:
- 401 重试队列竞态导致请求永久挂起
- 多分类筛选条件被静默丢弃
- 网络错误导致群组选择丢失
- Numpad 输入 '.' 显示异常
- transaction store 错误时清空数据
- 首页/预算页 Promise.all 部分失败阻塞关键数据
- CSS prefers-reduced-motion 类名不匹配
- 通知 read-all 遗漏群组通知
- auth.ts 错误日志缺少 stack trace
- stats 页面 v-for key 使用 index
- add 页面重复调用 fetchCategories
|
2026-06-06 22:02:28 +08:00 |
|
wangxiaogang
|
83571de723
|
feat: 迭代三大模块 + 全系统 Bug 修复
新功能:
- 账单筛选统计:多维度筛选面板 + 保存方案 + 结果统计
- 通知公告:系统公告/群组通知/个人提醒 + 通知中心页面
- 管理员后台:数据看板 + 用户管理 + 发布公告
Bug 修复:
- 统计页 fetchPrevMonthData/fetchMaxSingle 添加 group_id
- 群组视图添加 t.group_id 过滤,防止私人数据泄露
- 通知列表添加群组通知条件
- 通知标记已读添加错误处理
- 管理员 API 添加 affectedRows 检查
- 筛选面板金额为 0 时正确回填
- profile onShow 补充 userStore.fetchUserInfo
- 全系统样式修复(overflow/box-sizing)
|
2026-06-06 17:55:29 +08:00 |
|
wangxiaogang
|
bc6eca1e9b
|
feat: 全部图标替换为 Lucide 高质量 PNG (29个)
|
2026-06-06 15:25:15 +08:00 |
|
wangxiaogang
|
1e975cd828
|
style: 样式微调
|
2026-06-04 22:25:09 +08:00 |
|
wangxiaogang
|
f5adf7531f
|
fix: 修复账单加载失败(currentPage 残留赋值)
|
2026-06-04 21:38:49 +08:00 |
|
wangxiaogang
|
9764b5626b
|
feat: 群组管理页面优化 + 分类管理图标修复
- 创建/加入群组合并为 Tab 切换卡片
- 群主可刷新邀请码(后端+前端完整链路)
- 群主可管理成员:查看列表、移除成员
- 新增后端 API:refresh-code / members / remove-member
- 修复分类管理页 FAB 按钮缺少 plus 图标
- 新增 plus/refresh 图标资源
|
2026-06-04 21:28:22 +08:00 |
|
wangxiaogang
|
114263e4b2
|
fix: 清理死代码 + 修复群组模式预算支出计算
- 清理 store 中未使用的 loading 状态(stats/budget/category/user)
- 清理 stats store 冗余类型重导出和 catch 重置逻辑
- 清理 transaction store 未使用的 currentPage
- 清理 api/group 未使用的 GroupDetail/GroupMember/getGroupDetail
- 删除无引用的 api/index.ts barrel 导出文件
- 删除后端未调用的 GET /groups/:id 群组详情路由
- 合并 stats 页面重复的 loadTabData 函数
- 修复预算页群组模式下只算个人支出(不传 group_id)
|
2026-06-04 21:04:59 +08:00 |
|
|
|
5417821906
|
fix: TransactionItem小头像+预算页双显+账单静默刷新
TransactionItem:
- meta 区域改为 view+flex 布局,小头像作为独立元素渲染
- creator-tag 容器包裹头像+昵称,小程序端 image 不嵌套在 text 内
预算页:
- 群组模式顶部显示概览行(群组预算 | 我的预算)
- 下方显示「设置我的预算」卡片,编辑作用于个人预算
- 个人模式保持原样
账单页:
- loadTx 添加 silent 参数,静默刷新时不清空列表
- onShow 调用 loadTx(true, true) 避免骨架屏闪烁
|
2026-06-04 18:10:25 +08:00 |
|