任务共享:端上无「共享给谁」入口 #26

Closed
opened 2026-10-28 12:52:46 +00:00 by laoyang · 1 comment
Owner

现象

任务端上没有「共享给谁」入口(FbTaskPanel / FbTasksPage 无 share 相关操作用语)。Web 端有 tasks/share 表单路由。

现状与依据

  • 服务端 tasks API 现有:status / move / comments / attach 子端点;创建任务时可通过 shares 参数设置共享(Api::ints('shares') → Task::setShare)。
    缺:单独的查/改共享子端点(GET/PUT /api/v1/tasks/<id>/shares)。
  • Task::setShare / 模型能力已齐(index.php tasks/share 在用)。

要做的(双端)

服务端:

  1. tasks API 补 shares 子端点:GET(列共享人)、POST/PUT(整组替换共享人,参考创建时的 Api::ints('shares'))。

端上:
2. FbTaskPanel 增加「共享给谁」入口,复用选人组件(参考财务 FbLedgerShareSheet 的写法)。

验收

  • 端上能给一条任务增删共享人,Web 端共享列表一致。
  • 共享人打开端上能看到该任务。

标签

terminal/web + terminal/harmony · 双端


本单由需求拆解生成,主单 laoyang/FamilyBook #22。

## 现象 任务端上**没有「共享给谁」入口**(`FbTaskPanel` / `FbTasksPage` 无 share 相关操作用语)。Web 端有 `tasks/share` 表单路由。 ## 现状与依据 - 服务端 `tasks` API 现有:`status` / `move` / `comments` / `attach` 子端点;创建任务时可通过 `shares` 参数设置共享(`Api::ints('shares')` → `Task::setShare`)。 缺:**单独的查/改共享子端点**(`GET/PUT /api/v1/tasks/<id>/shares`)。 - `Task::setShare` / 模型能力已齐(index.php `tasks/share` 在用)。 ## 要做的(双端) 服务端: 1. `tasks` API 补 `shares` 子端点:`GET`(列共享人)、`POST/PUT`(整组替换共享人,参考创建时的 `Api::ints('shares')`)。 端上: 2. `FbTaskPanel` 增加「共享给谁」入口,复用选人组件(参考财务 `FbLedgerShareSheet` 的写法)。 ## 验收 - 端上能给一条任务增删共享人,Web 端共享列表一致。 - 共享人打开端上能看到该任务。 ## 标签 terminal/web + terminal/harmony · 双端 --- > 本单由需求拆解生成,主单 laoyang/FamilyBook #22。
Author
Owner

收尾:已修完、已验证、已部署

两端都已提交、推送,服务端已部署上线。

改了什么

服务端(commit ad71c80):

  • GET/POST/DELETE /api/v1/tasks/<id>/shares —— 任务共享列表 / 加 / 取消。
    Task::shares/setShare/dropShare 模型早就有(Web 端 tasks/share、tasks/unshare 在用),只缺 API。

鸿蒙端(commit 59a9d3d,4 文件):

  • FbTaskShare 类型 + parseTaskDetail 解析(Task::find 本来就带 shares,详情一次拿到)。
  • FbTaskRepo 补 fetchTaskShares / shareTask / unshareTask(删除走 query)。
  • FbTaskPanel 加「共享给谁」区块:列表(可改/只看)+ 逐条取消 +「+共享」复用选人组件。

验证

  • 服务端冒烟 _i26_task_share_api.py 13/0:共享增/列/删 · 越权(拿别人任务共享)被拒 · 库里没落脏数据。
  • 反证 _i26_falsify.py:注掉 shares 分支 → ②③ 变红。
  • 鸿蒙端编译 BUILD SUCCESSFUL。

部署

服务端 20261028-221023,两仓库已 push。

⚠️ 真机点验待设备恢复:共享选人 → 列表即时刷新 → 取消的手感要设备连上再点。

## 收尾:已修完、已验证、已部署 两端都已提交、推送,服务端已部署上线。 ### 改了什么 **服务端**(commit `ad71c80`): - `GET/POST/DELETE /api/v1/tasks/<id>/shares` —— 任务共享列表 / 加 / 取消。 `Task::shares/setShare/dropShare` 模型早就有(Web 端 tasks/share、tasks/unshare 在用),只缺 API。 **鸿蒙端**(commit `59a9d3d`,4 文件): - `FbTaskShare` 类型 + `parseTaskDetail` 解析(`Task::find` 本来就带 `shares`,详情一次拿到)。 - `FbTaskRepo` 补 fetchTaskShares / shareTask / unshareTask(删除走 query)。 - `FbTaskPanel` 加「共享给谁」区块:列表(可改/只看)+ 逐条取消 +「+共享」复用选人组件。 ### 验证 - 服务端冒烟 `_i26_task_share_api.py` **13/0**:共享增/列/删 · 越权(拿别人任务共享)被拒 · 库里没落脏数据。 - 反证 `_i26_falsify.py`:注掉 shares 分支 → ②③ 变红。 - 鸿蒙端编译 **BUILD SUCCESSFUL**。 ### 部署 服务端 `20261028-221023`,两仓库已 push。 ⚠️ 真机点验待设备恢复:共享选人 → 列表即时刷新 → 取消的手感要设备连上再点。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: laoyang/FamilyBook#26