Files
todomonitor/README.md
T

113 lines
3.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Todo Monitor
双视图待办管理工具——在无限画布上创建 Markdown 便签,一键切换为结构化监控大屏。
## 技术栈
| 层级 | 技术 |
|------|------|
| 前端 | Vue 3 + Composition API + TypeScript |
| 画布 | Konva.js |
| 状态管理 | Pinia |
| 构建 | Vite |
| 后端 | Express + better-sqlite3 |
| 数据库 | SQLite |
## 快速开始
```bash
# 启动后端(端口 3001
cd backend
npm install
npm run dev
# 启动前端(端口 5173
cd frontend
npm install
npm run dev
```
浏览器打开 `http://localhost:5173`
## 核心功能
### 无限画布
- 双击空画布创建便签,支持 Markdown 编辑
- 拖拽便签移动 / 右下角缩放
- 滚轮缩放画布,空画布拖拽平移视角
- 分组框:拖拽绘制矩形区域,便签落入框内自动归属分组
### 监控大屏
- 便签自动解析为监控卡片,5 种类型:任务卡、里程碑卡、指标卡、倒计时卡、项目卡
- 看板 / 列表 / 网格三种布局
- 按状态、优先级、标签等维度筛选排序
- 统计概览栏:总数 / 进行中 / 已完成 / 逾期 / 阻塞
### 选择系统
- 指针 / 便签 / 分组 / 框选 四种工具模式
- Ctrl+点击选中对象,框选批量选中
- 选中多个对象后整体拖拽移动
### 语法解析
支持三种 Markdown 解析模式,详见 [语法说明](语法说明.md)
1. **YAML Front Matter** — 结构化元数据
2. **约定式 Markdown** — 按自然书写风格自动识别
3. **行内快捷字段**`@字段名(值)` 快速标注
编辑器内 `Ctrl+S` 保存。
## 项目结构
```
todomonitor/
├── backend/
│ └── src/
│ ├── index.js # Express 入口
│ ├── db.js # SQLite 初始化
│ └── routes/
│ ├── notes.js # 便签 CRUD
│ ├── groups.js # 分组 CRUD
│ └── batch.js # 批量操作
├── frontend/
│ └── src/
│ ├── App.vue
│ ├── components/
│ │ ├── canvas/ # 画布视图组件
│ │ ├── dashboard/ # 大屏视图组件
│ │ ├── shared/ # 共享 UI 组件
│ │ └── layout/ # 导航栏
│ ├── stores/ # Pinia 状态管理
│ ├── utils/ # API 客户端 / 解析引擎
│ ├── types/ # TypeScript 类型
│ └── composables/ # 组合式函数
├── 需求.md
├── 语法说明.md
└── README.md
```
## 数据模型
### 便签 (notes)
| 字段 | 类型 | 说明 |
|------|------|------|
| id | INTEGER | 主键 |
| content | TEXT | Markdown 内容 |
| x, y | REAL | 画布坐标 |
| width, height | REAL | 尺寸 |
| color | TEXT | 背景色 |
| group_id | INTEGER | 所属分组 |
| created_at | TEXT | 创建时间 |
| updated_at | TEXT | 更新时间 |
### 分组 (groups)
| 字段 | 类型 | 说明 |
|------|------|------|
| id | INTEGER | 主键 |
| name | TEXT | 分组名称 |
| x, y | REAL | 坐标 |
| width, height | REAL | 尺寸 |
| color | TEXT | 边框颜色 |
| priority | INTEGER | 排序优先级 (0-99) |