fix: remove english ui leftovers

This commit is contained in:
Yoilun
2026-05-25 20:40:25 +08:00
parent 10f1beb3c8
commit 88113304a0
5 changed files with 21 additions and 2 deletions

View File

@@ -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 | 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 | coding agent | 实现 Vue 中文只读工作台外壳 | 完成;提交 `feat: add chinese vue workbench shell` |
| 2026-05-25 | 4 | spec review | 规格审查未通过:状态徽标和部分视图直接展示 `local_sample``low` 等内部英文值 | 已修复为中文来源和置信度展示 | | 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 | 4 | coding agent | 创建 Vue 3 + Vite 中文只读前端工作台,包含五个 tabs、静态示例数据、来源/置信度和空状态 | 完成;未接入真实 API未提供写回入口 |
| 2026-05-25 | 5 | coding agent | TDD 接入前端只读 API client、normalizer 和项目/工作流/智能体真实数据视图 | 完成;提交前已通过测试、构建和本地接口 smoke 验证 | | 2026-05-25 | 5 | coding agent | TDD 接入前端只读 API client、normalizer 和项目/工作流/智能体真实数据视图 | 完成;提交前已通过测试、构建和本地接口 smoke 验证 |
| 2026-05-25 | 5 | spec review | 规格审查未通过valid agent 状态不明确,工作流和 agent 只读文案仍含内部英文 | coding agent 按 blocking 范围修复 | | 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 | `git diff --check` | PASS | Phase 4 whitespace 检查通过 |
| 2026-05-25 | `pnpm build` | PASS | Phase 4 规格修复后前端构建通过 | | 2026-05-25 | `pnpm build` | PASS | Phase 4 规格修复后前端构建通过 |
| 2026-05-25 | `git diff --check` | PASS | Phase 4 规格修复 whitespace 检查通过 | | 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` | FAIL | TDD 红灯:`normalizers.js` 尚未实现,新增 normalizer 测试无法导入模块 |
| 2026-05-25 | `pnpm test` | PASS | source/confidence 中文映射、invalid agent TOML、空 runtime/workflow 测试通过 | | 2026-05-25 | `pnpm test` | PASS | source/confidence 中文映射、invalid agent TOML、空 runtime/workflow 测试通过 |
| 2026-05-25 | `pnpm build` | PASS | Phase 5 首轮 Vue/Vite 构建通过 | | 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 | `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 | | 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 | | 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 | workflow phases 会把 `task_plan.md` 里错误记录表的 `Time/Phase` 行显示到 UI | normalizer 过滤非阶段状态,并把数字阶段名转为“阶段 N” | `pnpm test` PASS |
| 5 | valid agent 状态只显示“已读取”,且工作流/智能体可见文案残留内部英文 | normalizer 改为“TOML 有效”/“TOML 无效”角色设定字段改中文WorkflowView 改“交接边”和“主智能体” | `pnpm test` PASS | | 5 | valid agent 状态只显示“已读取”,且工作流/智能体可见文案残留内部英文 | normalizer 改为“TOML 有效”/“TOML 无效”角色设定字段改中文WorkflowView 改“交接边”和“主智能体” | `pnpm test` PASS |

View File

@@ -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 | 规格审查发现重复键 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 | 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 | 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 文案 | 待复审 | | 2026-05-25 | 5 | 规格审查发现 valid agent 未明确显示 TOML 状态,且 UI 仍有 `handoffEdges``主 agent``developer_instructions` 可见文案 | TDD 补 valid agent 状态和 workflow 空交接文案测试后修复 normalizer 与 WorkflowView 文案 | 待复审 |

View File

@@ -8,6 +8,7 @@ import {
normalizeRuntime, normalizeRuntime,
normalizeWorkflow, normalizeWorkflow,
} from './normalizers.js' } from './normalizers.js'
import { settings } from '../data.js'
test('maps source kind and confidence to Chinese display text', () => { test('maps source kind and confidence to Chinese display text', () => {
assert.equal(formatSourceKind('sqlite_readonly'), 'SQLite 只读') assert.equal(formatSourceKind('sqlite_readonly'), 'SQLite 只读')
@@ -58,6 +59,14 @@ test('normalizes valid agent TOML with visible parse status', () => {
assert.match(agent.toml, /角色设定/) 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', () => { test('normalizes empty runtime without falling back to fake real data', () => {
const runtime = normalizeRuntime({ const runtime = normalizeRuntime({
items: [], items: [],

View File

@@ -155,7 +155,7 @@ export const drafts = [
] ]
export const settings = [ 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: 'SQLite 状态读取', value: '只读 mode=ro&immutable=1', detail: '通过只读接口展示', enabled: true },
{ name: '本机进程辅助判断', value: '等待后端聚合', detail: '只显示来源与置信度,不伪装确定状态', enabled: true }, { name: '本机进程辅助判断', value: '等待后端聚合', detail: '只显示来源与置信度,不伪装确定状态', enabled: true },
{ name: '写回能力', value: '阶段 6 才启用', detail: '当前没有保存、写入或批量写回按钮', enabled: false }, { name: '写回能力', value: '阶段 6 才启用', detail: '当前没有保存、写入或批量写回按钮', enabled: false },

View File

@@ -82,7 +82,7 @@ async function loadAgents() {
<div v-if="!selectedAgent && !loading" class="empty-state"> <div v-if="!selectedAgent && !loading" class="empty-state">
<strong>没有智能体内容</strong> <strong>没有智能体内容</strong>
<p>后端返回空列表当前保持只读空状态不使用示例数据伪装真实 agent</p> <p>后端返回空列表当前保持只读空状态不使用示例数据伪装真实智能体</p>
</div> </div>
<div v-else class="form-grid" aria-label="智能体字段预览"> <div v-else class="form-grid" aria-label="智能体字段预览">