Merge authoritative main into the task branch
This commit is contained in:
@@ -0,0 +1,280 @@
|
||||
# feature/rdm-settings-phase1a 任务卡
|
||||
|
||||
任务主记录:PR #617 https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/617;状态:已完成(合入前闭合);owner:weichen
|
||||
|
||||
## 基线与授权
|
||||
|
||||
- 权威仓:ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git;目标分支:main;R0(initial_base_sha)= ba81d638a6c845d0acde6896f4001bed096ba26c
|
||||
- 工作区:/home/weichen/projects/Agent-System-Dev-wt-feature-rdm-settings-phase1a(worktree);分支:feature/rdm-settings-phase1a
|
||||
- 分支类型:standalone;root_target:main;immediate_target:main;accepting_requirements:false
|
||||
- 需求分流:verdict=NEW;selected_initiative=无;requirement_sha256=085614ee5a2a7fe92cf18f577c0a1c0d33acc11682870331edd6f173309e8e14;triage_receipt=/tmp/cleanup-20261018/rdm1a-triage.json;receipt_sha256=7de7c2c70184d1e54bb00df5e808dfaffa0e78451d1166557e7ce18cf2079424
|
||||
|
||||
- 授权与交付终点:用户 2026-10-18 确认 RDM settings 收尾按分期推进(scope=phase、profile=user_only、order=split);本卡为一期 1a,终点为 UI/RDM/Frontend/Dev 合入、组合改钉及用户阶段 7 验收。扩围授权 land_fe_pw:Frontend 密码管理提交经 Frontend #107 合入 Frontend 主干(已合入 `0459567`)。未授权:一期 1b(R4/R5,等 IAM U4)、二期(R1 与扩展 API 2.16 发版,发版由用户执行)。
|
||||
- 关联仓工作区:UI/Frontend `/home/weichen/projects/Agent-System-RDM1a-Frontend-Combo/{ui,frontend}`;RDM `/home/weichen/projects/Agent-System-RDM-wt-feature-rdm-settings-phase1a`(分支均为 feature/rdm-settings-phase1a)。
|
||||
- 交付模式:goal-first(目标、范围和交付终点一次确认;范围内连续推进)
|
||||
- 实施执行:agent-per-unit(配置:AGENT-EXECUTION.md)
|
||||
- 合入执行:agent(已授权交付范围内,Review 通过、冲突解决且当前 HEAD 的 CI 通过后合入)
|
||||
- 人工决策点:仅限目标/范围/验收变更、重大取舍、高后果操作或无法自动判定的业务验收
|
||||
- 当前阶段:合入;当前增量:I1(一期 1a)
|
||||
- 流程依据:仓库根目录 policy/delivery.md(归档后仍按仓库根目录定位)
|
||||
|
||||
## 目标与非目标
|
||||
|
||||
- 目标:R2 成员检索(账号/姓名精确与模糊检索、专业角色筛选、服务端先筛选后分页、同名以账号区分、已加入不可重复添加)在 RDM、UI Picker 与 Frontend 成员页端到端可用;Dev 验收脚本不再对未执行场景输出 PASS。
|
||||
- 受影响:UI `Picker`;RDM `rdm.account.list`、`rdm.project.member.list`(向后兼容增量)与新读命令 `rdm.role.options`;Frontend `RdmMembersSection`;Dev `tests/integration/rdm-increment/acceptance_scenarios.sh` 与 `modules/{frontend,ui}` 指针。
|
||||
- 非目标:R1 项目共享设置、R3 旧职责模型(已被职责矩阵取代,放弃)、R4 权限矩阵剩余项与 R5 成员移除影响(一期 1b)、`AccountValidFor` 语义变更、RDM `perms/*` 与 IAM U4 冲突区。
|
||||
- 计划:`docs/superpowers/plans/2026-10-18-rdm-settings-phase1a-plan.md`。
|
||||
|
||||
## Agent 实施收据
|
||||
|
||||
路由与 fail-stop 规则见根目录 AGENT-EXECUTION.md 与 policy/delivery.md;每次尝试一行,原始日志留在源码外收据路径。
|
||||
|
||||
| 单元 ID | 预期范围 | 配置摘要 | 角色 | 候选顺序 | attempt | CLI/模型 | 终态 | transport | fallback | 源码外收据路径 |
|
||||
|---|---|---|---|---|---|---|---|---|---|---|
|
||||
| ui-rdm1a-picker-hardening | UI src/Picker.tsx、src/ui.css、test/picker.test.tsx | UI AGENT-EXECUTION.md | implementation | cursor→antigravity→pi | 1 | cursor/auto(fresh) | success | 5c2b103 | 无 | /tmp/cleanup-20261018/rdm1a/ui-picker-run.json |
|
||||
| rdm-rdm1a-r2-member-search | RDM accountdir/member_search/plugin | RDM AGENT-EXECUTION.md | implementation | cursor→antigravity→pi | 1 | cursor/auto(fresh) | scope-expansion(fail-stop:需改 plugin_test 命令集) | — | 无 | /tmp/cleanup-20261018/rdm1a/rdm-r2-run.json |
|
||||
| rdm-rdm1a-r2-member-search-r2 | 同上 + plugin_test.go 一项 | 同上 | implementation | 同上 | 1 | cursor/auto(fresh) | scope-expansion(fail-stop:host 追加的行类型规则与既有测试冲突) | — | 无 | /tmp/cleanup-20261018/rdm1a/rdm-r2-run2.json |
|
||||
| rdm-rdm1a-r2-member-search-r3 | 同上(去掉行类型规则) | 同上 | implementation | 同上 | 1 | cursor/auto(fresh) | success | f1cd92c | 无 | /tmp/cleanup-20261018/rdm1a/rdm-r2-run3.json |
|
||||
| frontend-rdm1a-members-search | Frontend adminRdmSections(RdmMembersSection)、rdmManagement.ts、新测试 | Frontend AGENT-EXECUTION.md | implementation | 同上 | 1 | cursor/auto(fresh) | success | 96ab2eb | 无 | /tmp/cleanup-20261018/rdm1a/fe-members-run.json |
|
||||
| dev-rdm1a-acceptance-not-run | tests/integration/rdm-increment/acceptance_scenarios.sh | AGENT-EXECUTION.md | implementation | 同上 | 1 | cursor/auto(fresh) | success | 327c897 | 无 | /tmp/cleanup-20261018/rdm1a/dev-acceptance-run.json |
|
||||
| rdm-rdm1a-repin-frontend-ui | RDM pins/agent-system-{frontend,ui} | RDM AGENT-EXECUTION.md | implementation | 同上 | 1 | cursor/auto(fresh) | success | 9bd62cd | 无 | /tmp/cleanup-20261018/rdm1a/rdm-pins-run.json |
|
||||
| dev-rdm1a-repin-frontend-ui | modules/{frontend,ui} | AGENT-EXECUTION.md | implementation | 同上 | 1 | cursor/auto(fresh) | success | f90bc0f | 无 | /tmp/cleanup-20261018/rdm1a/dev-pins-run.json |
|
||||
|
||||
## 关联方向与规划
|
||||
|
||||
- 适用状态:待核对(无适用规划时说明原因)
|
||||
- 主记录路径/版本:待核对(路径按仓库根目录定位,归档后不变;只引用唯一正文)
|
||||
- 对应里程碑:待核对
|
||||
|
||||
## 需求分析
|
||||
|
||||
| ID | 描述 | 项目符合度及依据 | 优先级 | 验收条件 | 依赖 | 结论 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| R2 | 账号/姓名检索、分页、专业角色过滤同源,稳定 ID 选择 | 部分符合:主干已有 Picker 与姓名子串检索;缺角色筛选、精确匹配、先筛后分页、成员表检索分页、姓名+账号显示 | P0 | 见计划「验收条件」前三条 | UI U1、RDM U2 | 纳入 1a |
|
||||
| R5-a | 验收声明来自实际执行 | 不符合:场景 9 无条件输出 PASS | P0 | 未执行项报告 NOT_RUN 并计入汇总 | 无 | 纳入 1a |
|
||||
| R1/R4/R5-b | 共享设置、权限矩阵剩余、移除影响 | 依赖 IAM U4 或发版 | — | — | IAM U4、扩展 API 2.16 | 1b/二期 |
|
||||
|
||||
## 方案与计划
|
||||
|
||||
- 方案引用:旧任务 `.task/feature-rdm-settings-completion.md`(旧分支,需求表 R1–R5)与本次差距分析;参考 diff 存于仓外 `/tmp/cleanup-20261018/rdm1a/`
|
||||
- 实施计划引用:`docs/superpowers/plans/2026-10-18-rdm-settings-phase1a-plan.md`(单元 U1–U5,R2、R5-a)
|
||||
- 测试计划引用:同计划「验收条件」;各单元 verification 见仓外单元 JSON
|
||||
|
||||
## 阶段记录
|
||||
|
||||
| 阶段 | 对象版本 | 状态 | 决策/执行者 | 时间 | 依据 |
|
||||
|---|---|---|---|---|---|
|
||||
| 需求拆解 | 858d566 | 完成 | host | 2026-10-18 | 需求分析表 |
|
||||
| 需求评估 | 858d566 | 完成 | host | 2026-10-18 | 差距分析(R3 放弃、R1/R4/R5-b 后移) |
|
||||
| 需求表确认 | 858d566 | 完成 | 用户 | 2026-10-18 | scope=phase、profile=user_only、order=split |
|
||||
| 方案设计 | 858d566 | 完成 | host | 2026-10-18 | 计划「R2 合同」 |
|
||||
| 实施计划 | 858d566 | 完成 | host | 2026-10-18 | docs/superpowers/plans/2026-10-18-rdm-settings-phase1a-plan.md |
|
||||
| 实施与自检 | f90bc0f | 完成 | cursor worker(见收据) | 2026-10-18 | 各单元 verification + host 本地重跑 |
|
||||
| 正式测试与验收 | 72280f4 | 用户决定先合入后在部署上自行验收 | 用户 | 2026-10-18 | AskQuestion stage7=merge_then_accept;问题另开修复任务 |
|
||||
| 代码 Review | 各组件 PR head;Dev 72280f4 | 完成 | host(主模型,独立于实施 worker) | 2026-10-18 | 见合入与清理 |
|
||||
| 合入 | 待定 | 待执行 | — | — | — |
|
||||
| 合入核验与收口 | 待定 | 待执行 | — | — | — |
|
||||
|
||||
## 探索试验与迭代
|
||||
|
||||
| 增量/试验 | 假设 | 范围 | 判断和停止条件 | 授权/决策依据 | 结果 | 变更影响 | 需重审补测 |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| 待定义 | — | — | — | 待核对 | NOT_RUN | 待评估 | 待评估 |
|
||||
|
||||
## 同步记录
|
||||
|
||||
| 节点 | sync_base_sha | tested_head_sha | checked_at |
|
||||
|---|---|---|---|
|
||||
| 启动 | ba81d638a6c845d0acde6896f4001bed096ba26c | ba81d638a6c845d0acde6896f4001bed096ba26c | 2026-10-18T10:36:45Z |
|
||||
|
||||
## 证据(Evidence)
|
||||
|
||||
<!-- CMD="<命令>" make evidence 写入;手抄/转写输出视为无效证据(AGENTS.md 证据与验证门禁)。 -->
|
||||
| 时间(UTC) | 命令 | 被测HEAD | exit | 来源 | sha256(16) |
|
||||
|---|---|---|---|---|---|
|
||||
|
||||
## 交付调度
|
||||
|
||||
- 调度状态:未入队;调度记录:无
|
||||
- entry_id:无;attempt_id:无;窗口执行者:无
|
||||
- 固定候选:无(base/head、组件与相关配置引用实际尝试)
|
||||
- 调度依据:policy/delivery.md#合入调度
|
||||
- 固定后证据:源码外 RECEIPT;实际结果后按授权原样导入和闭合
|
||||
|
||||
## 结果与验证
|
||||
|
||||
- 结果:R2 成员检索端到端落地——UI #59(5c2b103)Picker 加固;RDM #435(0b75756)服务端检索/筛选/分页与 rdm.role.options;Frontend #108(426d104)成员页接入;RDM #436(2b1fee7)产品改钉 Frontend/UI;本 PR:验收脚本场景 9 改报 NOT_RUN,Dev 改钉 modules/frontend→426d104、modules/ui→5c2b103。扩围:Frontend #107(0459567)落地 Dev 已上线的密码前端。
|
||||
- 验证:GATE——Dev #617 CI(test、test-pg、svc-realcombo)@72280f4;UI #59 CI(test、governance)@5c2b103;RDM #435 CI(build-and-test、governance)@e3c813e;Frontend #107 @7df77c1、#108 @8260bf5(governance);RDM #436 @ce27e23。SELF——Frontend 426d104+UI 5c2b103 组合 tsc/vitest/vite build、test-pins、脚本语法(证据表);RDM make product(RDM 卡)。NOT_RUN——验收脚本对真实部署的执行、浏览器多身份验收(用户阶段 7)、部署。
|
||||
- 影响与剩余项:Dev tests/integration/lifecycle/rdm.pin 未升级(生命周期测试制品钉扎,非本期必需)。非阻塞记录:Frontend 成员页第二个 import 位于文件中部(避开 IAM U4 冲突区);成员列沿用 ad-mono。一期 1b(R4/R5)等 IAM U4;二期 R1。
|
||||
|
||||
## 规划进展与下一步
|
||||
|
||||
- 本次推进/剩余:待核对(依据实际成果更新适用方案/规划)
|
||||
- 首选下一任务:待核对(无适用规划、已完成或受阻时如实说明,不虚构任务)
|
||||
- 推荐依据:待填写
|
||||
- 前置条件/待确认:待核对
|
||||
- 预期产物/验收条件:待定义
|
||||
- 重复任务核对:待核对(已有/在途任务、PR 与规划记录)
|
||||
- 启动授权:未授权(建议不自动启动新任务,仍须明确授权)
|
||||
|
||||
## 合入与清理
|
||||
|
||||
- Review 记录:host 主模型逐个审阅组件 diff(UI 5c2b103、RDM f1cd92c、Frontend 96ab2eb、Dev 327c897/f90bc0f),实施由独立 cursor worker 新进程完成,审阅未复用实施会话;结论通过,仅非阻塞记录;本地重放各单元 verification 一致。
|
||||
- 冲突记录:NOT_RUN(最新目标同步、冲突处置、组合兼容核验及复审/补测)
|
||||
- CI 记录:NOT_RUN(当前 HEAD 完整 SHA、全部必需检查、运行链接、执行身份及 GATE 结果)
|
||||
- 合入记录:NOT_RUN(交付授权范围、PR、被核验 HEAD、合入 SHA、目标分支及内容核验)
|
||||
- 清理记录:NOT_RUN(授权依据、写者退出确认、worktree/分支/任务卡处置)
|
||||
|
||||
<!-- Local receipt: SELF. Digests detect corruption; they do not authenticate a reviewer or CI. -->
|
||||
```json
|
||||
{
|
||||
"summary_schema": 1,
|
||||
"source": "SELF",
|
||||
"timestamp": "2026-10-18T10:35:55.125612+00:00",
|
||||
"command": "make precheck",
|
||||
"exit_code": 0,
|
||||
"cwd": "/home/weichen/projects/Agent-System-Dev",
|
||||
"before_head": "ba81d638a6c845d0acde6896f4001bed096ba26c",
|
||||
"after_head": "ba81d638a6c845d0acde6896f4001bed096ba26c",
|
||||
"branch": "main",
|
||||
"target_branch": "main",
|
||||
"target_head": "ba81d638a6c845d0acde6896f4001bed096ba26c",
|
||||
"root_target": "main",
|
||||
"immediate_target": "main",
|
||||
"before_tracked_diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"after_tracked_diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"output_tail": [
|
||||
"make[1]: Entering directory '/home/weichen/projects/Agent-System-Dev'",
|
||||
"[repo] branch=main head=ba81d638a6",
|
||||
"[remote] origin/main=ba81d638a6 ahead=0 behind=0",
|
||||
"[tree] clean submodules_drift=0 uninit=5",
|
||||
"[warn] 5 个子模块未初始化——构建/测试前需物化(不阻断写入)",
|
||||
"[worktrees] linked=10",
|
||||
"[recycle] merged un-recycled branches: feature/layered-python-env",
|
||||
"[initiatives] local cards (not authoritative): none",
|
||||
"[hooks] core.hooksPath=scripts/hooks(pre-commit/post-merge 实际接线)",
|
||||
"[facts] policy/facts.md 6 条事实均在有效期内",
|
||||
"[required-reading] core/baseline.md, workflows/delivery.md §1, policy/delivery.md",
|
||||
"[R0] ba81d638a6(完整:ba81d638a6c845d0acde6896f4001bed096ba26c)",
|
||||
"[worktree] before-sync: recursive component checks passed",
|
||||
"[verdict] READY — 保留本次 precheck receipt 后建任务工作区:PRECHECK_RECEIPT=/tmp/task-precheck.json make task-start NAME=feature/your-branch",
|
||||
"make[1]: Leaving directory '/home/weichen/projects/Agent-System-Dev'"
|
||||
],
|
||||
"output_sha256": "2f0013d9d7dd472fc1308102365d2e2db04b7b2bb132a19880804609cd78e08e",
|
||||
"receipt_sha256": "d3ff2433b1b5bfb4df2806794c102d06fd462a0ccf7ad3ad37929b26496faf19",
|
||||
"receipt_path": "/home/weichen/.cache/agent-system-dev/evidence/d3ff2433b1b5bfb4df2806794c102d06fd462a0ccf7ad3ad37929b26496faf19.json"
|
||||
}
|
||||
```
|
||||
|
||||
<!-- Local receipt: SELF. Digests detect corruption; they do not authenticate a reviewer or CI. -->
|
||||
```json
|
||||
{
|
||||
"summary_schema": 1,
|
||||
"source": "SELF",
|
||||
"timestamp": "2026-10-18T11:12:36.203204+00:00",
|
||||
"command": "make test-pins",
|
||||
"exit_code": 0,
|
||||
"cwd": "/home/weichen/projects/Agent-System-Dev-wt-feature-rdm-settings-phase1a",
|
||||
"before_head": "f90bc0ffb3750d27b7f4e4ebadbb0ebdf1f1d68c",
|
||||
"after_head": "f90bc0ffb3750d27b7f4e4ebadbb0ebdf1f1d68c",
|
||||
"branch": "feature/rdm-settings-phase1a",
|
||||
"target_branch": "main",
|
||||
"target_head": "ba81d638a6c845d0acde6896f4001bed096ba26c",
|
||||
"root_target": "main",
|
||||
"immediate_target": "main",
|
||||
"before_tracked_diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"after_tracked_diff_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"output_tail": [
|
||||
"ok modules/backend logging-system",
|
||||
"ok deps/agent-native agent-intent",
|
||||
"warn: deps/agent-native deps/development-guidelines is 26b562d2e34f, Dev is 2688fd2be6a5",
|
||||
"ok deps/agent-native error-code-system",
|
||||
"ok deps/agent-native logging-system",
|
||||
"ok deps/agent-squad agent-intent",
|
||||
"ok deps/agent-squad agent-native",
|
||||
"warn: deps/agent-squad deps/development-guidelines is 26b562d2e34f, Dev is 2688fd2be6a5",
|
||||
"ok deps/agent-squad error-code-system",
|
||||
"ok deps/agent-squad logging-system",
|
||||
"warn: deps/agent-intent deps/development-guidelines is 26b562d2e34f, Dev is 2688fd2be6a5",
|
||||
"ok deps/agent-intent error-code-system",
|
||||
"ok deps/agent-intent logging-system",
|
||||
"pins ok",
|
||||
"make[1]: Leaving directory '/home/weichen/projects/Agent-System-Dev-wt-feature-rdm-settings-phase1a'"
|
||||
],
|
||||
"output_sha256": "322ec1f3a1eb346fe5a89b84b30502eca7141aa489689646a3a2faace7856924",
|
||||
"receipt_sha256": "54c15d0bc22618c5c7c6bfe502df532f9c8f777ef85f7bbc56a52238fec9562b",
|
||||
"receipt_path": "/home/weichen/.cache/agent-system-dev/evidence/54c15d0bc22618c5c7c6bfe502df532f9c8f777ef85f7bbc56a52238fec9562b.json"
|
||||
}
|
||||
```
|
||||
|
||||
<!-- Local receipt: SELF. Digests detect corruption; they do not authenticate a reviewer or CI. -->
|
||||
```json
|
||||
{
|
||||
"summary_schema": 1,
|
||||
"source": "SELF",
|
||||
"timestamp": "2026-10-18T11:12:42.270681+00:00",
|
||||
"command": "bash -n tests/integration/rdm-increment/acceptance_scenarios.sh",
|
||||
"exit_code": 0,
|
||||
"cwd": "/home/weichen/projects/Agent-System-Dev-wt-feature-rdm-settings-phase1a",
|
||||
"before_head": "f90bc0ffb3750d27b7f4e4ebadbb0ebdf1f1d68c",
|
||||
"after_head": "f90bc0ffb3750d27b7f4e4ebadbb0ebdf1f1d68c",
|
||||
"branch": "feature/rdm-settings-phase1a",
|
||||
"target_branch": "main",
|
||||
"target_head": "ba81d638a6c845d0acde6896f4001bed096ba26c",
|
||||
"root_target": "main",
|
||||
"immediate_target": "main",
|
||||
"before_tracked_diff_sha256": "ae1ee7ba92fa38c5961408605c01d3f32cd5037ae206924c41db1803b2d0b471",
|
||||
"after_tracked_diff_sha256": "ae1ee7ba92fa38c5961408605c01d3f32cd5037ae206924c41db1803b2d0b471",
|
||||
"output_tail": [],
|
||||
"output_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"receipt_sha256": "3f1e6796eb2637e8a8d51cee997c8f80a1aedf31e92bc989057c7ab7e12a82e8",
|
||||
"receipt_path": "/home/weichen/.cache/agent-system-dev/evidence/3f1e6796eb2637e8a8d51cee997c8f80a1aedf31e92bc989057c7ab7e12a82e8.json"
|
||||
}
|
||||
```
|
||||
|
||||
<!-- Local receipt: SELF. Digests detect corruption; they do not authenticate a reviewer or CI. -->
|
||||
```json
|
||||
{
|
||||
"summary_schema": 1,
|
||||
"source": "SELF",
|
||||
"timestamp": "2026-10-18T11:12:46.273806+00:00",
|
||||
"command": "bash -c 'cd /home/weichen/projects/Agent-System-RDM1a-Frontend-Combo/frontend && git fetch -q origin && git checkout -q --detach 426d1044ac99507edfeae3b5bf6b1f6de358f0d6 && git -C ../ui checkout -q --detach 5c2b1036dd1aff89ec4eeae0c96493694e33ad4c && npx tsc -b && npx vitest run && npx vite build'",
|
||||
"exit_code": 0,
|
||||
"cwd": "/home/weichen/projects/Agent-System-Dev-wt-feature-rdm-settings-phase1a",
|
||||
"before_head": "f90bc0ffb3750d27b7f4e4ebadbb0ebdf1f1d68c",
|
||||
"after_head": "f90bc0ffb3750d27b7f4e4ebadbb0ebdf1f1d68c",
|
||||
"branch": "feature/rdm-settings-phase1a",
|
||||
"target_branch": "main",
|
||||
"target_head": "ba81d638a6c845d0acde6896f4001bed096ba26c",
|
||||
"root_target": "main",
|
||||
"immediate_target": "main",
|
||||
"before_tracked_diff_sha256": "4c1eae8910d3c1e1c0960eb1dbb32bd26db36915627ae183a4ccae2ef39818d8",
|
||||
"after_tracked_diff_sha256": "4c1eae8910d3c1e1c0960eb1dbb32bd26db36915627ae183a4ccae2ef39818d8",
|
||||
"output_tail": [
|
||||
"dist/index.html 0.40 kB │ gzip: 0.27 kB",
|
||||
"dist/assets/index-LeIKZxBo.css 114.65 kB │ gzip: 19.25 kB",
|
||||
"dist/assets/jszip.min-XgtLb15L.js 0.12 kB │ gzip: 0.12 kB",
|
||||
"dist/assets/docx-preview-BX-E56Uz.js 77.41 kB │ gzip: 21.29 kB",
|
||||
"dist/assets/jszip.min-DpFGSQHe.js 97.26 kB │ gzip: 30.16 kB",
|
||||
"dist/assets/index-CTwq5Yiv.js 213.14 kB │ gzip: 70.03 kB",
|
||||
"dist/assets/xlsx-CkFp8p6R.js 429.53 kB │ gzip: 143.07 kB",
|
||||
"dist/assets/index-B4krzkTJ.js 639.68 kB │ gzip: 199.10 kB",
|
||||
"dist/assets/pptx-preview.es-Dygvqd4B.js 1,255.23 kB │ gzip: 401.45 kB",
|
||||
"",
|
||||
"(!) Some chunks are larger than 500 kB after minification. Consider:",
|
||||
"- Using dynamic import() to code-split the application",
|
||||
"- Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks",
|
||||
"- Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.",
|
||||
"✓ built in 7.63s"
|
||||
],
|
||||
"output_sha256": "2eb8a43a3b22a0fb54468e635c661d1ba57bc0733ac534d546721a5abd6eb072",
|
||||
"receipt_sha256": "6003570995fbcdb45627954a5a0fe1ab7d331a37175a042c457635cb6e875c97",
|
||||
"receipt_path": "/home/weichen/.cache/agent-system-dev/evidence/6003570995fbcdb45627954a5a0fe1ab7d331a37175a042c457635cb6e875c97.json"
|
||||
}
|
||||
```
|
||||
|
||||
## 闭合记录(合入前折叠)
|
||||
|
||||
- 本卡在 PR #617(https://git-home.u1680832.nyat.app:30319/weichen/Agent-System-Dev/pulls/617)合入前闭合并归档,随该 PR 一同合入。
|
||||
- 该 PR 的合并提交即本任务的落地记录。
|
||||
- 合入后无需回填,也无需单独的闭合 PR。
|
||||
@@ -0,0 +1,40 @@
|
||||
# RDM 设置收尾 · 一期 1a 实施计划(2026-10-18)
|
||||
|
||||
任务卡:`.task/feature-rdm-settings-phase1a.md`。取代旧任务 `feature/rdm-settings-completion` 中与主干不冲突、且不依赖 IAM U4 的部分。
|
||||
|
||||
## 已确认的决策
|
||||
|
||||
- 分期:一期 1a(本计划)= UI Picker 加固、R2 成员检索、验收脚本误报修复;一期 1b = R4 权限矩阵剩余项、R5 成员移除影响与原子移除,等 IAM U4 合入后在新主干上做;二期 = R1 项目共享设置(扩展 API 2.16,发版由用户本人执行)。
|
||||
- R3 文档职责:主干已用职责矩阵取代,旧分支的 `rdm.duty.tree`、章节职责版本、旧职责界面不再移植。
|
||||
- Profile 语义(二期):只禁止用户自建 profile 指定模型,内置 profile 的路由保留。
|
||||
- 集成欠账:Frontend 密码管理提交(`92864db`,Dev 已钉住并上线)已经由 Frontend #107 合入 Frontend 主干(`0459567`),本期 Dev 改钉 Frontend 不会回退密码功能。
|
||||
|
||||
## 单元与边界
|
||||
|
||||
| 单元 | 仓库 | 允许路径 | 依赖 |
|
||||
|---|---|---|---|
|
||||
| U1 Picker 加固 | UI | `src/Picker.tsx`、`src/ui.css`、`test/picker.test.tsx` | 无 |
|
||||
| U2 R2 成员检索 | RDM | `internal/rdmapp/accountdir.go`、新 `internal/rdmapp/member_search.go`、`plugins/rdm/plugin.go`(仅 account.list / member.list / role.options)、新 `plugins/rdm/member_search_test.go` | 无 |
|
||||
| U3 成员页接入 | Frontend | `src/components/adminRdmSections.tsx` 中 `RdmMembersSection`(不动 import 区与 `RdmRolesPanel`)、`src/rdmManagement.ts`、新测试 | U1、U2 合同 |
|
||||
| U4 验收脚本 | Dev | `tests/integration/rdm-increment/acceptance_scenarios.sh` | 无 |
|
||||
| U5 组合改钉 | RDM、Dev | RDM `pins/agent-system-{frontend,ui}`;Dev `modules/{frontend,ui}` | U1–U4 合入 |
|
||||
|
||||
IAM U4 同时改动 RDM `perms/*`、`projects_api.go`、`perms_api.go` 与 Frontend `adminRdmSections.tsx` 的 import 区和 `RdmRolesPanel`,上表边界即为避免与其冲突。U2 只使用 U4 保留的 `perms.Store` 读取接口。
|
||||
|
||||
## R2 合同(RDM,向后兼容的增量)
|
||||
|
||||
- `rdm.account.list`:新增可选 `roleId`、`match`(`fuzzy` 默认 / `exact`);先全量筛选再按账号分页(`cursor` 为上一页最后账号,`limit` 默认 50、上限 200);每行新增 `joined`、`projectRole`、`profRole`。授权不变(member.manage)。
|
||||
- `rdm.project.member.list`:新增可选 `query`、`match`、`roleId`、`projectRole`、`cursor`、`limit`;返回新增 `next`、`total`、`accountDirectoryAvailable`,成员行新增 `name`;不带 `limit` 时返回全部(权限矩阵页依赖)。授权不变(doc.read)。
|
||||
- 新读命令 `rdm.role.options`(`purpose` = members | duties | permissions):返回启用的专业角色 `{roleId, name}`。
|
||||
|
||||
## 验收条件
|
||||
|
||||
- 同名人员以账号区分,选择提交稳定账号;精确/模糊匹配、专业角色筛选均由服务端在分页前完成,全部匹配可经游标逐页到达且不重复。
|
||||
- 已加入人员在候选中可见但不可再次添加;失去管理资格时选择器禁用;迟到响应不展示。
|
||||
- 成员表显示姓名与账号,支持检索、角色筛选和分页。
|
||||
- 验收脚本中不再有未执行检查却输出 PASS 的场景;未执行项报告 NOT_RUN 并计入汇总。
|
||||
- 组件 CI(UI/RDM/Frontend 治理检查,RDM 测试)与 Dev 组合 CI(`make test`、`make build`)在最终 HEAD 上通过;Frontend 与 UI 的类型检查、测试和构建在组合目录本地执行(Frontend CI 不跑这些)。
|
||||
|
||||
## 合入顺序
|
||||
|
||||
UI(U1)与 RDM(U2)并行 → Frontend(U3,基于含 U1 的 UI)→ RDM 改钉 Frontend/UI → Dev(U4 + 改钉 Frontend/UI;RDM 制品钉扎按需另行升级)。阶段 7 业务验收由用户判定。
|
||||
+1
-1
Submodule modules/frontend updated: 92864db8d3...426d1044ac
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
# P8 第八节十场景验收(提案 rdm-settings-members-duties-perms-increment §8)。
|
||||
# 走真实服务 HTTP(--auth 会话),多账号多角色;输出逐场景 PASS/FAIL。
|
||||
# 走真实服务 HTTP(--auth 会话),多账号多角色;输出逐场景 PASS/FAIL/NOT_RUN(未执行检查的场景不计 PASS)。
|
||||
# v0.4.0 版:RDM 命令面用 rdm.project.create 的 RID(不再直用基座项目);
|
||||
# 场景 2 姓名过滤全量断言(基座 v0.4.0+ AccountSearcher);setRole→set-role(#350)。
|
||||
# 前置:ADMIN 账号须为基座管理员(改密门已过)且已登记 RDM 域管理员
|
||||
@@ -10,11 +10,13 @@ set -u
|
||||
BASE="${BASE:-http://127.0.0.1:8788}"
|
||||
ADMIN_USER="${ADMIN_USER:?需要管理员账号}"
|
||||
ADMIN_PASS="${ADMIN_PASS:?需要管理员密码}"
|
||||
PASS=0; FAIL=0; FAILED=()
|
||||
PASS=0; FAIL=0; FAILED=(); NOT_RUN=0; NOT_RUN_IDS=()
|
||||
|
||||
say() { printf '%s\n' "$*"; }
|
||||
ok() { PASS=$((PASS+1)); say "PASS $1"; }
|
||||
ok() { PASS=$((PASS+1)); printf 'PASS %s\n' "$1"; }
|
||||
bad() { FAIL=$((FAIL+1)); FAILED+=("$1"); say "FAIL $1 :: ${2:-}"; }
|
||||
# 未执行检查的场景:如实计入 NOT_RUN,不计 PASS
|
||||
notrun() { NOT_RUN=$((NOT_RUN+1)); NOT_RUN_IDS+=("$1"); say "NOT_RUN $1 :: ${2:-}"; }
|
||||
|
||||
# 会话登录(cookie jar)与 API 助手
|
||||
login() { # user pass jar
|
||||
@@ -166,7 +168,7 @@ out=$(RDM "$JO" rdm.perm.unset "{\"projectId\":\"$RID\",\"member\":\"a1\",\"acti
|
||||
echo "$out" | grep -q '"restored":true' && ok "8c 恢复默认(实际撤销)" || bad "8c" "$out"
|
||||
|
||||
say "== 场景 9:迟到响应/断网(UI 行为)=="
|
||||
say "PASS 9 (UI 层:Picker 迟到响应代次丢弃/空态/重试由 UI #53 单测覆盖;浏览器目视复验归用户验收)"
|
||||
notrun 9 "UI 层行为本脚本不执行:Picker 迟到响应代次丢弃/空态/重试由 UI #53 单测覆盖;浏览器目视复验归用户验收"
|
||||
|
||||
say "== 场景 10:共享配置一致 + 私域边界 =="
|
||||
# 同项目不同成员读项目设置一致(当前 user/project 均无受管项显示)
|
||||
@@ -180,6 +182,7 @@ r=$(api "$JO" GET "/api/projects/$PID1/conversations" | body | grep -c "$con" ||
|
||||
[ "$r" = "0" ] && ok "10b 他人会话私域不可见" || bad "10b" "leak=$r"
|
||||
|
||||
say ""
|
||||
say "== 汇总:PASS=$PASS FAIL=$FAIL =="
|
||||
say "== 汇总:PASS=$PASS FAIL=$FAIL NOT_RUN=$NOT_RUN =="
|
||||
[ ${#FAILED[@]} -gt 0 ] && printf '失败场景:%s\n' "${FAILED[*]}"
|
||||
[ ${#NOT_RUN_IDS[@]} -gt 0 ] && printf '未执行场景(NOT_RUN,未计入 PASS):%s\n' "${NOT_RUN_IDS[*]}"
|
||||
[ "$FAIL" = "0" ]
|
||||
|
||||
Reference in New Issue
Block a user