Skip to content

fix(hooks): 修复 WebUI 首页股票分析时,切换其他频道再返回首页,股票分析进度停滞的问题 - #1207

Closed
BigRou wants to merge 6 commits into
ZhuLinsen:mainfrom
BigRou:main
Closed

fix(hooks): 修复 WebUI 首页股票分析时,切换其他频道再返回首页,股票分析进度停滞的问题#1207
BigRou wants to merge 6 commits into
ZhuLinsen:mainfrom
BigRou:main

Conversation

@BigRou

@BigRou BigRou commented May 6, 2026

Copy link
Copy Markdown

添加syncActiveTasksFromApi回调函数,用于从API获取活动任务并同步到store中。这解决了组件卸载期间任务完成导致的状态不一致问题,确保store中的任务状态与服务器保持一致。

PR Type

  • fix
  • feat
  • refactor
  • docs
  • chore
  • test

Background And Problem

请描述当前问题、影响范围与触发场景。
(EN) Describe the problem, its impact, and what triggers it.

Scope Of Change

请列出本 PR 修改的模块和文件范围。
(EN) List the modules and files changed in this PR.

Issue Link

必须填写以下之一 / Fill in one of:

  • Fixes #<issue_number>
  • Refs #<issue_number>
  • 无 Issue 时说明原因与验收标准 / If no issue, explain the motivation and acceptance criteria

Verification Commands And Results

请填写你实际执行过的命令和关键结果(不要只写"已测试")。
(EN) Paste the commands you actually ran and their key output (don't just write "tested"):

# example
./scripts/ci_gate.sh
python -m pytest -m "not network"

关键输出/结论 / Key output & conclusion:

Compatibility And Risk

请说明兼容性影响、潜在风险(如无请写 None)。
(EN) Describe compatibility impact and potential risks (write None if not applicable).

  • 若本 PR 修改第三方模型 / API 的兼容语义、请求参数、路由前缀或 provider fallback,请提供官方来源链接或公告,并说明这是长期约束、当前运行时约束还是临时兼容处理。
    (EN) If this PR changes third-party model/API compatibility, request parameters, routing prefixes, or provider fallback behavior, include an official source link or announcement and clarify whether the rule is permanent, runtime-specific, or a temporary compatibility workaround.)
  • 若本 PR 依赖特定运行时 / 锁定依赖窗口(例如 LiteLLM 版本范围、OpenAI-compatible 路由、YAML alias 行为),请写明当前验证过的兼容范围与覆盖路径。
    (EN) If this PR depends on a specific runtime or pinned dependency window (for example a LiteLLM version range, OpenAI-compatible routing, or YAML alias behavior), state the compatibility window you verified and which code paths were covered.)
  • 若本 PR 触及运行时配置保存、清理、迁移或回填逻辑,请明确说明旧配置是否会被自动改写、清空、迁移或保持不变,以及用户如何恢复原行为。
    (EN) If this PR touches runtime config save/cleanup/migration/backfill logic, explicitly describe whether existing config is rewritten, cleared, migrated, or left intact, and how users can restore the previous behavior.)

Rollback Plan

请至少写一句可执行的回滚方案(必填)。
(EN) Provide at least one actionable rollback step (required).

  • 如果是兼容性修复,默认应写出最小回滚方式(例如 revert this PR),并说明是否需要额外回滚配置或数据迁移。
    (EN) For compatibility fixes, include the minimal rollback path (for example revert this PR) and whether any additional config or data rollback is required.)

EXTRACT_PROMPT Change (if applicable)

若本 PR 修改了 src/services/image_stock_extractor.py 中的 EXTRACT_PROMPT,请在此处粘贴完整变更后的 prompt。
If this PR changes EXTRACT_PROMPT in src/services/image_stock_extractor.py, paste the full updated prompt here:

展开 / Expand: Full EXTRACT_PROMPT
(paste full prompt here)

