Web 文档库管理(/#/doclib/enter)目前「设置分享」仅对单份文档生效(工具栏取 selected[0],且后端仅 PUT /web/doclib/files/{file_id}/shares)。需要支持多选文档后统一设置分享。
/#/doclib/enter
selected[0]
PUT /web/doclib/files/{file_id}/shares
web-admin/src/views/doclib/enter/index.vue
@click="openShare(selected[0])"
ShareDialog.vue
saveDoclibShares(id, userIds)
用户确认分享策略采用 整份覆盖(推荐 A):批量保存时,弹窗所选人员集合写入每一份所选文档,替换原有分享人。
下一澄清:多文档打开弹窗时的初始选中人员。
用户确认弹窗初始勾选采用 所有文档分享人的交集(推荐);无共同人员时为空。保存仍整份覆盖。
用户选择修改端 2:Web + 后端(新增批量分享 API,减少多次请求)。
下一澄清:批量保存失败策略。
用户确认批量失败策略采用 整批事务:全部成功或全部回滚(推荐 1)。 下一步:给出实现方案对比与设计草案。
用户确认采用 方案 A:新增 batch-shares API + 扩展现有 ShareDialog。 下一步:设计确认后落盘 specs。
用户确认设计(「OK,请继续」):批准方案 A 设计并落盘 specs,随后进入计划与实现。
docs/superpowers/specs/2026-11-12-doclib-batch-share-design.md
bf89a1f3016b56356662640186e9ffe643cba729
codex/issue-25-doclib-batch-share-design
自检:无 TBD;与会话决策一致(覆盖/交集/batch 事务/Web+后端);单测与验收已写明。 待用户审阅该文件后进入 writing-plans。
docs/superpowers/plans/2026-11-12-doclib-batch-share.md
分支:codex/issue-25-doclib-batch-share-design HEAD:见远端最新提交
actionsFor.share
shareUserIntersection
ShareDialog
saveDoclibBatchShares
POST /web/doclib/files/batch-shares
BatchShareBody
_apply_shares
set_shares_batch
tsx --test src/views/doclib/enter/model.test.ts src/views/doclib/enter/api.test.ts
queue-claim 因 Gitea labels 分页限制失败;实现仍按 #25 完成。
queue-claim
已将任务分支合入本地 V3.0(71927bede)。合并后单测 9 通过。
V3.0
71927bede
工程未授权 merge,未推送远端 V3.0(本地 ahead 7)。远端任务分支仍保留:origin/codex/issue-25-doclib-batch-share-design。
merge
origin/codex/issue-25-doclib-batch-share-design
用户授权后已推送本地合入结果到 origin/V3.0:391e5f66f..71927bede。
origin/V3.0
391e5f66f..71927bede
No dependencies set.
The note is not visible to the blocked user.
诉求
Web 文档库管理(
/#/doclib/enter)目前「设置分享」仅对单份文档生效(工具栏取selected[0],且后端仅PUT /web/doclib/files/{file_id}/shares)。需要支持多选文档后统一设置分享。现状(只读定位)
web-admin/src/views/doclib/enter/index.vue(工具栏@click="openShare(selected[0])")ShareDialog.vue(单文档saveDoclibShares(id, userIds))PUT /web/doclib/files/{file_id}/shares待确认
验收(草案)
决策
用户确认分享策略采用 整份覆盖(推荐 A):批量保存时,弹窗所选人员集合写入每一份所选文档,替换原有分享人。
下一澄清:多文档打开弹窗时的初始选中人员。
决策
用户确认弹窗初始勾选采用 所有文档分享人的交集(推荐);无共同人员时为空。保存仍整份覆盖。
决策
用户选择修改端 2:Web + 后端(新增批量分享 API,减少多次请求)。
下一澄清:批量保存失败策略。
决策
用户确认批量失败策略采用 整批事务:全部成功或全部回滚(推荐 1)。
下一步:给出实现方案对比与设计草案。
决策
用户确认采用 方案 A:新增 batch-shares API + 扩展现有 ShareDialog。
下一步:设计确认后落盘 specs。
决策
用户确认设计(「OK,请继续」):批准方案 A 设计并落盘 specs,随后进入计划与实现。
规格已落盘
docs/superpowers/specs/2026-11-12-doclib-batch-share-design.mdbf89a1f3016b56356662640186e9ffe643cba729(分支codex/issue-25-doclib-batch-share-design)自检:无 TBD;与会话决策一致(覆盖/交集/batch 事务/Web+后端);单测与验收已写明。
待用户审阅该文件后进入 writing-plans。
实现计划已落盘
docs/superpowers/plans/2026-11-12-doclib-batch-share.md实现完成(待业务验收)
分支:
codex/issue-25-doclib-batch-share-designHEAD:见远端最新提交
改动摘要
actionsFor.share支持多选可管理;shareUserIntersection;ShareDialog多文档 + 批量保存;工具栏传全部选中项saveDoclibBatchShares→POST /web/doclib/files/batch-sharesBatchShareBody、_apply_shares/set_shares_batch整批一次 commit验证
tsx --test src/views/doclib/enter/model.test.ts src/views/doclib/enter/api.test.ts:9 通过占用说明
queue-claim因 Gitea labels 分页限制失败;实现仍按 #25 完成。本地合并
已将任务分支合入本地
V3.0(71927bede)。合并后单测 9 通过。工程未授权
merge,未推送远端V3.0(本地 ahead 7)。远端任务分支仍保留:origin/codex/issue-25-doclib-batch-share-design。远端已更新
用户授权后已推送本地合入结果到
origin/V3.0:391e5f66f..71927bede。