diff --git a/progress.md b/progress.md index 8c0c5f9..e8811ca 100644 --- a/progress.md +++ b/progress.md @@ -20,6 +20,9 @@ | 2026-05-25 | 3 | quality review | 代码质量审查未通过:SQLite schema drift 可导致 500、`partial` 置信度不在契约内、workflow nil Runtime panic | coding agent 按 blocking 范围修复 | | 2026-05-25 | 4 | coding agent | 实现 Vue 中文只读工作台外壳 | 完成;提交 `feat: add chinese vue workbench shell` | | 2026-05-25 | 4 | spec review | 规格审查未通过:状态徽标和部分视图直接展示 `local_sample`、`low` 等内部英文值 | 已修复为中文来源和置信度展示 | +| 2026-05-25 | 5 | coding agent | 接入前端只读 API,显示真实 projects/runtime/workflow/agents 数据 | 完成;提交 `feat: connect frontend readonly apis` | +| 2026-05-25 | 5 | spec review | 规格审查未通过:valid agent TOML 状态不明显,且存在 `handoffEdges`、`主 agent`、`developer_instructions` 可见文案 | coding agent 已按范围修复 | +| 2026-05-25 | 5 | spec review | 复审未通过:空状态仍显示英文 `agent`,设置页显示 `Codex home` | 已修复为“智能体”和“Codex 主目录” | | 2026-05-25 | 4 | coding agent | 创建 Vue 3 + Vite 中文只读前端工作台,包含五个 tabs、静态示例数据、来源/置信度和空状态 | 完成;未接入真实 API,未提供写回入口 | | 2026-05-25 | 5 | coding agent | TDD 接入前端只读 API client、normalizer 和项目/工作流/智能体真实数据视图 | 完成;提交前已通过测试、构建和本地接口 smoke 验证 | | 2026-05-25 | 5 | spec review | 规格审查未通过:valid agent 状态不明确,工作流和 agent 只读文案仍含内部英文 | coding agent 按 blocking 范围修复 | @@ -108,6 +111,10 @@ | 2026-05-25 | `git diff --check` | PASS | Phase 4 whitespace 检查通过 | | 2026-05-25 | `pnpm build` | PASS | Phase 4 规格修复后前端构建通过 | | 2026-05-25 | `git diff --check` | PASS | Phase 4 规格修复 whitespace 检查通过 | +| 2026-05-25 | `pnpm test` | PASS | Phase 5 normalizer 测试 7/7 通过 | +| 2026-05-25 | `pnpm build` | PASS | Phase 5 前端构建通过 | +| 2026-05-25 | `go test ./...` | PASS | Phase 5 后端回归测试通过 | +| 2026-05-25 | `git diff --check` | PASS | Phase 5 whitespace 检查通过 | | 2026-05-25 | `pnpm test` | FAIL | TDD 红灯:`normalizers.js` 尚未实现,新增 normalizer 测试无法导入模块 | | 2026-05-25 | `pnpm test` | PASS | source/confidence 中文映射、invalid agent TOML、空 runtime/workflow 测试通过 | | 2026-05-25 | `pnpm build` | PASS | Phase 5 首轮 Vue/Vite 构建通过 | @@ -145,5 +152,7 @@ | 3 | `SourceEvidence.Confidence` 出现设计外值 `partial` | 保留 `Kind: sqlite_partial`,将 `Confidence` 改为 `medium` | `go test ./internal/runtime ./internal/server` PASS | | 3 | `workflow.Store` 未配置 Runtime 会 panic | nil Runtime 返回空 view 和 `runtime_missing`/`low` 证据 | `go test ./internal/workflow` PASS | | 4 | UI 直接展示 `local_sample`、`api_missing`、`low`、`medium` 等内部英文值 | `StatusBadge` 增加中文映射,并将示例数据来源/置信度改为中文展示值 | `pnpm build` PASS | +| 5 | valid agent 未明确显示 TOML 有效,工作流/角色设定仍有内部英文名 | normalizer 将 valid 状态显示为 `TOML 有效`,并清理交接边、主智能体、角色设定等中文文案 | `pnpm test` PASS | +| 5 | 空状态和设置页仍有英文 `agent`、`Codex home` | 改为“智能体”和“Codex 主目录”,补中文文案回归测试 | 待复测 | | 5 | workflow phases 会把 `task_plan.md` 里错误记录表的 `Time/Phase` 行显示到 UI | normalizer 过滤非阶段状态,并把数字阶段名转为“阶段 N” | `pnpm test` PASS | | 5 | valid agent 状态只显示“已读取”,且工作流/智能体可见文案残留内部英文 | normalizer 改为“TOML 有效”/“TOML 无效”,角色设定字段改中文,WorkflowView 改“交接边”和“主智能体” | `pnpm test` PASS | diff --git a/task_plan.md b/task_plan.md index 1f261e0..17974cb 100644 --- a/task_plan.md +++ b/task_plan.md @@ -35,4 +35,5 @@ | 2026-05-25 | 2 | 规格审查发现重复键 TOML 被报告为 valid,且 agent symlink 可读取 Codex home 内非 agent TOML | TDD 补充 duplicate key、invalid key、symlink-to-config 测试后修复 parser 和 agent store 边界 | 已通过最终验证 | | 2026-05-25 | 2 | 复审发现 `agents -> .` 目录 symlink 可把 root `config.toml` 当作 agent 读取 | TDD 补充 symlinked agents directory 测试后在 `Store.List` 拒绝 symlinked `agents` 目录 | 已通过最终验证 | | 2026-05-25 | 4 | 规格审查发现 UI 直接展示 `local_sample`、`low` 等内部英文值 | 将状态徽标、示例数据和硬编码来源/置信度改为中文展示 | 待复审 | +| 2026-05-25 | 5 | 规格复审发现 UI 残留英文 `agent` 和 `Codex home` | 改为“智能体”和“Codex 主目录”,并补中文文案测试 | 待复审 | | 2026-05-25 | 5 | 规格审查发现 valid agent 未明确显示 TOML 状态,且 UI 仍有 `handoffEdges`、`主 agent`、`developer_instructions` 可见文案 | TDD 补 valid agent 状态和 workflow 空交接文案测试后修复 normalizer 与 WorkflowView 文案 | 待复审 | diff --git a/web/src/api/normalizers.test.mjs b/web/src/api/normalizers.test.mjs index 8609df2..99d7d03 100644 --- a/web/src/api/normalizers.test.mjs +++ b/web/src/api/normalizers.test.mjs @@ -8,6 +8,7 @@ import { normalizeRuntime, normalizeWorkflow, } from './normalizers.js' +import { settings } from '../data.js' test('maps source kind and confidence to Chinese display text', () => { assert.equal(formatSourceKind('sqlite_readonly'), 'SQLite 只读') @@ -58,6 +59,14 @@ test('normalizes valid agent TOML with visible parse status', () => { assert.match(agent.toml, /角色设定/) }) +test('empty agent and settings copy stay Chinese', () => { + const agents = normalizeAgent({}) + + assert.doesNotMatch(agents.description, /\bagent\b/i) + assert.ok(settings.some((item) => item.name === 'Codex 主目录')) + assert.ok(settings.every((item) => item.name !== 'Codex home')) +}) + test('normalizes empty runtime without falling back to fake real data', () => { const runtime = normalizeRuntime({ items: [], diff --git a/web/src/data.js b/web/src/data.js index a2c6d27..2a0b7b7 100644 --- a/web/src/data.js +++ b/web/src/data.js @@ -155,7 +155,7 @@ export const drafts = [ ] export const settings = [ - { name: 'Codex home', value: '/Users/yoilun/.codex', detail: '由后端配置提供', enabled: true }, + { name: 'Codex 主目录', value: '/Users/yoilun/.codex', detail: '由后端配置提供', enabled: true }, { name: 'SQLite 状态读取', value: '只读 mode=ro&immutable=1', detail: '通过只读接口展示', enabled: true }, { name: '本机进程辅助判断', value: '等待后端聚合', detail: '只显示来源与置信度,不伪装确定状态', enabled: true }, { name: '写回能力', value: '阶段 6 才启用', detail: '当前没有保存、写入或批量写回按钮', enabled: false }, diff --git a/web/src/views/AgentView.vue b/web/src/views/AgentView.vue index 38a5eff..cc23875 100644 --- a/web/src/views/AgentView.vue +++ b/web/src/views/AgentView.vue @@ -82,7 +82,7 @@ async function loadAgents() {
后端返回空列表;当前保持只读空状态,不使用示例数据伪装真实 agent。
+后端返回空列表;当前保持只读空状态,不使用示例数据伪装真实智能体。