Skip to content

数据库 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 和页面层完全无感知底层引擎差异和加解密逻辑。

三大引擎

引擎平台定位
DexieStoreH5基于 IndexedDB,Dexie.js 封装。支持真实索引查询,存储无上限(GB 级)。Schema 变更通过哈希对比自动检测与重建
SqliteStoreApp基于原生 SQLite,利用设备磁盘持久化。通过 uni-app 条件编译自动选择
EncryptedStore通用透明加密层,包装底层 IStore。写入时除 id 外全字段 AES-256-GCM 加密

2. 通用基础字段 (BaseEntity)

所有业务表继承的公共字段,由 BaseRepositorycreate() 时自动注入,下表不再重复列出。

字段类型描述备注
idstringUUID v4 全局唯一主键create() 自动生成,跨设备零冲突
createdAtnumber毫秒级 Unix 时间戳create()Date.now()
updatedAtnumber最后更新时间戳update() 时自动刷新
deletedboolean软删除标记,默认 false查询默认过滤 false 记录
versionnumber乐观锁版本号,初始 1每次更新 +1,同步冲突检测依据
syncStatusSyncStatus同步状态:LOCAL_ONLY / WAIT_SYNC / SYNCED / CONFLICT默认 LOCAL_ONLY

3. Repository 模式

每个业务模块继承 BaseRepository<T> 获得通用 CRUD,核心接口:

findById | findAll | findWithPagination | create | update
delete | softDelete | bulkCreate | bulkUpdate | count | findUnsynced

4. 加密存储机制

写入时除 id 外全字段 AES-256-GCM 加密为 EncRecord 格式:

typescript
{ id: "abc123", _enc: "...", _iv: "...", _algo: "gcm", _mac?: "..." }

id 保持明文以支持主键查找;其余字段序列化为 JSON 后加密。密钥由 iOS Keychain / Android Keystore 托管。


5. 数据表清单

以下按业务领域列出全部 80+ 张表。每张表均包含字段级详细定义,BaseEntity 通用字段不再重复。


5.1 系统与基础设施

users

用户账号信息。

字段类型描述备注
nicknamestring用户昵称
avatarstring头像 URL
settingsUserSettings用户偏好设置JSON 对象

userProfile

用户个人资料(公开可见部分)。

字段类型描述备注
namestring显示名称
avatarstring头像 URL
biostring个人简介

settings

键值对通用配置存储。

字段类型描述备注
keystring配置键名唯一索引
valueunknown配置值支持任意类型

dashboardLayout

仪表盘首页布局配置。

字段类型描述备注
widgets{ id: string, x: number, y: number, w: number, h: number }[]小组件网格布局栅格坐标 + 尺寸

syncQueue

同步操作队列,记录所有待同步的数据变更。

字段类型描述备注
tableNamestring变更表名索引
recordIdstring变更记录 ID
operationstring操作类型:create / update / delete
dataunknown变更数据
syncStatusstring同步状态索引
retryCountnumber重试次数

syncConfig

同步后端配置。

字段类型描述备注
typestring同步类型(如 gist、webdav)
repostring仓库地址
tokenstring认证令牌
gistIdstringGist IDGist 类型时使用
enabledboolean是否启用同步

aiConfig

AI 服务配置。

字段类型描述备注
providerstringAI 服务商
apiKeystringAPI 密钥
modelstring默认模型

features

功能模块注册表,对应 模块功能清单

字段类型描述备注
keystring模块唯一标识task_management
iconstring图标类名
bgstring背景色
routestring页面路由/pages/task/index
catKeystring所属分类标识索引
labelstring模块名称
descstring功能描述

lifeModes

生活模式预设(场景化配置组合)。

字段类型描述备注
LifeMode 类型场景名称、时间范围、关联模块列表类型定义见 src/types/life-mode.ts

lifeEvents

生活事件定义(事件触发条件与模块联动)。

字段类型描述备注
LifeEvent 类型事件触发规则、关联动作类型定义见 src/types/life-event.ts

5.2 效率工具

tasks

任务管理,核心表之一。

