Files
Tasks/README.md
T
2026-08-01 02:11:12 +08:00

215 lines
7.6 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.
# 任务管理系统
一个基于浏览器运行的现代化任务管理系统,支持任务生命周期管理、团队协作、进度跟踪、数据备份和中英文界面。项目已从单体脚本重构为原生 ES Modules,并兼容已有任务数据、偏好设置和 1.0 版 JSON 备份。
## 核心特性
### 任务管理
- **三状态管理**:待办事项、进行中、已完成
- **双重描述系统**:任务描述(目标要求)和任务进展(实时状态)
- **可视化进度**:使用 0–100% 进度条跟踪任务
- **优先级管理**:高、中、低三级优先级及颜色标识
- **截止日期**:支持到期提醒和过期任务标识
- **任务置顶**:重要任务在所有排序方式中优先显示
### 协作与记录
- **人员管理**:支持负责人和协作者
- **时间轴记录**
- 自动记录状态、进度、负责人、截止日期、优先级和进展内容变更
- 支持手动添加、编辑和删除记录
- 使用不同类型区分系统记录和手动记录;编辑系统记录会将其转为手动记录,并记在当前负责人名下
- 编辑已有的手动记录只更新内容,原记录人保持不变
- 记录按时间倒序展示,同一天内新增的记录也排在前面
### 搜索、排序与显示
- **13 种排序模式**:支持标题、数字、日期、优先级、进度和创建时间排序
- **实时搜索**:搜索标题、描述、进展、负责人、协作者、到期日期、优先级和时间轴内容,界面固定文字不参与匹配;无匹配结果时栏内给出提示
- **任务隐藏**:待办和已完成任务可单独隐藏,并可批量显示或隐藏
- **国际化**:支持中英文界面切换
### 数据与兼容性
- **本地存储**:基于 `localStorage`,无需后端服务
- **实时保存**:每次操作后自动持久化
- **导入导出**:支持 JSON 覆盖导入和合并导入
- **向后兼容**:保留原有存储键和 1.0 版备份格式
- **容错处理**:损坏的任务原始数据会备份;存储不可用时当前页面会继续以内存模式运行
## 快速开始
### 安装与运行
```bash
npm install
npm start
```
打开 `serve` 输出的地址即可使用。由于应用采用原生 ES Modules,必须通过 HTTP 服务器访问,不支持使用 `file://` 直接打开 `src/index.html`
也可以使用其他静态服务器:
```bash
python -m http.server 8000 --directory src
# 或
npx http-server src
```
### 质量检查
```bash
npm run lint
npm run format:check
npm test
```
如需自动格式化:
```bash
npm run format
```
### 系统要求
- 支持原生 ES Modules 的现代浏览器
- 支持 `localStorage`(通常约 510 MB
- 可访问 Bootstrap 和 Font Awesome 的 CDN 资源
## 使用指南
### 基本操作
1. **添加任务**:填写标题、描述、进展、优先级等信息。
2. **编辑任务**:点击任务卡片上的编辑按钮。
3. **状态管理**:编辑任务并更改状态。
4. **进度跟踪**:更新任务进度和进展内容,系统会自动生成时间轴记录。
5. **任务置顶**:点击图钉按钮,使重要任务优先显示。
### 任务隐藏
- **适用范围**:隐藏仅对待办和已完成任务生效;进行中任务即使被标记隐藏也会正常显示、正常排序。
- **单个隐藏**:编辑任务并勾选“隐藏此任务”,或点击卡片上的隐藏按钮。
- **批量查看**:待办栏和已完成栏的眼睛按钮可显示或隐藏被隐藏的任务。
- **排序规则**:被隐藏的待办和已完成任务在排序结果中自动排到非隐藏任务之后。
- **视觉区分**:显示隐藏任务时,卡片以半透明样式呈现。
- **数量统计**:栏目标题的计数与当前实际显示的卡片一致,会随搜索结果变化。
### 数据备份
- 导出的文件名格式为 `backup-tasks-yyyy-mm-dd.json`
- 覆盖导入会替换任务及兼容的排序偏好。
- 合并导入会保留现有任务,并按 `title|status|createdDate` 跳过重复项;新导入任务会分配唯一 ID。
## 技术架构
### 技术栈
- **前端**HTML5、CSS3、JavaScriptES Modules
- **UI 框架**Bootstrap 5.3.3
- **图标**Font Awesome 6.7.2
- **存储**`localStorage`
- **测试**Vitest + jsdom
- **代码质量**ESLint + Prettier
- **部署方式**:纯静态部署
### 项目结构
- `src/index.html`:应用页面和模态框结构
- `src/css/styles.css`:应用样式和响应式布局
- `src/js/main.js`:初始化和委托事件处理
- `src/js/config.js`:状态、排序选项、存储键和共享常量
- `src/js/utils.js`:ID、日期、到期状态和 HTML 转义工具
- `src/js/task-model.js`:任务和偏好数据标准化
- `src/js/store.js`:应用状态及持久化变更
- `src/js/storage.js`:唯一直接访问 `localStorage` 的应用模块
- `src/js/sort.js`:任务比较器和 13 种排序模式
- `src/js/render.js`:任务、时间轴、计数和排序选项渲染
- `src/js/modal.js`:任务表单填充和保存
- `src/js/timeline.js`:手动及系统时间轴记录
- `src/js/import-export.js`1.0 版备份验证、导入和导出
- `src/js/notify.js`:通知和截止日期提醒
- `src/js/seed-data.js`:首次运行时的示例任务
- `src/js/i18n/`:中英文词典及插值逻辑
- `test/`:单元测试和旧版数据兼容性测试
## 本地存储
应用保留以下六个原有存储键:
- `tasks`
- `taskSortOrders`
- `showHiddenCompletedTasks`
- `showHiddenTodoTasks`
- `tasksInitialized`
- `tasksCorruptedBackup`
任务、排序和显示偏好使用 JSON 编码。若任务列表格式损坏,原始文本会保存到 `tasksCorruptedBackup`。当浏览器存储不可用或空间不足时,应用会在当前页面会话中继续运行,但刷新后内存中的改动会丢失。
## 备份格式
```json
{
"version": "1.0",
"exportDate": "2026-07-20T00:00:00.000Z",
"localDate": "2026-07-20",
"taskCount": 1,
"data": {
"tasks": [],
"sortOrders": {
"todo": "default",
"inProgress": "default",
"completed": "default"
}
}
}
```
## 任务数据结构
```javascript
{
id: Number, // 唯一标识
title: String, // 任务标题
description: String, // 任务描述
progressNotes: String, // 任务进展
status: String, // todo | inProgress | completed
progress: Number, // 0100
assignee: String, // 负责人
collaborators: Array, // 协作者
dueDate: String, // 截止日期
priority: String, // low | medium | high
language: String, // zh | en
isPinned: Boolean, // 是否置顶
isHidden: Boolean, // 是否隐藏
createdDate: String, // 创建时间
timeline: Array // 时间轴记录
}
```
## 故障排除
- **页面无法直接打开**:请使用 HTTP 服务器运行,原生 ES Modules 不支持 `file://` 加载。
- **数据丢失**:检查浏览器是否允许 `localStorage`,并定期导出备份。
- **导入失败**:确认文件为 1.0 版 JSON 备份,并检查任务字段和日期格式。
- **界面异常**:检查 Bootstrap 和 Font Awesome CDN 是否可访问,并尝试清空缓存。
- **性能问题**:任务数量较多时,建议归档已完成任务并清理不必要的时间轴记录。
## 贡献指南
欢迎提交 Issue 和 Pull Request。
- **问题反馈**:请详细描述问题场景和复现步骤。
- **功能建议**:请说明需求和使用场景。
- **代码贡献**:遵循现有代码风格,并运行 lint、格式检查和测试。
## 许可证
MIT License
---
- **版本**v1.0.0
- **重构日期**2026 年 7 月