Files
kanban/README.md
2025-10-22 15:57:46 +08:00

100 lines
5.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.
Open Kanban
===========
一款可本地使用、可开源的离线 Kanban看板
- 纯前端HTML/CSS/JS无需安装服务端。
- 数据保存在本机WindowsJSON 文件中,支持导入/导出。
- 支持拖拽移动/排序任务,编辑任务详情、步骤、类别、阶段和布局。
- 增强协作:导入他人导出的文件时,提供差异预览与合并策略(偏向导入/偏向当前),可选同步删除缺失项。
- 记录操作历史meta.history便于追踪改动来源与时间。
快速开始
--------
1. 双击打开 `index.html`(推荐使用 Chrome/Edge
2. 默认不会自动读取任何私有 JSON 文件,点击“打开…”手动选择,或配置 `config.json` 指定示例文件。
3. 可直接使用仓库内的 `sample-board.json` 开始体验。
提示:如需本地 HTTP 访问(可避免部分浏览器对 file:// 读取限制),可在此目录临时起一个服务,例如:
- PowerShell: 以管理员打开 PowerShell执行 `cd <此目录>; python -m http.server 8989`,浏览器访问 `http://localhost:8989/`
主要功能
--------
- 打开/保存
- “打开…”读取 JSON 文件至内存。
- “保存/导出”将当前看板下载为 JSON 文件(默认名取自 `config.json``defaultFilename`,默认为 `kanban.json`)。
- 看板与拖拽
- 根据 `layout.columns` 渲染多列每列可包含多个阶段stage
- 支持跨阶段、阶段内排序拖放;自动更新 `stages[].tasks` 顺序。
- 任务管理
- 添加、编辑、删除任务;编辑标题、描述、类别与步骤(含勾选完成)。
- 卡片上显示类别与步骤完成统计。
- 阶段与类别
- 添加、重命名、删除阶段(空阶段可删);选择列位置。
- 添加、重命名类别与颜色;正被引用的类别不可删除。
- 搜索/筛选
- 关键词搜索(标题/描述),按类别筛选。
- 协作导入/合并
- “导入/合并…”选择 JSON 后显示差异预览:任务/阶段新增、删除、修改,布局变化。
- 合并策略:
- 冲突优先“导入文件”:相同 ID 的任务/阶段在冲突字段上使用导入方;阶段任务顺序、布局亦以导入方为准。
- 冲突优先“当前看板”:保持当前数据,仅补充导入方新增项。
- 可选“同步删除在导入文件中不存在的任务/阶段”。
- 历史记录
- 记录操作人(右上角输入框),以及每次操作(新增、编辑、移动、合并等)。
- 支持“清空历史(写入文件)”,以在文件内重置历史并记录一次清空事件。
数据结构说明(兼容扩展)
----------------------
原始结构:
- `categories`: `[{ uuid, title, color }]`
- `stages`: `[{ uuid, title, tasks: [taskUuid] }]`
- `tasks`: `[{ uuid, title, description, category, steps: [{ details, done }] }]`
- `layout`: `{ columns: [[stageUuid, ...], ...] }`
本应用增加可选 `meta` 字段,用于协作追踪:
- `meta`: `{ id: 'open-kanban', version, createdAt, modifiedAt, actor, history: [{ id, ts, actor, type, payload }] }`
未包含 `meta` 的旧文件可直接读取,保存时会补充。
协作建议
--------
- 建议每位协作者在右上角填写自己的名字,导出前先“保存/导出”。
- 通过“导入/合并…”接收他人文件时,先查看差异预览,再选择合并策略。
- 需要严格控制主副本时,勾选“同步删除缺失项”,保持两侧严格一致。
- 如需更细粒度的冲突解决(按字段逐项选择),欢迎提 Issue 我再扩展 UI 细节功能。
已知限制与备注
--------------
- 纯前端页面无法直接写入磁盘文件,需要通过“保存/导出”下载保存。
- 若浏览器禁止 `file://` 下的 `fetch`,自动读取示例或私有 JSON 可能失败,请手动“打开…”。
- 阶段删除仅允许删除空阶段(避免误删任务)。如需支持“连同任务一起删除/移动到归档”,可以后续补充选项。
配置与目录结构
--------------
- `index.html` 入口页面
- `styles.css` 样式
- `app.js` 主逻辑
- `config.json` 应用配置(可选):
- `appTitle`: 页面标题(默认 `Kanban`
- `defaultFilename`: 导出默认文件名(默认 `kanban.json`
- `autoLoadFile`: 启动时自动读取的文件(默认空,不自动读取)
- `sample-board.json` 示例数据(通用,未包含任何公司/隐私信息)
- `.gitignore` 已默认忽略常见私有文件名(如 `*.private.json``*.local.json` 等),避免误提交
欢迎提出改进需求,我可以继续完善比如:按人分配、任务评论、每列 WIP 限制、标签、多选批量操作、导出增量补丁等。
隐私与开源建议
--------------
- 默认不会自动读取任何私有数据。
- 如需在本地使用私有数据,请将你的私有文件(例如 `tasks.private.json`)保留在本地且不提交到仓库;可将该文件名加入 `.gitignore`
- 如需自动加载示例或指定文件,请在 `config.json` 中设置 `autoLoadFile`(建议指向 `sample-board.json`)。
- 若需更换品牌/标题,请在 `config.json` 中修改 `appTitle`;代码与 UI 默认不显示任何公司名称。