字段类型描述备注
titlestring任务标题必填
descriptionstring任务描述
statusTaskStatus状态:TODO / IN_PROGRESS / DONE / CANCELLED
priorityTaskPriority优先级:LOW / MEDIUM / HIGH / URGENT
categoryIdstring | null关联任务分类 ID索引
tagsstring[]自由标签列表
dueDatenumber | null到期时间戳索引
location{name, longitude?, latitude?}地点信息
repeatRule{frequency, interval?, endDate?} | null重复规则frequency: daily/weekly/monthly/yearly
archivedboolean归档标记
completedAtnumber | null完成时间戳
projectIdstring | null所属项目 ID
sortOrdernumber排序权重数值越小越靠前
group{name, color?} | null分组信息

索引:statusdueDateprioritycategoryIdcreatedAt

taskCategories

任务分类。

字段类型描述备注
namestring分类名称
colorstring分类颜色
iconstring分类图标
sortOrdernumber排序权重
parentIdstring | null父分类 ID支持嵌套

calendarEvents

日历事件。

字段类型描述备注
titlestring事件标题
descriptionstring事件描述
startTimenumber开始时间戳索引
endTimenumber结束时间戳索引
locationunknown地点信息
allDayboolean是否全天事件
colorstring事件颜色
repeatunknown重复规则
taskIdstring | null关联任务 ID
calendarIdstring所属日历分类 ID索引

索引:startTimeendTimecalendarId

calendarCategories

日历分类。

字段类型描述备注
namestring分类名称
colorstring分类颜色
isVisibleboolean是否显示
sortOrdernumber排序权重

pomodoroSessions

番茄钟专注记录。

字段类型描述备注
PomodoroSession 类型任务关联、开始/结束时间、专注时长、类型类型定义见 src/modules/pomodoro/types.ts

pomodoroSettings

番茄钟设置。

字段类型描述备注
focusMinsnumber专注时长(分钟)默认 25
shortBreakMinsnumber短休息时长(分钟)默认 5
longBreakMinsnumber长休息时长(分钟)默认 15
longBreakIntervalnumber长休息间隔(次)默认 4

flows

流程图/工作流定义。

字段类型描述备注
namestring流程名称
descriptionstring流程描述可选
steps{title: string, content: string, order: number}[]步骤定义
lastRunnumber最后执行时间可选

flowRuns

流程图执行记录。

字段类型描述备注
flowIdstring关联流程 ID
flowNamestring流程名称(冗余)避免关联查询
stepStatus{stepIndex: number, done: boolean}[]步骤完成状态
completedboolean整体是否完成
datestring执行日期
notestring备注可选

goalRecords

目标追踪。

字段类型描述备注
titlestring目标标题
descstring目标描述
targetnumber目标值
currentnumber当前进度
deadlinenumber截止时间戳
categorystring分类
statusstring状态

studyPlans

学习计划。

字段类型描述备注
namestring计划名称
descstring计划描述
totalnumber总任务量
progressnumber当前进度
deadlinenumber截止时间戳

ideas

创意灵感。

字段类型描述备注
titlestring标题
descstring详细描述
tagsstring[]标签列表

5.3 知识管理

notes

笔记/知识条目,核心表之一。

字段类型描述备注
notebookIdstring所属笔记本 ID索引
titlestring笔记标题
contentstring笔记内容Markdown 格式
tagsstring[]标签列表索引

索引:notebookIdtagscreatedAt

notebooks

笔记本/分类。

字段类型描述备注
namestring笔记本名称
colorstring颜色标记
sortOrdernumber排序权重

knowledgeTags

知识标签。

字段类型描述备注
namestring标签名称
colorstring标签颜色

5.4 财务资产

transactions

交易记录,核心表之一。金额以为单位存储。

字段类型描述备注
typeTransactionType交易类型:income / expense / transfer
amountnumber金额(分为单位)避免浮点精度问题
categorystring分类标签索引
categoryIconstring分类图标
remarkstring备注
datenumber交易日期时间戳
accountIdstring关联账户 ID
tagsstring[]自由标签
location{name, longitude?, latitude?}交易地点

索引:datetypecategory

financeAccounts

财务账户。

字段类型描述备注
namestring账户名称
typestring账户类型:cash / bank / credit / investment / other
balancenumber余额(分为单位)
currencystring货币代码如 CNY、USD
colorstring颜色标记
iconstring图标
isArchivedboolean是否归档

