yuming
|
bc4fb7445d
|
修复保存纪念日时授权订阅消息未上报额度的缺口
requestSubscribe() 改为委托给 utils/subscribe.js 的
requestAndReport(),用户同意授权后会把新增额度同步上报后端,
避免最主要的授权入口被漏记导致余额系统性低估、定时任务拒发。
onSubmit 里原来依赖 reject 的 try/catch 改为直接判断布尔返回值,
消除死代码分支,"拒绝不阻塞保存"的行为保持不变。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-16 09:31:03 +08:00 |
|
yuming
|
1142346e24
|
新增前端订阅模块,收敛模板 ID 到唯一来源
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-16 09:25:12 +08:00 |
|
yuming
|
e9c7330f31
|
数据自愈迁移 + 后端同步幂等,版本号 v2.1.7 → v2.1.8
部署到群晖 / deploy (push) Successful in 57s
后端(server/src/index.js)——两处同步幂等:
1. deleteAnniversary 删除不存在的记录时返回 success:true。
原先返回 false,被前端 sync.js:34 当作失败重新入队,那条删除会永远留在
pending_sync_queue 里每次启动重试且永远清不掉。
2. updateAnniversary / updatePerson 在记录不存在时退化为插入(upsert)。
同一类问题:本地才是主真相源,若某条记录当初的 add 没同步成功,
之后所有 update 都会失败并无限重试。
前端 —— 新增 utils/migrate.js,在 app.js onLaunch 执行:
3. 补齐老数据缺失的农历字段。早期 lunar_birthday 类型只记公历日期,
没有 lunarMonth/lunarDay,这类记录会被安全降级成按公历算——不崩,但每年日期是错的。
用它存的公历日期反算回农历补齐。
4. 为孤儿纪念日重建人员。部分纪念日的 personId 指向已不存在的人(历史上删人没级联干净),
首页按 persons 遍历所以隐形,日历页按 anniversaries 遍历会显示成「未知」。
用记录自带的 personName 重建,并沿用原 personId,纪念日无需改动。
迁移放在客户端而非后端跑 SQL:本地 wx.Storage 是主真相源,改服务端会被客户端同步覆盖。
每次启动都跑而非记版本号:函数是纯检测式的,无坏数据时零写入零请求,
还能顺带覆盖「从云端拉回坏数据」的情况。顺便把原本是死代码的 initData() 替换掉。
⚠️ 本次后端有改动,需要重新部署;部署顺序应为先后端、后小程序。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-15 15:55:44 +08:00 |
|
yuming
|
1943fd5c1a
|
修复 P0 五个问题,版本号 v2.1.6 → v2.1.7
1. 删除纪念日不同步云端:storage.deleteAnniversary 只删本地,后端记录仍是
remindEnabled=1,定时任务会继续推已删除的纪念日,换设备恢复时还会被拉回来。
补上 _syncAnniversary('delete')。
2. 农历纪念日日期计算三处口径不一:date.js 新增 getOccurrenceInYear /
getNextOccurrenceOf,首页、详情页、日历页统一复用。
顺带修掉一个隐藏更深的坑——老实现把公历年当农历年传给 lunarToSolar,
农历腊月会整整错一年(农历2026腊月十五 = 公历2027-01-22,老算法给 2028-01-11)。
新实现同时试 year-1 / year 两个农历年,取真正落在该公历年内的那次。
删除已无调用方的旧 getNextOccurrence(month, day),它正是首页 bug 的来源。
3. 详情页倒计时永远显示「已过 N 天」:原先按录入年份算 daysUntil,
改为按下一次发生算;「日期」一行仍展示原始录入日期。
4. 日历页切 tab 后不刷新:渲染从 onLoad 挪到 onShow(tabBar 页面实例常驻),
不重置当前年月,保留用户翻到的月份。
5. 清空数据后重启会复活:只清本地的话 pullFromCloudIfEmpty 会把云端整份拉回来。
新增 storage.clearCloudData()(sync 传空数组),设置页改为先清云端、
成功才清本地;云端失败则中止并提示,本地数据保留。
均为小程序侧改动,server/ 未改动,无需重新部署。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-15 12:08:26 +08:00 |
|
yuming
|
192867a8d5
|
版本号显示 v2.1.5 → v2.1.6
部署到群晖 / deploy (push) Successful in 41s
带农历日期显示的版本,重新上传体验版。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-02 14:21:11 +08:00 |
|
yuming
|
e643512dfa
|
纪念日新增农历日期显示
部署到群晖 / deploy (push) Successful in 44s
- 人员详情页:日期下方显示完整农历「农历 YYYY年 X月X日」
- 日历页本月纪念日列表:日期下方显示农历月日「X月X日」
- 公历事件用 solarToLunar 算当年对应农历
- 农历事件按当年公历落点反算农历(与原始农历一致)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-02 14:19:14 +08:00 |
|
yuming
|
f0835726de
|
版本号显示 v2.1.4 → v2.1.5
部署到群晖 / deploy (push) Successful in 36s
带日历跨年修复的版本,重新上传体验版。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-02 13:36:28 +08:00 |
|
yuming
|
030e587480
|
修复日历跨年不显示纪念日
部署到群晖 / deploy (push) Successful in 40s
原 buildEventIndex / loadMonthEvents 用 a.solarYear === year 判断,
只匹配纪念日原始录入年份的那一年。生日/纪念日是周年性事件,应
每年这天都出现。
- 去掉 solarYear === year 判断
- 新增 getAnniversaryDateInYear():公历直接用 solarMonth/solarDay
- 农历用 lunarToSolar 重算当年公历,因农历对应公历每年浮动
- 当年无闰月时 lunarToSolar 自动忽略 isLeap 回退普通月
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-02 13:35:20 +08:00 |
|
yuming
|
fb7b12ff76
|
版本号显示 v2.1.3 → v2.1.4
部署到群晖 / deploy (push) Successful in 48s
为即将上传的微信小程序新版做准备,保持「数据」页底部
版本号与微信后台一致。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-02 13:04:31 +08:00 |
|
yuming
|
3f30c9c017
|
修复 person-detail 按钮文字未居中
部署到群晖 / deploy (push) Successful in 40s
原因:微信 <button> 自带 min-height 88rpx 和固有 line-height,
会顶歪自定义高度。改用 <view> + flex 居中。
- 5 个 button 改为 view(保留 class/bindtap/data-id)
- action-btn / edit-btn / delete-btn 改 flex 居中
- add-btn 加 inline-flex 居中
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-02 12:54:27 +08:00 |
|
yuming
|
fb036fd65f
|
设置页改造:「设置」→「数据」,做成数据中心
- tabBar 文字 ⚙️ 设置 → 💾 数据
- Header 收敛成 标题 + 一行统计 + 上次备份时间
- 删除「关于」「温馨提示」整块装饰内容
- 「数据管理」拆成「备份」+「危险操作」两组
- 导出成功后写入 lastBackupAt,进页面格式化展示
- 图标背景从冷色统一为纸感暖色
- 底部加版本号 v2.1.3 小字
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-02 12:54:20 +08:00 |
|
yuming
|
3f176924d0
|
视觉重构:紫渐变 SaaS 风 → 纸感编辑风(A 方案)
部署到群晖 / deploy (push) Successful in 43s
旧版多处违反 impeccable 设计规范(gradient text、6rpx 粗色条 border-left、
glassmorphism、bounce 动画)且整体呈现典型「AI/SaaS 通用紫渐变」(#6366f1 系、
#667eea 系),用户反馈「AI 味儿太浓」。
色板(OKLCH 概念,hex 落地):
- 背景:浅米黄 #FAF6ED
- 主文字:深墨蓝 #1F1D2B
- 暖灰副文字:#8A8278
- 强调(仅 today / FAB):墨红 #C8412F
涉及改动:
- app.wxss:删模板自带 .container padding 200rpx(首页/日历顶部空白真凶)+ 重写全局色板
- index.wxml/wxss:去紫渐变 Header + glassmorphism stats + border-left 大色条 + bounce
- calendar.wxml/wxss/json:去紫渐变月份头 + today 大色块 + section-title 6rpx 紫条
- settings.wxss:同款紫 Header + tips-card 6rpx 紫条 → 全卡边线 + 浅暖底
- add-anniversary.wxss:chip-active 紫 / 取消提交按钮渐变 / importance 高饱和色 → 统一
- add-person.wxss:gradient text + 紫 dashed 头像占位 + 多重渐变 → 全套重写
- person-detail.wxss:微信绿 + 灰底默认色 → 方向 A 色板
- utils/constants.js:IMPORTANCE_COLORS 高/中/低 = 墨红/焦糖/苔绿(替代橙红/橘/鲜绿)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-02 09:27:16 +08:00 |
|
yuming
|
756d57d818
|
简化纪念日类型:去掉"农历生日"类型,公历/农历改由 isLunar 字段决定
部署到群晖 / deploy (push) Successful in 44s
- typeList 从 5 项简化到 4 项:生日 / 结婚纪念日 / 订婚纪念日 / 其他纪念日
- TYPE_NAMES / TYPE_ICONS 中 lunar_birthday 保留兼容映射(也映射到「生日」+ 🎂),
让线上历史数据自然回显,无需数据库迁移(方案 A)
- getTypeIndex('lunar_birthday') = 0,老数据编辑时正确回显「生日」
- index.js 列表筛选和 wxml 图标判断本来已含 lunar_birthday 兼容,无需改
老数据自然淘汰:用户重新保存时新数据写 type='birthday',老数据 type 保留
直到下次编辑保存才升级。
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-02 07:30:37 +08:00 |
|
yuming
|
ddcfe3334e
|
v2.1.0 流程改造 + 农历准确性修复 + 双向同步 + 闰月支持
部署到群晖 / deploy (push) Successful in 44s
- Phase 1: 添加纪念日合并人物创建流程(方案 B)
- Phase 2: 农历提醒按 lunarMonth/Day 计算每年公历
- Phase 3: 人员数据同步到后端(新增 /api/person)
- Phase 4: 新设备启动从云端恢复数据
- Phase 5: 工具函数收敛 utils/format.js
- Phase 6: 同步失败入队 + 启动重试
- Phase 7: 闰月生日完整支持(含 isLeapMonth + UI 警示)
- 修复 lunarInfo 数据表错位(替换为权威源 jjonline/calendar.js)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-02 05:51:17 +08:00 |
|
yuming
|
3965e542fc
|
接入自建后端 + Gitea CI/CD
部署到群晖 / deploy (push) Failing after 6m22s
- 新增 server/:Node + Express + SQLite + node-cron 实现登录、纪念日 CRUD 和定时订阅消息推送
- 新增 .gitea/workflows/deploy.yml:推送即触发群晖 Docker 部署,监听 15002
- utils/api.js:自动按 envVersion 切换本地/线上 BASE_URL
- app.js 与 add-anniversary.js 移除 wx.cloud 调用,改走自建后端
- cloudfunctions/ 暂保留以便回滚
- 一并提交此前未入库的首页 / 设置页 / 日历 / 万年历等改造
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
|
2026-06-01 15:44:09 +08:00 |
|
yuming
|
6747ade9c4
|
Initial Commit
|
2025-10-26 19:29:30 +08:00 |
|