diff --git a/docs/evidence/tanstack-start-control-plane-manual-validation.json b/docs/evidence/tanstack-start-control-plane-manual-validation.json index c460ed0..d4d1c3b 100644 --- a/docs/evidence/tanstack-start-control-plane-manual-validation.json +++ b/docs/evidence/tanstack-start-control-plane-manual-validation.json @@ -32,8 +32,7 @@ {"name": "environment", "path": "/browsers", "heading": "运行环境", "status": "passed"}, {"name": "competitors", "path": "/creator/competitors", "heading": "竞品分析", "status": "passed", "shareUrl": "https://www.douyin.com/video/7685553258340830507", "preview": "anonymous author preview confirmed", "monitoring": "listener created and enabled", "temporaryRuntimeCleanup": "verified"}, {"name": "workbench", "path": "/creator/workbench", "heading": "运营工作台", "status": "passed"}, - {"name": "tasks", "path": "/tasks", "heading": "任务中心", "status": "passed"}, - {"name": "audit", "path": "/audit", "heading": "审计记录", "status": "passed"} + {"name": "tasks", "path": "/tasks", "heading": "任务中心", "status": "passed"} ], "interactiveActions": { "accountOpenDetail": {"status": "passed", "resultPath": "/accounts/account-committed"}, @@ -46,8 +45,7 @@ }, "competitorPreview": {"status": "passed", "result": "anonymous Douyin author preview confirmed and listener created", "shareUrl": "https://www.douyin.com/video/7685553258340830507", "temporaryRuntimeCleanup": "only stopped plan01-douyin remained after cleanup"}, "workbenchTabs": {"status": "passed", "tabs": ["线索", "规则", "事件监听", "私信", "操作记录", "评论"]}, - "taskFilterApplyClear": {"status": "passed", "value": "account-committed"}, - "auditFilterExport": {"status": "passed", "event": "environment_action_finished", "export": "sanitized current page clicked"} + "taskFilterApplyClear": {"status": "passed", "value": "account-committed"} }, "buildEvidence": { "outputPath": "docs/evidence/tanstack-start-build-output.log", @@ -63,7 +61,6 @@ "phaseAAccounts": 200, "browsers": 200, "creatorAccounts": 200, - "audit": 200, "creatorUpdatesInitialEvent": "retry: 5000", "healthAfterSseDisconnect": 204 }, diff --git a/docs/evidence/tanstack-start-control-plane-manual-validation.md b/docs/evidence/tanstack-start-control-plane-manual-validation.md index e0f7143..15122b1 100644 --- a/docs/evidence/tanstack-start-control-plane-manual-validation.md +++ b/docs/evidence/tanstack-start-control-plane-manual-validation.md @@ -27,7 +27,6 @@ | 竞品 | `/creator/competitors` | 使用 `https://www.douyin.com/video/7685553258340830507` 完成匿名解析,页面显示作者预览并确认作者,随后确认加入监听;API 验证新增启用监听记录,匿名 runtime 已释放并清理 | | 工作台 | `/creator/workbench` | 显示评论、线索、规则、事件监听、私信和操作记录页签,无错误文案 | | 任务 | `/tasks` | 显示任务筛选和空状态,无错误文案 | -| 审计 | `/audit` | 显示审计记录和脱敏导出入口,无错误文案 | 逐页加载检查确认:URL 与 TanStack 文件路由一致、主标题存在,正文不包含“控制面代理不可用”“网络请求失败”或“认证已过期”等通用错误。实际操作产生的领域提示(账号详情说明、竞品无可用已登录账号、gateway 启动失败)均保留在下方操作记录,不被当成成功。 @@ -39,7 +38,6 @@ - `/api/phase-a/accounts`:`200` - `/api/browsers`:`200` - `/api/creator/accounts`:`200` -- `/api/phase-a/audit`:`200` - `/api/creator/updates`:通过前端 `/api` 代理收到初始 `retry: 5000` SSE 事件;测试客户端主动超时断开后 control-plane 仍返回 `/healthz 204` 本次联调还覆盖了真实 `/api` 代理,而不是 Playwright mock。Playwright 仍只作为既有响应式回归测试,不作为本记录的真实 control-plane 证据。 @@ -53,7 +51,6 @@ - 竞品:打开“添加监听”,输入 `https://www.douyin.com/video/7685553258340830507`,点击“解析并预览作者”,页面显示作者预览;点击“确认作者并加入队列”,再点击“确认加入监听”,页面显示“相关账号已加入监听队列。”。control-plane API 验证新记录为启用状态;gateway 列表确认只剩已停止的 `plan01-douyin`,没有匿名 runtime。 - 工作台:实际切换“线索、规则、事件监听、私信、操作记录、评论”六个页签,并分别等待内容加载。 - 任务:实际填写并清除账号筛选 `account-committed`,两次列表请求均完成。 -- 审计:实际填写事件筛选 `environment_action_finished`,看到真实审计记录,并点击“导出当前页(脱敏)”。 早期记录中的旧 Docker gateway 与临时 native gateway 结果保留作历史诊断;最终复核已将登记 gateway 指向可用的 native `127.0.0.1:28187`,并在该登记配置上完成启停录制,不再以临时未登记 gateway 作为验收依据。 diff --git a/web/src/app/Layout.jsx b/web/src/app/Layout.jsx index f6e9145..bcf6fa7 100644 --- a/web/src/app/Layout.jsx +++ b/web/src/app/Layout.jsx @@ -28,7 +28,6 @@ const menu = [ { to: '/creator/workbench', icon: 'ri-chat-3-line', label: '运营工作台' }, { to: '/creator/settings', icon: 'ri-settings-3-line', label: '采集设置' }, { to: '/tasks', icon: 'ri-task-line', label: '任务中心' }, - { to: '/audit', icon: 'ri-history-line', label: '审计记录' }, ], }, { diff --git a/web/src/features/accounts/AccountsPage.jsx b/web/src/features/accounts/AccountsPage.jsx index 18ae207..b014f19 100644 --- a/web/src/features/accounts/AccountsPage.jsx +++ b/web/src/features/accounts/AccountsPage.jsx @@ -540,7 +540,7 @@ export function AccountList() { 平台 标签 状态 - 操作 + 操作 @@ -573,8 +573,8 @@ export function AccountList() { )} - -
+ +
{account.source_type === "owned" ? ( <> diff --git a/web/src/features/creator/competitors/CreatorCompetitorsPage.jsx b/web/src/features/creator/competitors/CreatorCompetitorsPage.jsx index 3a6539a..8ca3a4e 100644 --- a/web/src/features/creator/competitors/CreatorCompetitorsPage.jsx +++ b/web/src/features/creator/competitors/CreatorCompetitorsPage.jsx @@ -487,77 +487,46 @@ export function CreatorCompetitorsPage() {
-
+

作品与指标

-

- 时间窗口、指标阈值和“不可用”字段由后端原样保留。 -

+

时间窗口、指标阈值和“不可用”字段由后端原样保留。

+
+ 共 {workPageInfo.total} 条 +
+
+
+

筛选作品

+ 调整条件后自动刷新 +
+
+ + + + setMinLikes(event.target.value)} /> + setMinComments(event.target.value)} /> + setMinShares(event.target.value)} /> + + + + setPublishedAfter(event.target.value)} /> + setPublishedBefore(event.target.value)} />
- - - - - setMinLikes(event.target.value)} - /> - - - setMinComments(event.target.value)} - /> - - - setMinShares(event.target.value)} - /> - - - - - - setPublishedAfter(event.target.value)} - /> - - - setPublishedBefore(event.target.value)} - /> -
发布时间 点赞 / 评论 / 转发 指标下次采集 - + 操作 @@ -588,7 +557,7 @@ export function CreatorCompetitorsPage() { {work.published_at ? dateTime(work.published_at) : "待核验"} {work.likes ?? "—"} / {work.comments_count ?? "—"} / {work.shares ?? "—"} {work.next_metric_at ? dateTime(work.next_metric_at) : work.metric_stop_reason || "—"} - +
diff --git a/web/src/features/environments/BrowserVersionsPage.jsx b/web/src/features/environments/BrowserVersionsPage.jsx index 26e3a79..9fade76 100644 --- a/web/src/features/environments/BrowserVersionsPage.jsx +++ b/web/src/features/environments/BrowserVersionsPage.jsx @@ -294,7 +294,7 @@ export function BrowserVersionList() { 浏览器路径 备注 启用 - 操作 + 操作 @@ -312,8 +312,8 @@ export function BrowserVersionList() { onCheckedChange={() => toggleBrowserVersion(version)} /> - -
+ +