budgets

预算。

字段类型描述备注
namestring预算名称
categorystring预算分类
amountnumber预算金额(分)
periodstring预算周期如 monthly、yearly
startDatenumber开始日期
spentnumber已支出金额(分)
isActiveboolean是否启用

loanPlans

贷款计划。

字段类型描述备注
typestring贷款类型
namestring贷款名称
bankstring贷款银行
totalAmountnumber贷款总额(分)
totalPeriodsnumber总还款期数
ratenumber年利率如 0.04 表示 4%
rateTypestring利率类型
borrowDatestring借款日期
repayMethodstring还款方式等额本息 / 等额本金
firstRepayDatestring首次还款日
totalInterestnumber总利息(分)
notestring备注
installmentsunknown[]分期计划详情每期本金+利息

splitBills

账本拆分(AA 分账)。

字段类型描述备注
namestring账单名称
totalnumber总金额
people{name: string, amount: number}[]参与人与金额
datestring日期
settledboolean是否已结算

moneyLendRecords

借钱(借出)。

字段类型描述备注
amountnumber借出金额
personstring借款对象
datestring借款日期
reasonstring借款原因
returnedboolean是否已归还

moneyBorrowRecords

借钱(借入)。

字段类型描述备注
amountnumber借入金额
personstring借款来源
datestring借款日期
reasonstring借款原因
returnedboolean是否已归还

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

饮食记录。

字段类型描述备注
typestring餐次类型早/午/晚/加餐
foodstring食物描述
photostring食物照片
notesstring备注
datenumber日期时间戳索引

索引:date

waterRecords

饮水记录。

字段类型描述备注
amountnumber饮水量(毫升)
datestring日期索引

索引:date

bodyRecords

身体数据。

字段类型描述备注
datestring测量日期
weightnumber体重(kg)
heightnumber身高(cm)
bminumberBMI 值
notestring备注

medicinePlans

用药计划。

字段类型描述备注
namestring药品名称
dosagestring剂量
frequencystring频次如 daily、bid、tid
timesstring[]用药时间如 ["08:00", "20:00"]
startDatestring开始日期
endDatestring结束日期
notestring备注

periodRecords

经期记录。

字段类型描述备注
datestring日期
typestring类型
intensitynumber强度
notestring备注

periodSettings

经期设置。

字段类型描述备注
keystring设置键
cyclenumber周期天数默认 28
durationnumber持续天数默认 5
lastPeriodstring上次经期日期

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

心情记录。

字段类型描述备注
datestring日期索引
moodnumber心情指数(1-5)
notestring备注
tagsstring[]标签

索引:date

diaryEntries

日记。

字段类型描述备注
datestring日期索引
titlestring日记标题
contentstring日记正文
moodstring心情
weatherstring天气
tagsstring[]标签

索引:date

dreamRecords

梦境记录。

字段类型描述备注
datestring日期
titlestring梦境标题
contentstring梦境内容
typestring梦境类型
emotionstring情绪
claritynumber清晰度
tagsstring[]标签

achievementRecords

成就。

字段类型描述备注
keystring成就标识
namestring成就名称
iconstring成就图标
descstring成就描述
unlockedboolean是否已解锁
unlockedAtnumber解锁时间可选

memos

备忘录。

字段类型描述备注
titlestring标题
contentstring内容
colorstring颜色标记
pinnedboolean是否置顶

shoppingRecords

购物清单。

字段类型描述备注
namestring商品名称
amountnumber金额
boughtboolean是否已购买
categorystring分类

wishlistItems

心愿清单。

字段类型描述备注
namestring心愿名称
pricenumber价格
reasonstring心愿理由
prioritystring优先级
urlstring链接

trajectoryRecords

活动轨迹。

字段类型描述备注
locationstring地点名称
activitystring活动类型可选
longitudenumber经度可选
latitudenumber纬度可选
notestring备注
datenumber日期时间戳索引

索引:date


5.7 家庭生活

pets

宠物信息。

字段类型描述备注
namestring宠物名字
speciesstring物种如 猫、狗
breedstring品种
birthDatestring出生日期
avatarstring头像
notestring备注

petActivities

宠物活动记录。