Checklist

  • 本 PR 有明确动机和业务价值 / This PR has a clear motivation and value
  • 已提供可复现的验证命令与结果 / Reproducible verification commands and results are included
  • 已评估兼容性与风险 / Compatibility and risk have been assessed
  • 已提供回滚方案 / A rollback plan is provided
  • 若涉及用户可见变更,已同步更新相关文档与 docs/CHANGELOG.mdREADME.md 仅在首页级信息变化时更新,细节优先写入 docs/*.md / If user-visible changes are included, relevant docs and docs/CHANGELOG.md are updated; README.md is updated only for homepage-level changes, with details kept in docs/*.md

添加syncActiveTasksFromApi回调函数,用于从API获取活动任务并同步到store中。这解决了组件卸载期间任务完成导致的状态不一致问题,确保store中的任务状态与服务器保持一致。
@BigRou
BigRou requested a review from ZhuLinsen as a code owner May 6, 2026 08:21
@github-actions github-actions Bot added the size/S label May 6, 2026
@github-actions

github-actions Bot commented May 6, 2026

Copy link
Copy Markdown

🤖 自动审查报告

项目 结果
📊 变更文件 21 个
➕ 新增行数 1219 行
➖ 删除行数 88 行
🔍 静态检查 ✅ 通过
🧠 AI 审查 ✅ 已完成

📁 修改的文件

  • 📝 .env.example (+3/-0)
  • 📝 api/v1/endpoints/__init__.py (+2/-0)
  • 🆕 api/v1/endpoints/screen.py (+81/-0)
  • 📝 api/v1/router.py (+7/-1)
  • 📝 apps/dsa-web/src/App.tsx (+2/-0)
  • 🆕 apps/dsa-web/src/api/screen.ts (+36/-0)
  • 📝 apps/dsa-web/src/components/layout/ShellHeader.tsx (+1/-0)
  • 📝 apps/dsa-web/src/components/layout/SidebarNav.tsx (+2/-1)
  • 📝 apps/dsa-web/src/hooks/useDashboardLifecycle.ts (+40/-2)
  • 📝 apps/dsa-web/src/pages/BacktestPage.tsx (+55/-55)
  • 🆕 apps/dsa-web/src/pages/ScreenPage.tsx (+532/-0)
  • 📝 apps/dsa-web/src/pages/__tests__/BacktestPage.test.tsx (+19/-19)
  • 📝 apps/dsa-web/src/stores/index.ts (+1/-0)
  • 🆕 apps/dsa-web/src/stores/screenStore.ts (+75/-0)
  • 📝 docs/CHANGELOG.md (+2/-0)
  • 📝 src/agent/factory.py (+2/-1)
  • 🆕 src/agent/tools/miaoxiang_tools.py (+224/-0)
  • 📝 src/config.py (+7/-1)
  • 📝 src/core/config_registry.py (+15/-0)
  • 📝 src/core/pipeline.py (+1/-0)

... 还有 1 个文件


🧠 AI 代码审查意见

结论: Not Ready

审查结果

  • 必要性:
    • 修复部分 (useDashboardLifecycle.ts): 通过。PR 描述中明确指出了“WebUI 首页股票分析时,切换其他频道再返回首页,股票分析进度停滞的问题”,并提供了 syncActiveTasksFromApi 函数作为解决方案,其逻辑合理,能够解决组件卸载期间任务完成导致的状态不一致问题。
    • 新增功能(AI选股)和重构部分 (api/v1/endpoints/screen.py, BacktestPage.tsx 等): 不通过。PR 标题和描述主要聚焦于修复,但代码中存在大量新增的 AI 选股功能(API 和前端页面、导航)以及回测页面的本地化重构。这些变更的背景、问题或业务价值未在 PR 描述中说明。
  • 关联性: 不通过。PR 描述中未提供关联 Issue (Fixes #<issue_number> 或 Refs #<issue_number>)。在无 Issue 的情况下,也未说明原因与验收标准。
  • 类型: 建议类型为 feat,并考虑拆分。当前 PR 混合了 fix (WebUI 首页分析进度)、feat (AI选股功能) 和 refactor (BacktestPage 本地化) 三种类型。这与 PR 标题 fix 不符,且违反了单个 PR 职责单一的原则,增加了审查难度和未来回滚的复杂性。建议将新功能拆分为独立的 feat PR,或者将当前 PR 类型重定义为 feat 并在描述中详细说明所有变更。
  • 描述完整性: 不完整。缺少以下关键信息:
    • 背景与问题: 缺乏对“AI选股”新功能和“回测页”本地化重构的背景、影响范围和触发场景描述。
    • 验证命令与结果: 仅提供了示例命令,未粘贴实际执行过的命令和关键结果。
    • 兼容性与风险: 未说明兼容性影响、潜在风险(如无也需明确写 None)。
    • 回滚方案: 未提供可执行的回滚方案。
    • Checklist: 所有 Checklist 项均未勾选。
  • 风险级别:
    • 关键风险: PR 混合了多种类型的变更(修复、新功能、重构),显著增加了审查复杂度。新增的 AI 选股功能缺乏其自身的验证细节、兼容性及风险评估,且对 MX_APIKEY 存在依赖,若配置不当可能影响用户体验。回测页面的本地化重构可能引入翻译错误。修复逻辑本身看起来合理,但缺少回滚方案。
  • CI 检查状态: 静态检查总体结果为 ✅ 通过 (Python 语法检查和 Flake8 严重错误检查均通过)。

必改项 (阻断项)

  1. PR 拆分或类型重定义: 当前 PR 混合了显著的 feat (AI选股功能,包括新的 API 端点、前端页面、导航、API 客户端)、fix (WebUI 首页分析进度停滞问题) 和 refactor (BacktestPage 本地化)。
    • 建议方案一(推荐): 将“AI选股”功能相关的所有变更(API、前端页面、导航、API 客户端、store 等)拆分为一个独立的 feat PR。当前 PR 仅保留 fix (useDashboardLifecycle 相关的变更) 和 refactor (BacktestPage 本地化) 的变更,并据此更新标题和描述。
    • 建议方案二: 如果确实无法拆分,请将当前 PR 类型重定义为 feat,并在 PR 描述中详细阐明所有三类变更(修复、新功能、重构)的背景、动机、影响范围和验收标准
  2. 补充 PR 描述: 必须补充完整的 "Background And Problem" (特别是针对 AI选股新功能和 BacktestPage 重构的动机)、"Verification Commands And Results" (包含实际执行的命令和关键输出)、"Compatibility And Risk" 以及 "Rollback Plan"。
  3. 补充 Issue 关联: 请提供关联的 Issue 链接 (Fixes #<issue_number>Refs #<issue_number>)。如果没有 Issue,请说明无 Issue 的原因和明确的验收标准。
  4. 完成 Checklist: 请根据实际情况勾选 PR 描述底部的 Checklist。
  5. 前端测试文件: apps/dsa-web/src/pages/__tests__/BacktestPage.test.tsx 被修改或新增,但 diff 被截断。请确保该测试文件与 BacktestPage.tsx 的本地化修改保持一致,并覆盖了相关的业务逻辑。

建议项

  1. 完善 docs/CHANGELOG.md: 由于新增了用户可见的“AI选股”功能,以及对“回测页面”的本地化重构,请确保 docs/CHANGELOG.md 已准确、清晰地记录这些用户可见的变更。
  2. Python 后端测试: 针对 Python 后端改动,虽然 CI 已通过语法和严重错误检查,但 ci_gate.sh 未包含在 CI 中。请在“验证命令与结果”中说明是否执行了 ./scripts/ci_gate.sh,或给出跳过原因。
  3. 截断 diff: 鉴于 diff 过长已被截断,建议提交者在未来的 PR 中尽量避免单个 PR 包含过多无关变更,以确保审查的完整性和效率。
  4. 类型声明的准确性: 对于 screen.pyresults_countreturned_countor 0 冗余检查,因为 int(result.get("results_count", 0)) 已经保证了返回 int 类型,or 0 是多余的。但这不是一个阻断项。
    # api/v1/endpoints/screen.py
    results_count=int(result.get("results_count", 0) or 0), # 建议修改为 results_count=int(result.get("results_count", 0)),
    returned_count=int(result.get("returned_count", 0) or 0), # 建议修改为 returned_count=int(result.get("returned_count", 0)),

💡 提示: 请确保代码已通过本地测试,并遵循项目代码规范。

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: f09942f3d2

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment on lines +53 to +55
for (const storeTask of activeTasks) {
if (!serverActiveIds.has(storeTask.taskId)) {
removeTask(storeTask.taskId);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Reconcile store only against a complete active-task snapshot

analysisApi.getTasks({ limit: 50 }) returns only the newest tasks regardless of status, so serverActiveIds can be incomplete when many recent completed/failed tasks exist. In that case this loop removes still-running tasks from activeTasks, and removeTask marks them dismissed in stockPoolStore, so later SSE task_progress/task_started updates are ignored and the UI can permanently lose in-flight task progress after channel switches. Restrict this reconciliation to a server response that is guaranteed to include all active tasks (e.g. status filter for pending/processing without truncating them).

Useful? React with 👍 / 👎.

@ZhuLinsen ZhuLinsen left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

评审结论

  • 必要性:通过 + 该 PR 针对 WebUI 首页分析任务在组件卸载/返回后进度停滞的真实状态同步问题,修复方向有明确业务价值。
  • 是否有对应 issue:无(PR 描述未检测到 Fixes/Refs,也未填写无 Issue 时的动机与验收标准)
  • PR 类型:fix + 修改 apps/dsa-web/src/hooks/useDashboardLifecycle.ts,用于修复前端任务状态同步异常。
  • description 完整性:不完整 + PR 模板中的类型勾选、Background、Scope、Issue Link、实际验证命令与结果、Compatibility And Risk、Rollback Plan 均未有效填写;当前描述只有概要说明。
  • 是否可直接合入:不可 + 新增同步逻辑存在会误删仍在运行任务的正确性风险,需要先修复。

主要问题

  1. [Correctness blocker] apps/dsa-web/src/hooks/useDashboardLifecycle.ts:新增的 syncActiveTasksFromApi 使用 analysisApi.getTasks({ limit: 50 }) 构造 serverActiveIds,随后把本地 activeTasks 中不在该集合里的任务全部 removeTask。如果接口返回的是最近 50 条任务而不是“完整活动任务快照”,当最近完成/失败任务较多时,仍处于 pending/processing 但未进入这 50 条结果的任务会被前端误判为已结束并从 store 移除,导致进度消失或状态再次不一致。建议只基于明确完整的活动任务接口做清理,或在当前分页结果不完整时仅补充/更新返回的活动任务,不反向删除未返回的本地活动任务。
  2. [Process blocker] PR 描述未按仓库模板和 AGENTS.md 要求补齐关键字段:没有 issue 关联或无 issue 说明,没有实际 Web 验证命令与结果,没有风险评估和回滚方案。该 PR 修改 Web 运行时代码,至少应补充 apps/dsa-web 的 lint/build 或相关 hook 测试结果;回滚方案写明 revert this PR 级别即可。
  3. [Nice to have] 结构化检测提示命中了外部模型/API 与运行时配置迁移风险,但完整改动文件列表和 diff 只显示 Web hook 任务同步逻辑,未看到 provider、模型名、Base URL 或运行时配置保存/清理变更。该项目前不作为阻断,但建议在 PR 描述的 Compatibility And Risk 中明确“未涉及外部模型/API 或运行时配置迁移”,避免审查和维护时产生歧义。

🤖 此回复由 OpenReview Bot 自动生成,仅供参考。如有疑问请 @维护者。

- 新增MiaoXiangSearchProvider实现东方财富妙想资讯搜索支持
- 配置文件增加MX_APIKEY环境变量支持多个妙想API Key
- 新增AI选股API端点,支持自然语言条件智能选股
- WebUI添加AI选股页面及相关路由和侧边栏入口
- 实现前端调用AI选股API并展示选股结果和提交深度分析功能
- 调整核心配置管理以支持妙想API Key的加载和校验
- 更新.gitignore和配置示例以支持妙想API相关文件和文档
- 日志、错误处理和消息提示完善AI选股功能用户体验
@github-actions github-actions Bot added configuration documentation Improvements or additions to documentation size/XL labels May 7, 2026
Removed multiple documentation files from .gitignore to allow tracking.

@ZhuLinsen ZhuLinsen left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

评审结论

  • 必要性:通过 + 修复首页任务在组件卸载/返回后状态不同步有明确价值,但当前实际改动明显超出该修复范围。
  • 是否有对应 issue:无(未检测到 Fixes/Refs,也未填写无 Issue 时的验收标准)
  • PR 类型:feat + 实际 diff 主要新增 AI 选股页面、MiaoXiang API/搜索 Provider、配置项,任务进度修复只是其中一部分。
  • description 完整性:不完整 + PR 描述只覆盖 syncActiveTasksFromApi,未说明新增 /screen API、Web 页面、MX_APIKEY、MiaoXiang Provider、外部 API 兼容依据、验证结果、风险和回滚方案。
  • 是否可直接合入:不可 + 当前 merge 状态存在冲突,且任务同步逻辑仍有正确性风险;新增外部 API/配置能力也缺少必要兼容性与迁移说明。

主要问题

  1. [Correctness blocker] apps/dsa-web/src/hooks/useDashboardLifecycle.ts 使用 analysisApi.getTasks({ limit: 50 }) 作为“活跃任务完整快照”来清理 store,但后端 /analysis/tasks 是按创建时间倒序先截断再返回,不保证包含所有 pending/processing 任务。任务较多、或有较多近期 completed/failed 任务时,仍在运行的旧任务可能不在前 50 条内,前端会调用 removeTask 将其移除;由于 removeTask 还会把 taskId 加入 dismissed 集合,后续 SSE 更新也可能被忽略,反而继续造成进度消失/停滞。需要改为基于后端提供的完整 active-task snapshot,或调整后端按状态筛选后再限流,并且只在快照可信时做删除。
  2. [Process blocker] PR 标题和描述是 hooks 修复,但完整 diff 新增了 api/v1/endpoints/screen.pyapps/dsa-web/src/pages/ScreenPage.tsxsrc/agent/tools/miaoxiang_tools.pysrc/search_service.pyMX_APIKEY 配置等功能性改动。按 AGENTS.md,这属于用户可见能力、API、配置、数据源 fallback 和文档联动变更,当前 description 未覆盖实际范围,无法按现有模板完成合入判断。
  3. [Compatibility blocker] 新增 MiaoXiang 外部接口硬编码了 news-search / stock-screen URL、apikey header、请求 payload 和多层响应字段解析,但 PR 描述没有提供官方来源/公告、当前运行时兼容验证、失败降级路径验证或 mock 回归测试。按本仓库规范和本次结构化风险提示,这类第三方 API/provider 语义变更不能仅凭 CI success 判为低风险。
  4. [Process blocker] 新增 MX_APIKEY 后只更新了 .env.exampledocs/CHANGELOG.md。仓库已有 README/docs 中关于搜索 Provider、部署配置、GitHub Actions 环境变量的通用说明,但本次新增语义未同步说明;同时 .github/workflows/daily_analysis.yml 仍未透传 MX_APIKEY,GitHub Actions 用户即使配置 secret 也不会启用该 Provider。需要补齐相关文档/工作流评估,或明确说明该配置当前仅支持本地/Web 设置路径。
  5. [Verification gap] 当前 CI 显示 success,但 PR 描述未给出实际验证命令与关键输出;新增 API、Web 页面、外部 Provider、配置注册和首页任务恢复逻辑均未看到针对性测试证据。建议至少补充任务同步边界测试、MiaoXiang 响应解析 mock 测试、/api/v1/screen/query 行为测试,以及 Web lint/build 结果。

🤖 此回复由 OpenReview Bot 自动生成,仅供参考。如有疑问请 @维护者。

- 引入了screenStore用于选股页面状态集中管理,支持跨路由保留输入和结果状态
- 优化选股结果表的列排序,支持数字和字符串混合排序,默认按涨跌幅降序排序
- 实现前端分页,分页大小固定20条,添加分页组件支持页码切换
- 解析并格式化列名中的时间戳,统一到页面meta区域显示数据时间
- 调整列展示顺序,隐藏内部ID列,交换流通市值和证券类型列位置
- 替换BacktestPage中所有相关文本为中文,提升界面本地化体验
- 更新测试用例中对应文本,确保测试覆盖中文化后的界面元素
- 后台调用和错误逻辑保持不变,增强用户体验和易用性

@ZhuLinsen ZhuLinsen left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

评审结论

  • 必要性:通过 + 首页任务状态同步问题有明确修复价值,但当前实际改动已明显超出该修复范围。
  • 是否有对应 issue:无(未检测到 Fixes/Closes/Refs,也未填写无 Issue 时的验收标准)
  • PR 类型:feat + diff 新增 AI 选股页面、/screen API、MiaoXiang Provider/Agent Tool 与配置项,已不只是 hooks 修复。
  • description 完整性:不完整 + 未勾选 PR Type,未说明新增后端 API、Web 页面、MX_APIKEY、模型/provider/Base URL/配置清理相关变更、兼容性依据、验证命令结果和回滚方案。
  • 是否可直接合入:不可 + 当前存在 merge conflict,且 PR 描述与实际 21 个文件、1219 行新增的改动范围不匹配,外部 API/配置兼容性和运行时配置迁移风险也未交代清楚。

主要问题

  1. [Process blocker] PR 标题和描述只覆盖 syncActiveTasksFromApi 的首页进度修复,但实际改动包含 api/v1/endpoints/screen.pyapps/dsa-web/src/pages/ScreenPage.tsxsrc/agent/tools/miaoxiang_tools.pysrc/search_service.py.env.examplesrc/config.py 等新增运行时能力。按 AGENTS.md,用户可见能力、API 行为、配置项变化必须补齐相关文档与 docs/CHANGELOG.md,当前虽有 changelog 条目和 .env.example,但 PR description 未说明范围、验收标准、兼容风险和回滚路径,无法按当前描述审查合入。
  2. [Correctness/compatibility blocker] 本 PR 涉及 MiaoXiang API、搜索 Provider、Agent Tool、MX_APIKEY 以及模型/provider/Base URL/LLM 配置相关改动。结构化检测已提示外部模型/API 兼容风险和运行时配置迁移风险,但 PR 描述没有官方来源链接、当前依赖/运行时兼容范围、旧配置是否会被改写/清空/迁移、失败回退路径与回归测试说明。按仓库规范,这类三方 API/provider fallback 和运行时配置变更不能仅凭 CI success 判定低风险。
  3. [Correctness blocker] 首页任务同步修复需要保证从服务端拿到的是完整 active-task 快照;当前讨论中已有证据指出 analysisApi.getTasks({ limit: 50 }) 可能只返回最新任务而非完整 active 列表,若用该结果反向 reconcile store,会在最近任务超过限制或状态混杂时错误清理仍在运行的任务,导致进度状态再次不一致。建议改为后端提供明确的 active-only 接口/过滤语义,或前端只合并服务端 active 信息,不用不完整列表判定本地任务已结束。
  4. [Process blocker] 当前 merge 状态为存在冲突,不能直接合并。CI 当前为 success,但需先解决冲突后基于最终 head 重新确认受影响的 backend/web 检查结果。

🤖 此回复由 OpenReview Bot 自动生成,仅供参考。如有疑问请 @维护者。

- 新增MiaoXiangSearchProvider实现东方财富妙想资讯搜索支持
- 配置文件增加MX_APIKEY环境变量支持多个妙想API Key
- 新增AI选股API端点,支持自然语言条件智能选股
- WebUI添加AI选股页面及相关路由和侧边栏入口
- 实现前端调用AI选股API并展示选股结果和提交深度分析功能
- 调整核心配置管理以支持妙想API Key的加载和校验
- 更新.gitignore和配置示例以支持妙想API相关文件和文档
- 日志、错误处理和消息提示完善AI选股功能用户体验

@ZhuLinsen ZhuLinsen left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

评审结论

  • 必要性:通过 + 首页任务进度恢复同步有明确修复价值,但当前实际改动明显超出该问题本身。
  • 是否有对应 issue:无(未检测到 Fixes/Closes/Refs,也未填写无 Issue 时的验收标准)
  • PR 类型:feat + 除 hooks 修复外,实际新增 /screen API、Web「AI选股」页面、MiaoXiang Provider/Agent Tool、MX_APIKEY 配置与搜索服务扩展。
  • description 完整性:不完整 + PR 描述只覆盖 syncActiveTasksFromApi,未说明新增后端 API、前端页面、第三方妙想 API/provider/Base URL/模型相关兼容语义、运行时配置影响、完整验证结果、风险与回滚方案。
  • 是否可直接合入:不可 + 当前存在外部 API/模型兼容与运行时配置迁移说明缺口,且 PR 描述与实际改动范围不匹配。

主要问题

  1. [Process blocker] PR 标题与描述只说明 WebUI 首页任务进度停滞修复,但完整 diff 显示新增 api/v1/endpoints/screen.pyapps/dsa-web/src/pages/ScreenPage.tsxsrc/agent/tools/miaoxiang_tools.pysrc/search_service.py.env.example 等大范围功能改动。按 AGENTS.md,用户可见能力、API 行为、配置项和报告/服务能力变化需要同步说明范围、风险、验证与 docs/CHANGELOG.md;当前 changelog 已补部分条目,但 PR 描述仍不足以让 reviewer 判断这些新增能力的验收边界。
  2. [Compatibility blocker] 本 PR 涉及 MiaoXiang API、provider/Base URL、模型或 LLM 配置相关改动,但描述中没有官方来源链接、当前依赖/运行时兼容范围、失败降级路径和回退方式。按模板与 AGENTS.md,第三方模型/API 兼容语义变更必须说明来源和约束;当前不能仅凭 CI success 判断低风险。
  3. [Correctness blocker] 结构化事实提示存在默认模型、运行时模型或保存前清理逻辑变更风险;本 PR 触及 src/config.pysrc/core/config_registry.pysrc/core/pipeline.pysrc/search_service.py 等运行时配置/服务链路,但描述未说明旧配置是否会被自动改写、清空、迁移或保持不变,也未说明用户如何恢复原行为。若存在静默迁移或清理,会直接影响已有用户配置。
  4. [Correctness blocker] 当前讨论中已有关于 useDashboardLifecycle.ts 的 P1 评论:使用 analysisApi.getTasks({ limit: 50 }) 作为活动任务快照可能不完整,最近任务中若包含大量 completed/failed 任务,会导致本地仍在运行的任务被误判并提前移除。该问题直接关联本 PR 标题宣称要修复的进度同步逻辑,需确认已修复或给出更可靠的 active task reconciliation 方案。
  5. [Validation gap] CI 当前为 success,但 PR 描述未提供实际执行的验证命令与关键结果;本次改动覆盖 Python 后端、API、Web、配置和第三方服务链路,按仓库验证矩阵至少应说明 ./scripts/ci_gate.sh、Web lint/build、相关前后端路径和第三方 API 未在线验证时的缺口。

🤖 此回复由 OpenReview Bot 自动生成,仅供参考。如有疑问请 @维护者。

@ZhuLinsen

Copy link
Copy Markdown
Owner

@BigRou 这个修复方向是对的,确实解决了频道切换后首页分析状态丢失的问题。

不过当前 PR 还是偏前端状态层 workaround,建议后面再补一下:

  1. 分析任务状态来源统一(避免 UI 本地状态与真实任务状态不一致)
  2. 页面切换 / 刷新 / 多标签页场景回归测试
  3. 长耗时分析任务的 reconnect 与恢复机制

另外 PR 描述里最好补一下复现步骤、根因分析和修复前后对比,方便后续维护。

@ZhuLinsen ZhuLinsen closed this May 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

configuration documentation Improvements or additions to documentation size/S size/XL testing

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants