- 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>
This commit is contained in:
@@ -24,6 +24,10 @@ db.exec(`
|
||||
solarYear INTEGER,
|
||||
solarMonth INTEGER,
|
||||
solarDay INTEGER,
|
||||
lunarYear INTEGER,
|
||||
lunarMonth INTEGER,
|
||||
lunarDay INTEGER,
|
||||
isLeapMonth INTEGER DEFAULT 0,
|
||||
importance TEXT,
|
||||
remindEnabled INTEGER DEFAULT 0,
|
||||
remindDays INTEGER DEFAULT 0,
|
||||
@@ -34,6 +38,18 @@ db.exec(`
|
||||
CREATE INDEX IF NOT EXISTS idx_anniv_openid ON anniversaries(openid);
|
||||
CREATE INDEX IF NOT EXISTS idx_anniv_remind ON anniversaries(remindEnabled);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS persons (
|
||||
id TEXT PRIMARY KEY,
|
||||
openid TEXT NOT NULL,
|
||||
name TEXT NOT NULL,
|
||||
nickname TEXT,
|
||||
avatar TEXT,
|
||||
remark TEXT,
|
||||
createTime INTEGER,
|
||||
updateTime INTEGER
|
||||
);
|
||||
CREATE INDEX IF NOT EXISTS idx_person_openid ON persons(openid);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS remind_logs (
|
||||
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
||||
anniversaryId TEXT,
|
||||
@@ -48,4 +64,18 @@ db.exec(`
|
||||
CREATE INDEX IF NOT EXISTS idx_log_date ON remind_logs(sendDate);
|
||||
`)
|
||||
|
||||
// 旧库迁移:CREATE TABLE IF NOT EXISTS 不会给已存在的表加列,需要手动 ALTER
|
||||
// 失败说明列已存在,安全忽略
|
||||
function tryAddColumn(table, column, type) {
|
||||
try {
|
||||
db.prepare(`ALTER TABLE ${table} ADD COLUMN ${column} ${type}`).run()
|
||||
} catch (e) {
|
||||
if (!/duplicate column/i.test(e.message)) throw e
|
||||
}
|
||||
}
|
||||
tryAddColumn('anniversaries', 'lunarYear', 'INTEGER')
|
||||
tryAddColumn('anniversaries', 'lunarMonth', 'INTEGER')
|
||||
tryAddColumn('anniversaries', 'lunarDay', 'INTEGER')
|
||||
tryAddColumn('anniversaries', 'isLeapMonth', 'INTEGER DEFAULT 0')
|
||||
|
||||
module.exports = db
|
||||
|
||||
Reference in New Issue
Block a user