字段类型描述备注
petIdstring关联宠物 ID
typestring活动类型如 洗澡、驱虫、疫苗
datestring日期
notestring备注

petWeights

宠物体重追踪。

字段类型描述备注
petIdstring关联宠物 ID
weightnumber体重(kg)
datestring测量日期

plants

植物信息。

字段类型描述备注
namestring植物名字
speciesstring物种
waterIntervalnumber浇水间隔(天)
lastWateredstring上次浇水日期
sunlightstring光照需求
notestring备注
imagestring照片

plantActivities

植物活动记录。

字段类型描述备注
plantIdstring关联植物 ID
typestring活动类型如 施肥、换盆、修剪
datestring日期
notestring备注

plantWaterings

浇水记录。

字段类型描述备注
plantIdstring关联植物 ID
datestring浇水日期
amountstring浇水量

recipeItems

食谱。

字段类型描述备注
namestring菜名
categorystring分类
ingredientsstring[]食材列表
stepsstring制作步骤

medicalRecords

就诊记录。

字段类型描述备注
hospitalstring医院名称
departmentstring科室
doctorstring医生姓名
descriptionstring病情描述
medicationstring用药方案
costnumber费用
datenumber就诊日期时间戳

people

人脉管理。

字段类型描述备注
PeopleRecord 类型姓名、关系、联系方式、关联借贷和纪念日类型定义见 src/types/entity-relation.ts

channels

渠道管理。

字段类型描述备注
Channel 类型渠道名称、类型、图标类型定义见 src/modules/channel/types.ts

5.8 实用工具

aiConversations

AI 对话会话。

字段类型描述备注
titlestring会话标题
modelstring使用的模型

aiMessages

AI 对话消息。

字段类型描述备注
conversationIdstring关联对话 ID
rolestring角色:user / ai
contentstring消息内容
statusstring消息状态
errorMsgstring错误信息可选

passwordEntries

密码管理。

字段类型描述备注
titlestring条目标题
usernamestring用户名
passwordstring密码
urlstring关联网址
notestring备注
tagsstring[]标签

docItems

证件管理。

字段类型描述备注
namestring证件名称
typestring证件类型
numberstring证件号码
expireDatenumber到期日
frontImagestring证件照片
notestring备注

packageTracking

快递追踪。

字段类型描述备注
numberstring快递单号
companystring快递公司
statusstring物流状态
descstring物流描述

items

物品库存。

字段类型描述备注
Item 类型物品名称、分类、购买日期类型定义见 src/modules/inventory/types.ts

索引:categorypurchaseDate

warrantyItems

产品保修。

字段类型描述备注
namestring产品名称
categorystring分类
purchaseDatenumber购买日期
warrantyPeriodnumber保修期(月)
expireDatenumber保修到期日
notestring备注

repairRecords

维修记录。

字段类型描述备注
warrantyIdstring关联保修 ID
statusstring维修状态
descriptionstring故障描述
reportDatenumber送修日期
completeDatenumber完成日期可选
notestring备注

carVehicles

车辆管理。

字段类型描述备注
vehicles{id, name, plate, brand, model, year, mileage, insuranceDate, inspectionDate, maintenance}[]车辆列表每辆车含保险/年检/保养信息

movieItems

观影记录。

字段类型描述备注
titlestring影片标题
yearstring年份
ratingnumber评分
statusstring观看状态
notestring备注

birthdayItems

纪念日。

字段类型描述备注
namestring名称
datestring日期
typestring类型
lunarboolean是否农历
notestring备注

coupons

优惠卡券。

字段类型描述备注
namestring卡券名称
codestring券码
discountstring折扣信息
expireDatenumber到期日
usedboolean是否已使用

addresses

地址管理。

字段类型描述备注
namestring收件人
phonestring电话
provincestring
citystring
districtstring
detailstring详细地址
tagstring标签如 家、公司

itemLendRecords

物品借出。

字段类型描述备注
itemstring物品名称
personstring借出对象
datestring借出日期
returnDatestring归还日期可选
returnedboolean是否已归还

itemBorrowRecords

物品借入。

字段类型描述备注
itemstring物品名称
personstring借入来源
datestring借入日期
returnDatestring归还日期可选
returnedboolean是否已归还

