feat(web): 频道组织架构/汇报关系树预览(扩 DivisionBoard,#281)#300
Merged
Conversation
#168 已在 DivisionBoard 逐行标注了「汇报给谁 / 谁是主负责人」,但那是碎片, 看不出整体层级。#281 要求「整个频道的组织关系可以预览」——本改动把同一份 presence/lineage/role/昵称数据折成一棵可整体查看的汇报树。 - 新增纯函数 lib/orgTree.ts::buildOrgTree:根 = 频道主负责人(role=host), 子节点 = 通过 lineage.parent_agent 汇报上来的成员,递归嵌套;无/未知汇报 对象的散兵单独归入 unassigned 堆(含汇报对象在频道外的,标 external)。 host 一律锚定顶层;汇报给自己视为无上级;DFS 带 visited 环保护——b→c→b 这类环只打断回边、不无限递归,每个节点仍渲染一次。 - 新增展示组件 components/OrgTreePreview.tsx:DivisionBoard 内一个可折叠的 「组织架构 / org structure」预览区,嵌套 ul + 虚线连接线画层级,移动端响应、 随主题变量走;标注 class 独立(org-lead-tag/org-report),不与 #168 逐行 选择器冲突。 - i18n en+zh 新增 Channel.org.*;数据全部来自现有 presence/lineage,不新造 后端模型。正式管理层级(超出 spawn-lineage 的汇报线)需后端支持,见 #168 交接说明,属后续项。 TDD:orgTree.test.ts 覆盖 树形/多 lead/孤儿/external/环/自环/中层锚定/空输入; mutation 已验证——断开 parent-linking → 树形测试红,去掉环保护 filter → 环测试 栈溢出红。 Claude-Session: https://claude.ai/code/session_01FS3jLbZK3AqVXgkhRcEEQg
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
做什么(#281,owner「整个频道的组织关系应该可以预览」)
在 #168(DivisionBoard 已展示 per-agent 汇报关系)基础上,加整个频道组织/汇报结构的可预览树视图。
实现
web/src/lib/orgTree.tsbuildOrgTree(8 TDD 测试):纯从 presence/lineage 派生。每节点{name, display(已按 #165 解析昵称), role, reportsTo(=lineage.parent_agent), kind, ...}。visited守卫 = 环守卫:回边跳过不追;纯环节点各自成根,每节点恰渲染一次、绝不无限循环。OrgTreePreview.tsx+ DivisionBoard 内可折叠<details>「组织架构 / org」面板(自报提示后、账号组前):嵌套 ul + 虚线连接,节点显示昵称/kind/channel lead标/角色/owner/汇报边(外部标红),unassigned 独立段。移动端缩进折叠、主题感知、空态干净。用独立 tag class 不撞 分工要看得出组织架构关系 每个 agent 都有汇报人, 每个频道都有主负责人, 应该尽量避免跨级汇报 #168 行级选择器。门禁(rebase 到最新 main 后亲验)
未做(follow-up)
树只基于 spawn-lineage(
lineage.parent_agent)。正式管理层级(超出 spawn 的显式汇报层)需新后端模型——这是 #168 标注的限制,未杜撰。placement 目前是 DivisionBoard 内默认折叠的 details;若想要顶层「Org」tab,组件与纯函数已解耦、小改即可。🤖 opus agent 实现 + 我亲验。