数据库 Schema 设计
LifeOSDatabase_v2 — 离线优先架构下的数据模型、存储引擎、加密机制与迁移策略
| 属性 | 值 |
|---|---|
| 数据库名称 | LifeOSDatabase_v2 |
| 数据库版本 | 1 |
| 数据表数量 | 80+ |
| 加密算法 | AES-256-GCM |
| 存储引擎 | DexieStore (H5) / SqliteStore (App) / EncryptedStore |
1. 架构概览
数据库采用平台自适应的多引擎架构,通过统一接口 IStore<T> 向上层暴露一致的 CRUD API。App 端使用原生 SQLite,H5 端使用 IndexedDB(Dexie.js),所有数据在写入前自动经 EncryptedStore 进行 AES-256-GCM 加密,读取后自动解密。上层 Repository 和页面层完全无感知底层引擎差异和加解密逻辑。
三大引擎
| 引擎 | 平台 | 定位 |
|---|---|---|
| DexieStore | H5 | 基于 IndexedDB,Dexie.js 封装。支持真实索引查询,存储无上限(GB 级)。Schema 变更通过哈希对比自动检测与重建 |
| SqliteStore | App | 基于原生 SQLite,利用设备磁盘持久化。通过 uni-app 条件编译自动选择 |
| EncryptedStore | 通用 | 透明加密层,包装底层 IStore。写入时除 id 外全字段 AES-256-GCM 加密 |
2. 通用基础字段 (BaseEntity)
所有业务表继承的公共字段,由 BaseRepository 在 create() 时自动注入,下表不再重复列出。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
id | string | UUID v4 全局唯一主键 | create() 自动生成,跨设备零冲突 |
createdAt | number | 毫秒级 Unix 时间戳 | create() 取 Date.now() |
updatedAt | number | 最后更新时间戳 | update() 时自动刷新 |
deleted | boolean | 软删除标记,默认 false | 查询默认过滤 false 记录 |
version | number | 乐观锁版本号,初始 1 | 每次更新 +1,同步冲突检测依据 |
syncStatus | SyncStatus | 同步状态:LOCAL_ONLY / WAIT_SYNC / SYNCED / CONFLICT | 默认 LOCAL_ONLY |
3. Repository 模式
每个业务模块继承 BaseRepository<T> 获得通用 CRUD,核心接口:
findById | findAll | findWithPagination | create | update
delete | softDelete | bulkCreate | bulkUpdate | count | findUnsynced4. 加密存储机制
写入时除 id 外全字段 AES-256-GCM 加密为 EncRecord 格式:
{ id: "abc123", _enc: "...", _iv: "...", _algo: "gcm", _mac?: "..." }id 保持明文以支持主键查找;其余字段序列化为 JSON 后加密。密钥由 iOS Keychain / Android Keystore 托管。
5. 数据表清单
以下按业务领域列出全部 80+ 张表。每张表均包含字段级详细定义,BaseEntity 通用字段不再重复。
5.1 系统与基础设施
users
用户账号信息。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
nickname | string | 用户昵称 | — |
avatar | string | 头像 URL | — |
settings | UserSettings | 用户偏好设置 | JSON 对象 |
userProfile
用户个人资料(公开可见部分)。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 显示名称 | — |
avatar | string | 头像 URL | — |
bio | string | 个人简介 | — |
settings
键值对通用配置存储。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
key | string | 配置键名 | 唯一索引 |
value | unknown | 配置值 | 支持任意类型 |
dashboardLayout
仪表盘首页布局配置。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
widgets | { id: string, x: number, y: number, w: number, h: number }[] | 小组件网格布局 | 栅格坐标 + 尺寸 |
syncQueue
同步操作队列,记录所有待同步的数据变更。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
tableName | string | 变更表名 | 索引 |
recordId | string | 变更记录 ID | — |
operation | string | 操作类型:create / update / delete | — |
data | unknown | 变更数据 | — |
syncStatus | string | 同步状态 | 索引 |
retryCount | number | 重试次数 | — |
syncConfig
同步后端配置。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
type | string | 同步类型(如 gist、webdav) | — |
repo | string | 仓库地址 | — |
token | string | 认证令牌 | — |
gistId | string | Gist ID | Gist 类型时使用 |
enabled | boolean | 是否启用同步 | — |
aiConfig
AI 服务配置。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
provider | string | AI 服务商 | — |
apiKey | string | API 密钥 | — |
model | string | 默认模型 | — |
features
功能模块注册表,对应 模块功能清单。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
key | string | 模块唯一标识 | 如 task_management |
icon | string | 图标类名 | — |
bg | string | 背景色 | — |
route | string | 页面路由 | 如 /pages/task/index |
catKey | string | 所属分类标识 | 索引 |
label | string | 模块名称 | — |
desc | string | 功能描述 | — |
lifeModes
生活模式预设(场景化配置组合)。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
| LifeMode 类型 | — | 场景名称、时间范围、关联模块列表 | 类型定义见 src/types/life-mode.ts |
lifeEvents
生活事件定义(事件触发条件与模块联动)。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
| LifeEvent 类型 | — | 事件触发规则、关联动作 | 类型定义见 src/types/life-event.ts |
5.2 效率工具
tasks
任务管理,核心表之一。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
title | string | 任务标题 | 必填 |
description | string | 任务描述 | — |
status | TaskStatus | 状态:TODO / IN_PROGRESS / DONE / CANCELLED | — |
priority | TaskPriority | 优先级:LOW / MEDIUM / HIGH / URGENT | — |
categoryId | string | null | 关联任务分类 ID | 索引 |
tags | string[] | 自由标签列表 | — |
dueDate | number | null | 到期时间戳 | 索引 |
location | {name, longitude?, latitude?} | 地点信息 | — |
repeatRule | {frequency, interval?, endDate?} | null | 重复规则 | frequency: daily/weekly/monthly/yearly |
archived | boolean | 归档标记 | — |
completedAt | number | null | 完成时间戳 | — |
projectId | string | null | 所属项目 ID | — |
sortOrder | number | 排序权重 | 数值越小越靠前 |
group | {name, color?} | null | 分组信息 | — |
索引:status、dueDate、priority、categoryId、createdAt
taskCategories
任务分类。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 分类名称 | — |
color | string | 分类颜色 | — |
icon | string | 分类图标 | — |
sortOrder | number | 排序权重 | — |
parentId | string | null | 父分类 ID | 支持嵌套 |
calendarEvents
日历事件。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
title | string | 事件标题 | — |
description | string | 事件描述 | — |
startTime | number | 开始时间戳 | 索引 |
endTime | number | 结束时间戳 | 索引 |
location | unknown | 地点信息 | — |
allDay | boolean | 是否全天事件 | — |
color | string | 事件颜色 | — |
repeat | unknown | 重复规则 | — |
taskId | string | null | 关联任务 ID | — |
calendarId | string | 所属日历分类 ID | 索引 |
索引:startTime、endTime、calendarId
calendarCategories
日历分类。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 分类名称 | — |
color | string | 分类颜色 | — |
isVisible | boolean | 是否显示 | — |
sortOrder | number | 排序权重 | — |
pomodoroSessions
番茄钟专注记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
| PomodoroSession 类型 | — | 任务关联、开始/结束时间、专注时长、类型 | 类型定义见 src/modules/pomodoro/types.ts |
pomodoroSettings
番茄钟设置。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
focusMins | number | 专注时长(分钟) | 默认 25 |
shortBreakMins | number | 短休息时长(分钟) | 默认 5 |
longBreakMins | number | 长休息时长(分钟) | 默认 15 |
longBreakInterval | number | 长休息间隔(次) | 默认 4 |
flows
流程图/工作流定义。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 流程名称 | — |
description | string | 流程描述 | 可选 |
steps | {title: string, content: string, order: number}[] | 步骤定义 | — |
lastRun | number | 最后执行时间 | 可选 |
flowRuns
流程图执行记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
flowId | string | 关联流程 ID | — |
flowName | string | 流程名称(冗余) | 避免关联查询 |
stepStatus | {stepIndex: number, done: boolean}[] | 步骤完成状态 | — |
completed | boolean | 整体是否完成 | — |
date | string | 执行日期 | — |
note | string | 备注 | 可选 |
goalRecords
目标追踪。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
title | string | 目标标题 | — |
desc | string | 目标描述 | — |
target | number | 目标值 | — |
current | number | 当前进度 | — |
deadline | number | 截止时间戳 | — |
category | string | 分类 | — |
status | string | 状态 | — |
studyPlans
学习计划。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 计划名称 | — |
desc | string | 计划描述 | — |
total | number | 总任务量 | — |
progress | number | 当前进度 | — |
deadline | number | 截止时间戳 | — |
ideas
创意灵感。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
title | string | 标题 | — |
desc | string | 详细描述 | — |
tags | string[] | 标签列表 | — |
5.3 知识管理
notes
笔记/知识条目,核心表之一。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
notebookId | string | 所属笔记本 ID | 索引 |
title | string | 笔记标题 | — |
content | string | 笔记内容 | Markdown 格式 |
tags | string[] | 标签列表 | 索引 |
索引:notebookId、tags、createdAt
notebooks
笔记本/分类。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 笔记本名称 | — |
color | string | 颜色标记 | — |
sortOrder | number | 排序权重 | — |
knowledgeTags
知识标签。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 标签名称 | — |
color | string | 标签颜色 | — |
5.4 财务资产
transactions
交易记录,核心表之一。金额以分为单位存储。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
type | TransactionType | 交易类型:income / expense / transfer | — |
amount | number | 金额(分为单位) | 避免浮点精度问题 |
category | string | 分类标签 | 索引 |
categoryIcon | string | 分类图标 | — |
remark | string | 备注 | — |
date | number | 交易日期时间戳 | — |
accountId | string | 关联账户 ID | — |
tags | string[] | 自由标签 | — |
location | {name, longitude?, latitude?} | 交易地点 | — |
索引:date、type、category
financeAccounts
财务账户。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 账户名称 | — |
type | string | 账户类型:cash / bank / credit / investment / other | — |
balance | number | 余额(分为单位) | — |
currency | string | 货币代码 | 如 CNY、USD |
color | string | 颜色标记 | — |
icon | string | 图标 | — |
isArchived | boolean | 是否归档 | — |
budgets
预算。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 预算名称 | — |
category | string | 预算分类 | — |
amount | number | 预算金额(分) | — |
period | string | 预算周期 | 如 monthly、yearly |
startDate | number | 开始日期 | — |
spent | number | 已支出金额(分) | — |
isActive | boolean | 是否启用 | — |
loanPlans
贷款计划。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
type | string | 贷款类型 | — |
name | string | 贷款名称 | — |
bank | string | 贷款银行 | — |
totalAmount | number | 贷款总额(分) | — |
totalPeriods | number | 总还款期数 | — |
rate | number | 年利率 | 如 0.04 表示 4% |
rateType | string | 利率类型 | — |
borrowDate | string | 借款日期 | — |
repayMethod | string | 还款方式 | 等额本息 / 等额本金 |
firstRepayDate | string | 首次还款日 | — |
totalInterest | number | 总利息(分) | — |
note | string | 备注 | — |
installments | unknown[] | 分期计划详情 | 每期本金+利息 |
splitBills
账本拆分(AA 分账)。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 账单名称 | — |
total | number | 总金额 | — |
people | {name: string, amount: number}[] | 参与人与金额 | — |
date | string | 日期 | — |
settled | boolean | 是否已结算 | — |
moneyLendRecords
借钱(借出)。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
amount | number | 借出金额 | — |
person | string | 借款对象 | — |
date | string | 借款日期 | — |
reason | string | 借款原因 | — |
returned | boolean | 是否已归还 | — |
moneyBorrowRecords
借钱(借入)。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
amount | number | 借入金额 | — |
person | string | 借款来源 | — |
date | string | 借款日期 | — |
reason | string | 借款原因 | — |
returned | boolean | 是否已归还 | — |
5.5 健康运动
healthRecords
健康综合记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
| HealthRecord 类型 | — | 按 type+date 复合索引存储各类健康数据 | 类型定义见 src/modules/health/types.ts |
索引:[type+date] 复合、date
exerciseRecords
运动记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
| ExerciseRecord 类型 | — | 运动类型、时长、消耗卡路里 | 类型定义见 src/modules/health/types.ts |
sleepRecords
睡眠记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
| SleepRecord 类型 | — | 入睡/起床时间、质量评分、中断次数 | 类型定义见 src/modules/health/types.ts |
healthMetrics
健康指标。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
| HealthMetric 类型 | — | 血压、心率、血糖等多指标记录 | 类型定义见 src/modules/health/types.ts |
dietRecords
饮食记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
type | string | 餐次类型 | 早/午/晚/加餐 |
food | string | 食物描述 | — |
photo | string | 食物照片 | — |
notes | string | 备注 | — |
date | number | 日期时间戳 | 索引 |
索引:date
waterRecords
饮水记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
amount | number | 饮水量(毫升) | — |
date | string | 日期 | 索引 |
索引:date
bodyRecords
身体数据。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
date | string | 测量日期 | — |
weight | number | 体重(kg) | — |
height | number | 身高(cm) | — |
bmi | number | BMI 值 | — |
note | string | 备注 | — |
medicinePlans
用药计划。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 药品名称 | — |
dosage | string | 剂量 | — |
frequency | string | 频次 | 如 daily、bid、tid |
times | string[] | 用药时间 | 如 ["08:00", "20:00"] |
startDate | string | 开始日期 | — |
endDate | string | 结束日期 | — |
note | string | 备注 | — |
periodRecords
经期记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
date | string | 日期 | — |
type | string | 类型 | — |
intensity | number | 强度 | — |
note | string | 备注 | — |
periodSettings
经期设置。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
key | string | 设置键 | — |
cycle | number | 周期天数 | 默认 28 |
duration | number | 持续天数 | 默认 5 |
lastPeriod | string | 上次经期日期 | — |
5.6 生活记录
habits
习惯定义。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
| Habit 类型 | — | name, icon, color, frequency, target, categoryId | 类型定义见 src/modules/habit/types.ts |
索引:categoryId
habitRecords
习惯打卡记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
| HabitRecord 类型 | — | habitId, date, completed, value, note | 类型定义见 src/modules/habit/types.ts |
索引:[habitId+date] 复合、date
moodRecords
心情记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
date | string | 日期 | 索引 |
mood | number | 心情指数(1-5) | — |
note | string | 备注 | — |
tags | string[] | 标签 | — |
索引:date
diaryEntries
日记。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
date | string | 日期 | 索引 |
title | string | 日记标题 | — |
content | string | 日记正文 | — |
mood | string | 心情 | — |
weather | string | 天气 | — |
tags | string[] | 标签 | — |
索引:date
dreamRecords
梦境记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
date | string | 日期 | — |
title | string | 梦境标题 | — |
content | string | 梦境内容 | — |
type | string | 梦境类型 | — |
emotion | string | 情绪 | — |
clarity | number | 清晰度 | — |
tags | string[] | 标签 | — |
achievementRecords
成就。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
key | string | 成就标识 | — |
name | string | 成就名称 | — |
icon | string | 成就图标 | — |
desc | string | 成就描述 | — |
unlocked | boolean | 是否已解锁 | — |
unlockedAt | number | 解锁时间 | 可选 |
memos
备忘录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
title | string | 标题 | — |
content | string | 内容 | — |
color | string | 颜色标记 | — |
pinned | boolean | 是否置顶 | — |
shoppingRecords
购物清单。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 商品名称 | — |
amount | number | 金额 | — |
bought | boolean | 是否已购买 | — |
category | string | 分类 | — |
wishlistItems
心愿清单。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 心愿名称 | — |
price | number | 价格 | — |
reason | string | 心愿理由 | — |
priority | string | 优先级 | — |
url | string | 链接 | — |
trajectoryRecords
活动轨迹。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
location | string | 地点名称 | — |
activity | string | 活动类型 | 可选 |
longitude | number | 经度 | 可选 |
latitude | number | 纬度 | 可选 |
note | string | 备注 | — |
date | number | 日期时间戳 | 索引 |
索引:date
5.7 家庭生活
pets
宠物信息。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 宠物名字 | — |
species | string | 物种 | 如 猫、狗 |
breed | string | 品种 | — |
birthDate | string | 出生日期 | — |
avatar | string | 头像 | — |
note | string | 备注 | — |
petActivities
宠物活动记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
petId | string | 关联宠物 ID | — |
type | string | 活动类型 | 如 洗澡、驱虫、疫苗 |
date | string | 日期 | — |
note | string | 备注 | — |
petWeights
宠物体重追踪。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
petId | string | 关联宠物 ID | — |
weight | number | 体重(kg) | — |
date | string | 测量日期 | — |
plants
植物信息。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 植物名字 | — |
species | string | 物种 | — |
waterInterval | number | 浇水间隔(天) | — |
lastWatered | string | 上次浇水日期 | — |
sunlight | string | 光照需求 | — |
note | string | 备注 | — |
image | string | 照片 | — |
plantActivities
植物活动记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
plantId | string | 关联植物 ID | — |
type | string | 活动类型 | 如 施肥、换盆、修剪 |
date | string | 日期 | — |
note | string | 备注 | — |
plantWaterings
浇水记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
plantId | string | 关联植物 ID | — |
date | string | 浇水日期 | — |
amount | string | 浇水量 | — |
recipeItems
食谱。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 菜名 | — |
category | string | 分类 | — |
ingredients | string[] | 食材列表 | — |
steps | string | 制作步骤 | — |
medicalRecords
就诊记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
hospital | string | 医院名称 | — |
department | string | 科室 | — |
doctor | string | 医生姓名 | — |
description | string | 病情描述 | — |
medication | string | 用药方案 | — |
cost | number | 费用 | — |
date | number | 就诊日期时间戳 | — |
people
人脉管理。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
| PeopleRecord 类型 | — | 姓名、关系、联系方式、关联借贷和纪念日 | 类型定义见 src/types/entity-relation.ts |
channels
渠道管理。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
| Channel 类型 | — | 渠道名称、类型、图标 | 类型定义见 src/modules/channel/types.ts |
5.8 实用工具
aiConversations
AI 对话会话。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
title | string | 会话标题 | — |
model | string | 使用的模型 | — |
aiMessages
AI 对话消息。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
conversationId | string | 关联对话 ID | — |
role | string | 角色:user / ai | — |
content | string | 消息内容 | — |
status | string | 消息状态 | — |
errorMsg | string | 错误信息 | 可选 |
passwordEntries
密码管理。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
title | string | 条目标题 | — |
username | string | 用户名 | — |
password | string | 密码 | — |
url | string | 关联网址 | — |
note | string | 备注 | — |
tags | string[] | 标签 | — |
docItems
证件管理。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 证件名称 | — |
type | string | 证件类型 | — |
number | string | 证件号码 | — |
expireDate | number | 到期日 | — |
frontImage | string | 证件照片 | — |
note | string | 备注 | — |
packageTracking
快递追踪。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
number | string | 快递单号 | — |
company | string | 快递公司 | — |
status | string | 物流状态 | — |
desc | string | 物流描述 | — |
items
物品库存。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
| Item 类型 | — | 物品名称、分类、购买日期 | 类型定义见 src/modules/inventory/types.ts |
索引:category、purchaseDate
warrantyItems
产品保修。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 产品名称 | — |
category | string | 分类 | — |
purchaseDate | number | 购买日期 | — |
warrantyPeriod | number | 保修期(月) | — |
expireDate | number | 保修到期日 | — |
note | string | 备注 | — |
repairRecords
维修记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
warrantyId | string | 关联保修 ID | — |
status | string | 维修状态 | — |
description | string | 故障描述 | — |
reportDate | number | 送修日期 | — |
completeDate | number | 完成日期 | 可选 |
note | string | 备注 | — |
carVehicles
车辆管理。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
vehicles | {id, name, plate, brand, model, year, mileage, insuranceDate, inspectionDate, maintenance}[] | 车辆列表 | 每辆车含保险/年检/保养信息 |
movieItems
观影记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
title | string | 影片标题 | — |
year | string | 年份 | — |
rating | number | 评分 | — |
status | string | 观看状态 | — |
note | string | 备注 | — |
birthdayItems
纪念日。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 名称 | — |
date | string | 日期 | — |
type | string | 类型 | — |
lunar | boolean | 是否农历 | — |
note | string | 备注 | — |
coupons
优惠卡券。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 卡券名称 | — |
code | string | 券码 | — |
discount | string | 折扣信息 | — |
expireDate | number | 到期日 | — |
used | boolean | 是否已使用 | — |
addresses
地址管理。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 收件人 | — |
phone | string | 电话 | — |
province | string | 省 | — |
city | string | 市 | — |
district | string | 区 | — |
detail | string | 详细地址 | — |
tag | string | 标签 | 如 家、公司 |
itemLendRecords
物品借出。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
item | string | 物品名称 | — |
person | string | 借出对象 | — |
date | string | 借出日期 | — |
returnDate | string | 归还日期 | 可选 |
returned | boolean | 是否已归还 | — |
itemBorrowRecords
物品借入。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
item | string | 物品名称 | — |
person | string | 借入来源 | — |
date | string | 借入日期 | — |
returnDate | string | 归还日期 | 可选 |
returned | boolean | 是否已归还 | — |
5.9 辅助与历史
scheduleEvents
日程事件。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
title | string | 事件标题 | — |
description | string | 事件描述 | 可选 |
startTime | number | 开始时间戳 | — |
endTime | number | 结束时间戳 | — |
allDay | boolean | 是否全天 | — |
color | string | 颜色 | — |
location | unknown | 地点 | 可选 |
repeat | unknown | 重复规则 | 可选 |
countdownRecords
倒计时。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 倒计时名称 | — |
date | number | 目标日期时间戳 | — |
type | string | 类型 | — |
repeat | boolean | 是否每年重复 | — |
subscriptionRecords
订阅记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 订阅名称 | — |
amount | number | 金额 | — |
cycle | string | 周期 | 如 monthly、yearly |
nextDate | number | 下次扣费日期 | — |
category | string | 分类 | — |
readerBooks
阅读书目。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
title | string | 书名 | — |
author | string | 作者 | — |
chapterIds | {title: string, isRead: boolean}[] | 章节列表 | 含阅读状态 |
chapterCount | number | 总章节数 | — |
customPages
自定义页面定义。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
name | string | 页面名称 | — |
icon | string | 图标 | — |
fields | unknown[] | 自定义字段配置 | — |
customPageRecords
自定义页面数据。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
pageId | string | 关联页面 ID | — |
data | Record<string, unknown> | 页面数据 | 键值对 |
weatherRecords
天气记录。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
city | string | 城市名称 | — |
data | unknown | 天气数据 | JSON |
date | string | 日期 | — |
weatherFavorites
天气收藏。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
city | string | 城市名称 | — |
code | string | 城市代码 | — |
clipboardItems
剪贴板。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
text | string | 剪贴内容 | — |
type | string | 内容类型 | — |
convertHistory
单位转换历史。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
from | string | 源单位 | — |
to | string | 目标单位 | — |
amount | number | 源数值 | — |
result | number | 转换结果 | — |
date | string | 日期 | — |
exchangeHistory
汇率换算历史。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
from | string | 源货币 | — |
to | string | 目标货币 | — |
rate | number | 汇率 | — |
date | string | 日期 | — |
recentSearches
最近搜索。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
keyword | string | 搜索关键词 | — |
date | string | 搜索日期 | — |
5.10 搜索、历史与关系
magicHistory
AI Magic 历史。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
prompt | string | 用户输入 | — |
result | string | AI 输出 | — |
type | string | 操作类型 | — |
translateHistory
翻译历史。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
from | string | 源语言 | — |
to | string | 目标语言 | — |
text | string | 原文 | — |
result | string | 译文 | — |
calcHistory
计算器历史。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
expression | string | 计算表达式 | — |
result | string | 计算结果 | — |
entityRelations
跨模块实体关系。
| 字段 | 类型 | 描述 | 备注 |
|---|---|---|---|
| EntityRelation 类型 | — | 源实体、目标实体、关系类型 | 类型定义见 src/types/entity-relation.ts |
6. 索引设计
| 表 | 索引字段 | 用途 |
|---|---|---|
tasks | status, dueDate, priority, categoryId, createdAt | 按状态/日期/优先级筛选任务列表 |
calendarEvents | startTime, endTime, calendarId | 按时间和日历查询事件 |
habits | categoryId | 按分类筛选习惯 |
habitRecords | [habitId+date] 复合, date | 查询某习惯打卡记录 / 某日全部打卡 |
notes | notebookId, tags, createdAt | 按笔记本/标签/时间查笔记 |
transactions | date, type, category | 按时间/类型/分类统计收支 |
healthRecords | [type+date] 复合, date | 按健康类型和时间范围查询 |
items | category, purchaseDate | 按分类/购买日期查库存 |
settings | key (唯一) | 按键名快速定位配置 |
features | catKey | 按分类列出功能模块 |
syncQueue | tableName, syncStatus | 按表名/状态查询待同步项 |
dietRecords | date | 按日期查饮食 |
waterRecords | date | 按日期查饮水 |
moodRecords | date | 按日期查心情 |
diaryEntries | date | 按日期查日记 |
trajectoryRecords | date | 按日期查轨迹 |
7. 数据迁移策略
Dexie Schema 自动迁移 (H5)
每次应用启动时,DexieStore 计算当前 TABLE_NAMES + INDEXES 的稳定哈希值,与 localStorage 中保存的上次哈希比对。若不一致,自动删除旧数据库并按新 schema 重建。开发者只需修改 schema.ts,无需手动管理版本号。
Legacy 数据迁移 (v1 → v2)
首次启动时检测旧的加密数据格式(uni.storage 中 lifeos_{tableName} 键值对),若存在则提示用户输入 v1 密码解密数据、映射到 BaseEntity 格式、批量写入新引擎。迁移完成后写入标记 lifeos_migrated_v2。迁移过程中单表失败不影响其他表导入,旧数据保留不删除。