- UI 层 (Vue Components): 视图展示、用户交互、Props/Events 通信。
- 组合式函数层 (Composables): UI 相关响应式逻辑(弹窗、通知、配置访问)。
- 状态管理层 (Pinia Stores): 业务逻辑核心、持久化状态、计算属性。
- 服务层 (Services): 纯数据操作 (CRUD)、初始化流程、外部 API/存储交互。
- 工具层 (Utils): 无状态纯函数(错误处理、ID 生成)。
- 存储层 (Storage):
IndexedDB(通过idb-keyval)。
src/
├── services/ # 核心逻辑: app(初始化), config(配置), todo(CRUD), data(备份), report(统计)
├── stores/ # 状态中心: AppStore(全局), Categories(分类), Todos(待办), Report(报表)
├── composables/ # UI 逻辑: useConfig, useDialog, useNotification, useDragSort
├── components/ # 组件: Sidebar, Header, Content, Item, Report(ECharts)
├── model/ # 弹窗组件: CategoryEdit, Config, TodoEdit
├── utils/ # 工具: errorHandler, idGenerator
├── views/ # 页面入口: tidyDo/index.vue
└── main.js/extension.js # 应用入口
| 模块 | 职责 (Responsibility) | 关键方法/状态 (Key APIs/State) |
|---|---|---|
| AppService | 初始化时序、并发控制 | initializeApp(), reloadAppData() |
| ConfigService | 配置持久化、深度合并 | getConfig(), saveConfig() |
| TodoService | 待办/分类数据操作 | CategoryService, TodoItemService (CRUD) |
| AppStore | 全局 UI 状态 | viewMode, selectedCategoryId, currentTodos |
| TodosStore | 待办业务逻辑 | loadTodos(), updateTodoStatus(), todoCounts |
| useConfig | 配置响应式代理 | statusConfig, priorityConfig, getStatusColor() |
| errorHandler | 统一异常监控 | withErrorHandling(fn, title, type) |
AppService.initializeApp并行触发 ->ConfigService+DefaultData+StorageCheck。- 基础数据就绪后 -> 并行执行
Stores.loadX()(Categories/Todos/SimpleTodos)。 - 状态挂载完毕 -> 渲染 Vue 组件。
- 使用
withErrorHandling高阶函数封装 Service 层异步操作。 - 自动触发
useNotification提示 UI。 - 错误分类:
STORAGE,VALIDATION,BUSINESS,NETWORK。
useDragSort监听长按 (500ms) -> 开启拖拽 -> 实时计算索引 -> 回调onReorder更新存储。
- API: Vue 3 Composition API。
- 逻辑位置: 复杂数据转换放
Services,UI 响应式状态放Composables,跨组件共享放Stores。 - ID 策略: 统一调用
idGenerator(前缀 + 时间戳 + 随机数)。 - 配置访问: 禁止直接读取存储,必须通过
useConfig组合式函数。
- 已完成: CRUD、四象限/时间线/报表视图、导入导出、拖拽排序、ECharts 统计。
- 规划中: 深色模式、i18n、云端同步、提醒系统。