5.9 辅助与历史

scheduleEvents

日程事件。

字段类型描述备注
titlestring事件标题
descriptionstring事件描述可选
startTimenumber开始时间戳
endTimenumber结束时间戳
allDayboolean是否全天
colorstring颜色
locationunknown地点可选
repeatunknown重复规则可选

countdownRecords

倒计时。

字段类型描述备注
namestring倒计时名称
datenumber目标日期时间戳
typestring类型
repeatboolean是否每年重复

subscriptionRecords

订阅记录。

字段类型描述备注
namestring订阅名称
amountnumber金额
cyclestring周期如 monthly、yearly
nextDatenumber下次扣费日期
categorystring分类

readerBooks

阅读书目。

字段类型描述备注
titlestring书名
authorstring作者
chapterIds{title: string, isRead: boolean}[]章节列表含阅读状态
chapterCountnumber总章节数

customPages

自定义页面定义。

字段类型描述备注
namestring页面名称
iconstring图标
fieldsunknown[]自定义字段配置

customPageRecords

自定义页面数据。

字段类型描述备注
pageIdstring关联页面 ID
dataRecord<string, unknown>页面数据键值对

weatherRecords

天气记录。

字段类型描述备注
citystring城市名称
dataunknown天气数据JSON
datestring日期

weatherFavorites

天气收藏。

字段类型描述备注
citystring城市名称
codestring城市代码

clipboardItems

剪贴板。

字段类型描述备注
textstring剪贴内容
typestring内容类型

convertHistory

单位转换历史。

字段类型描述备注
fromstring源单位
tostring目标单位
amountnumber源数值
resultnumber转换结果
datestring日期

exchangeHistory

汇率换算历史。

字段类型描述备注
fromstring源货币
tostring目标货币
ratenumber汇率
datestring日期

recentSearches

最近搜索。

字段类型描述备注
keywordstring搜索关键词
datestring搜索日期

5.10 搜索、历史与关系

magicHistory

AI Magic 历史。

字段类型描述备注
promptstring用户输入
resultstringAI 输出
typestring操作类型

translateHistory

翻译历史。

字段类型描述备注
fromstring源语言
tostring目标语言
textstring原文
resultstring译文

calcHistory

计算器历史。

字段类型描述备注
expressionstring计算表达式
resultstring计算结果

entityRelations

跨模块实体关系。

字段类型描述备注
EntityRelation 类型源实体、目标实体、关系类型类型定义见 src/types/entity-relation.ts

6. 索引设计

索引字段用途
tasksstatus, dueDate, priority, categoryId, createdAt按状态/日期/优先级筛选任务列表
calendarEventsstartTime, endTime, calendarId按时间和日历查询事件
habitscategoryId按分类筛选习惯
habitRecords[habitId+date] 复合, date查询某习惯打卡记录 / 某日全部打卡
notesnotebookId, tags, createdAt按笔记本/标签/时间查笔记
transactionsdate, type, category按时间/类型/分类统计收支
healthRecords[type+date] 复合, date按健康类型和时间范围查询
itemscategory, purchaseDate按分类/购买日期查库存
settingskey (唯一)按键名快速定位配置
featurescatKey按分类列出功能模块
syncQueuetableName, syncStatus按表名/状态查询待同步项
dietRecordsdate按日期查饮食
waterRecordsdate按日期查饮水
moodRecordsdate按日期查心情
diaryEntriesdate按日期查日记
trajectoryRecordsdate按日期查轨迹

7. 数据迁移策略

Dexie Schema 自动迁移 (H5)

每次应用启动时,DexieStore 计算当前 TABLE_NAMES + INDEXES 的稳定哈希值,与 localStorage 中保存的上次哈希比对。若不一致,自动删除旧数据库并按新 schema 重建。开发者只需修改 schema.ts,无需手动管理版本号。

Legacy 数据迁移 (v1 → v2)

首次启动时检测旧的加密数据格式(uni.storagelifeos_{tableName} 键值对),若存在则提示用户输入 v1 密码解密数据、映射到 BaseEntity 格式、批量写入新引擎。迁移完成后写入标记 lifeos_migrated_v2。迁移过程中单表失败不影响其他表导入,旧数据保留不删除。