(2024-12-09)

任务管理迫在眉睫,急需一种方式能够快速添加任务、图形化展示任务。于是今天项目创建了!!

[>任务的详细描述或背景信息]


**2. Context 管理**

**集中式数据管理**
通过 CSV 文件或表格定义所有可选 context 类别和子项:

```csv
类别,子项
环境,家里;学校;办公室
网络,有网络;无网络
协作,独立完成;需要协作
时间,白天;晚上;周末

实现方式

  • Templater 动态读取 CSV 数据源生成多选框,确保一致性。

  • 插件支持从 CSV 文件中读取 context,并应用到筛选逻辑中。

3. 动态展示与排序

视图逻辑

  1. 时间视图:按截止时间分为今日任务、即将到期任务、长期任务、超期任务。
  2. 上下文视图:支持通过多选上下文筛选,匹配的任务优先展示,未匹配任务排后。
  3. 权重视图:按手动权重或动态计算权重排序。

综合排序公式

动态权重优先计算:

权重 = 优先级 × 优先级权重 + 1/剩余天数 × 时间权重
  • 手动权重 manual_weight 优先于自动权重。

4. 任务关系

前置任务

  • 属性:dependencies
  • 逻辑:
    • 任务状态为“未开始”,若前置任务未完成则显示为“阻塞”。
    • 前置任务完成后自动解除阻塞。

子任务与权重

  • 属性:subtasks

  • 子任务权重默认值为 1,可在主任务中配置。

  • 主任务完成度公式:

    主任务完成度 = Σ(子任务完成度 × 子任务权重) / Σ(子任务权重)
    

5. 任务完成度

完成度联动规则

  1. 完成度影响任务状态
    • progress 达到 1 时,状态自动变为“已完成”。
  2. 任务状态影响完成度
    • 手动将任务状态改为“已完成”,progress 的分子自动更新为分母。

展示

完成度以 x/x 格式表示,并动态显示在任务列表中。

6. 插件的功能规划

插件范围

  • 任务展示
    • 按视图动态生成任务列表。
    • 支持按上下文、时间、权重筛选和排序。
  • 交互功能
    • 支持上下文多选筛选,自动调整排序。
    • 支持动态更新任务的状态和完成度联动。
  • 任务关系
    • 可视化任务依赖和子任务完成情况。
  • 任务创建:
    • 生成表单,填入默认数据(存在多选)
      • 通过任务箭头延伸创建(固定前置任务)
      • 通过tab创建(固定父任务)
      • 双击空白处创建(完整新任务)
  • 任务的详细编辑:
    • 双击任务弹出表单修改
    • 其他方式修改

目前在尝试做的是,设计 React Flow 部分的内容,包括节点设计、连线设计、交互设计、颜色变化等等~

尝试分析了一下我的任务,发现其实对每个任务的任务cost没有那么了解,就是概念非常模糊,所以感觉可以尝试在任务的属性里面加一个预期 cost 和 实际 cost。

这个 cost 能不能更详细呢?更细致化一下?比如,预期 cost 是一个实际的值,实际的 cost 则是时间段的列表/集合。

创建的时候输入预期 cost。单独做一个界面去显示、用时间轴的形式去选择、添加、调整各个实际的时间段区间。 大致应该是这个样子:

Pasted image 20241209090919.png

选择任务区间的时候能够高亮时间轴,伸出右侧的侧边栏,侧边栏里面能够显示任务的基本属性,提供部分属性的修改能力。


(2024-12-10)

大致知道怎么去设计这个节点流了~ 这是目前的情况:

Pasted image 20241210014305.png

显示还是有点问题的:

  • edge
    • 虚线:子任务
    • 实线:依赖关系
  • 状态
    • 已完成:绿色
    • 进行中:橘色
    • 未开始:灰色
    • 阻塞:红色

这里应该是 “完成数据分析” 是 “阻塞”,“收集参考文献” 是 “已完成”的,有点小 bug。

之后准备实践这个:自定义活动节点 这样节点之间的连线就更为灵活了!

右侧的选项卡部分:

  • 里面的参数暂时没有写全
  • 状态流转没有写好
  • 父任务完成度无法手动更改(仅自动计算,以节点背景进度条的形式呈现
  • 子任务需要一个 check 框,方便切换状态
  • 时间段部分
    • 多一行新建,两个按钮,点击左侧的记录当前时间作为开始时间,此时右侧的才能点击;点击右侧的时候记录当前时间作为结束时间。
    • 时间段可手动修改

还有新建任务(新增node)、通过锚点新增任务之类的……

嘛,起来以后先把上面的小问问题修好,尽可能把node、edge 单独拉一个新的自定义出来,方便使用。

title: [任务标题] due: [截止日期] # 格式 YYYY-MM-DD priority: [高/中/低] status: [未开始/进行中/已完成/阻塞] context: [多选标签,例如 家里, 有网络] dependencies: [前置任务1, 前置任务2] # 可选 subtasks:

  • 收集参考文献: 1 # 子任务权重
  • 完成数据分析: 3
  • 撰写初稿: 2 progress: [x/x] # 默认 0/1,表示任务完成度(只有末端节点能够操作、修改) manual_weight: [权重数值] # 可选,用于覆盖自动计算权重 parent: [主任务标题] # 可选,仅子任务需要

修改了一下逻辑,虚线它是会动的,由前置任务流向后置任务。 GPT 老师了解了我的子任务权重,来了一个根据权重去配置 edge 的宽度和箭头的大小,这个想法非常棒!之后也会应用上。 Pasted image 20241210110911.png

现在想来,一个节点需要展示的信息还是很足的:

  • title
  • 进度(进行中、已完成、未开始、阻塞)
    • 0%
      • 未开始
      • 阻塞
    • 1%~99%
      • 进行中
    • 100%
      • 已完成
  • 截止时间
  • 优先级

截止时间和优先级应该是结合来看,来确定边框颜色,截至时间近到一定程度将会跳动 或者 边框转圈圈。


(2024-12-11)

更新了一波,目前支持

  • 分子、分母一个一个加~
  • 父任务的进度自动根据权重、子任务进度计算
  • 任务状态自动变更
  • 颜色随任务状态自动变更

Pasted image 20241211001403.png

后续会把进度用 background 进度条来表示 状态用颜色 优先级用边框渐变色


(2024-12-12)

Pasted image 20241212053133.png

新增了一个 map 记录节点之间的依赖关系以及父子关系,还能够通过这个 map 直接修改 tasks 的值。

还需改进:

  • 自动计算进度 和 状态转移,都需要适配连锁计算。(进度 连锁parent,状态转移 连锁dependince)
  • 将update部分代码转移到 tasksService 中

目前修复了 progress 修改后对应文件所在的文件树的更新~

我希望它能够在父节点的卡片中点击 完成 后,能够遍历所有它的子树,将它们全部设置为完成。