Skip to content

fix(dashboard): 研究计数正确区分单条与多条 - #7551

Merged
huangruiteng merged 1 commit into
mainfrom
codex/research-count-labels-20261028
Oct 28, 2026
Merged

huangruiteng merged 1 commit into
mainfrom
codex/research-count-labels-20261028

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Oct 28, 2026 •

Copy link
Copy Markdown
Collaborator

研究页只有一条结论时仍显示 1 findings,单条决策记录、日期分组和记录总数也固定使用复数。现在结论数量复用现有 exploreFindingCopy,时间线、关系图与分组列表正确显示 1 finding、1 decision record、1 question 和 1 record;零与多项保持复数,中文使用完整量词。

这是现有 Research 阅读流程的数量文案修复。原始记录、来源状态、时间分组、错误/未知显示和按需读取原文继续由现有 owner 负责。

已 rebase 到主干 55f74c1af2aa6a726fc2f4e76c1ebd7a1654be39;冲突处保留主干新增的分组阅读与返回上下文。最终提交 baa70f4ce3939bf68bad18a9f70ffda82da7a227,远端已合并为 f3ae654d94f5899e3287044fc59ec2b4b8691e69。最终提交的完整评审在合并后补录;不把补录当作合并前门禁的证据。

验证:TypeScript、Vite 和 Chat 生产构建通过;既有 packaged research-finding-reader 通过。相同合成来源在真实隔离 HTTP/SQLite 上比较主干与当前页面:33 条记录、8 个研究节点、20 条重复长结论、确认/反驳/暂定/受阻和未知;另用单记录及 19 个规范 question 节点组成 18+1 日期组,分别验证 timeline/graph。单数问题可复现且已修复,零和多项保留。完整原文、来源展开、重载、键盘/触屏与 Escape 返回可用;来源字节不变,两个后端均无业务写入。

标准 premerge 的 4 项直接检查、11 项选中检查全部执行,失败数为零;最终 diff 的 CQR cqr_04446113da0c28be334c 有效。原始 gate 保留 8 张图片的 manual_review_required,已逐张检查实际像素与 ICC 元数据,作为单独人工验证。按当前 wait_for_ci=false 策略未查询 GitHub CI。

视觉证据:以下 8 张均重新捕获并逐张查看,桌面为 1440×900,窄屏为 390×900。之前使用上述不可变主干,之后使用最终提交相同的生产源码;构建于 14364aa24808e60589258f6d0fe5da9a88c0bcc8,最后 amend 仅更新这些 PNG,最终源码输入哈希与 bundle 一致。默认整页先看研究内容、数量与状态,选中后看同组问题,完整原文和来源保持按需读取;负面与未知信息均可见。证据边界为实际打包页面、合成记录、隔离真实后端;未安装正式 App,也不声称真实用户采用或长程收益。

1440 首屏:之前 1440 首屏:之后
桌面首屏之前 桌面首屏之后
1440 分组:之前 1440 分组:之后
桌面单条之前 桌面单条之后
390 分组:之前 390 分组:之后
窄屏单条之前 窄屏单条之后
中文桌面分组 中文 390 首屏
中文桌面 中文窄屏

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Reviewer: model_agent | gpt-6.1-sol | OpenAI | runtime_reported | reasoning_effort=max

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

未发现本切片的阻塞问题,建议接受准确 head a859fb3989de316af78c4117f7f96a0857bca132 的计数文案修复。以下是作者自评,不是独立批准或合并授权。

动机 / Motivation

阅读研究历程、问题分组和决策记录的用户。只有一条结论时,列表原来显示“1 findings”;现在显示“1 finding”,打开后仍是原来那条完整结论。结论、记录和问题的单条与多条文案一致,受阻和未知仍可直接辨认。本 PR 只修计数措辞,不交付整个研究页改版,也不证明安装采用、翻译质量或研究收益。正式 App 采用和更广的研究阅读体验仍由现有研究工作继续验收。

改动思路 / Approach

计数措辞属于现有显示层;复用结论文案 owner,没有增加状态、评测器或交互。只覆盖研究历程的单条/多条措辞;原研究体验与正式采用继续独立验收。沿现有 Explore 记录及计数投影读取,再由既有 React 文案层决定名词形式。单改初见的一处字符串会遗漏时间段、关系图和决策分组;新增全局国际化框架又超出这次问题。当前选择在共享 finding copy 中统一结论数量,记录、问题和研究项的单复数留在原页面。数据来源、排序、分页、失败恢复和模型调用均未迁移;用户没有多一轮填写、确认或操作。

具体改动 / Changes

依据已接受的 docs/development/design.md,规范 revision 为 843be494266774b63b3de61d0adf5dd7f4f877a2。对应原文中的三个段落:Research Workspace 要求数量对应当前范围,Explanations On Demand 要求真实状态和完整证据可读,Typography 要求正常字号。这三项在本 head 均为 implemented,未增加默认说明段落,未通过缩字实现精简。

关键代码讲解

  • exploreFindingCopy 增加纯 count 格式化:英文只在数值为 1 时用 finding,0 和多项用 findings;中文使用“条结论”。原状态名称与来源判断的含义逐字保留,没有把“来源确认”升级为独立验证。
  • GoalResearchHistory 在图节点和所选问题组复用同一格式化,并为记录总量和日期分组选择 record/question。原来没有结论的节点仍不伪造“0 finding”,真实 blocked 原因继续显示;“已读取数/总数”的分子分母仍来自原读取 owner。
  • GoalResearchTimeline 同时修正可见时间段数量及其无障碍名称,路线研究项和日期问题数沿现有整数判断;TrailQuestion 用原决策数组数量选择 decision record(s)。这些分支不更改分组、时间范围、历史身份或选择处理。

完整差分为三个既有 TS 文件的 +19/-17,以及八张公开合成截图。没有新增依赖、协议、状态字段、页面或通用测试脚手架。PNG 是可审阅的视觉证据,不是运行时输入;已检查像素和元数据。

对主干的风险 / Risks

最有力的反例是只验证一条成功结论,却遗漏零/多项、超过日期分组阈值和受阻未知状态。本次复用同一准确 head 已完成的四组中英文/1440/390 阅读及另外四组单记录/19 问题边界;逐项核对不可变输入和历史回执。原基线保留 1 findings、1 decision records,修复后为 1 finding、1 decision record;0/20 findings、18 questions/1 question 和 1/1 record 均有真实 HTTP/SQLite 读回。来源字节不变、业务写入为零。

原 head 的 TypeScript/生产构建及完整 packaged research-finding-reader PASS(4.406 秒),本轮重新验证 source witness、head/base、13 份原证据 hash 与差分卫生,条件未失效,因此没有再跑同一完整矩阵。另补看两种宽度的展开原文和来源,长重复段落完整、正文 16px。标准 premerge 的 4 直接 + 11 选中自动检查 PASS,CQR 匹配;八张图片的人工留置仍按原生门保留,不冒称自动放行。早期私有探针的选择器/夹具类型、CQR 参数以及二进制读取工具失败保留,不能改写成产品失败或历史全绿。CI 按当前策略未读取、未等待。回滚只需撤回此文案提交,无数据迁移。

我的整体评价 / Verdict

这是 justified_increment:对研究阅读有具体、有限的改善,long_horizon 为 preserved,user_experience 为 improved,仅指准确的计数措辞。逐张看过八张合成整页图,并补看相同 head 的桌面与 390px 完整结论及展开来源。单条文案得到修正,正文、负面状态和按需原文入口保留;布局没有改变。桌面问题组截图沿用选中后的滚动位置,标题部分被固定页头覆盖,不能据此宣称首屏构图改善;独立的概览首屏与完整阅读视图分别核对。

未验正式 App、真实用户理解、生成译文和完整研究页体验;本次图审不把这些范围判为通过。共享文案复用充分,不需要再加框架或兼容层。没有 opt-in/默认关闭或权限变更主张;语义词汇仅为本地显示文案,不新增控制面术语。GitHub 正式独立批准、维护者合并与安装采用仍是各自边界,本自评不替代它们。

English verdict: APPROVE a859fb3989de316af78c4117f7f96a0857bca132. The count-only change preserves recorded facts and failure states; packaged HTTP/SQLite readback passes. Author review only; installed App and broader research quality remain unverified.

@mergify

mergify Bot commented Oct 28, 2026

Copy link
Copy Markdown

This pull request has merge conflicts with main and cannot be merged
until they are resolved. Please rebase or merge the base branch, @loopx-agent.

Choose the remote for the base repository, not an out-of-date fork.
For a fork clone, first inspect git remote -v; upstream must point
to https://github.com/loopx-project/loopx.git. If it is absent, add it
with git remote add upstream https://github.com/loopx-project/loopx.git.
Then run:

git fetch upstream
git rebase upstream/main
# Resolve each conflict, git add the resolved files, then git rebase --continue.
git push --force-with-lease origin HEAD

For a same-repository clone whose origin points to
https://github.com/loopx-project/loopx.git, use origin instead of
upstream for fetch/rebase. If you prefer merging the base, use
git merge <base-remote>/main and push normally.

Keep the DCO Signed-off-by trailer on every commit when you rebase.
https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/syncing-a-fork

@mergify mergify Bot added the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Oct 28, 2026
@huangruiteng
huangruiteng force-pushed the codex/research-count-labels-20261028 branch from a859fb3 to c9cb6f8 Compare October 28, 2026 10:38
@mergify mergify Bot removed the needs-rebase Mergify: the pull request has merge conflicts with its base branch label Oct 28, 2026
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: huangruiteng <huangrt01@163.com>
@huangruiteng
huangruiteng force-pushed the codex/research-count-labels-20261028 branch from c9cb6f8 to baa70f4 Compare October 28, 2026 10:43
@huangruiteng
huangruiteng merged commit f3ae654 into main Oct 28, 2026
4 of 7 checks passed
@huangruiteng
huangruiteng deleted the codex/research-count-labels-20261028 branch October 28, 2026 10:44

@huangruiteng huangruiteng left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Reviewer: model_agent; model=gpt-6.1-sol; provider=OpenAI; reasoning_effort=max; source=runtime_reported

本轮 rebase 后,远端已由维护者账号合并为 f3ae654。以下为最终提交的合并后补录评审;本轮未再执行合并,补录不追认缺失的合并前评审和 readiness 记录。

动机 / Motivation

使用研究页阅读历史、分组问题和决策记录的中英文用户会遇到这个问题。同组只有一条结论时,旧页面显示 1 findings;现在显示 1 finding,并保留该问题的暂定状态和旁边问题的受阻原因。已验证零、一、多项计数,以及完整原文、分组返回和来源只读回读;改动完成这项数量文案修复。本次范围仅为数量文案和相应截图,不改变结论判断、时间分组、分析执行或目标验收。

错误会反复出现在同一页的数量旁;不改动仍会保留可复现的阅读瑕疵。收益限于文案准确和一致性,没有声称提升研究结果质量或长程效率。

改动思路 / Approach

Research 入口从既有只读历史加载器读取规范 Explore 记录,TypeScript projection 继续决定节点、结论、时间分组和记录总数。此次只在渲染边界选择单复数,结论数量复用 exploreFindingCopy,其他名词保留在相邻的中英文 copy。数量格式属于现有展示 owner,复用结论文案并保留相邻的局部名词分支,比引入通用翻译框架更直接;本次没有新增状态、策略或 provider。当前 PR 交付研究历程数量文案修复及对应视觉证据,沿用主干的分组阅读与返回机制。

正向路径已走通:时间线选择两项相邻研究,读单条暂定结论,再用 Escape 回到原问题组。rebase 冲突保留主干的 collectionOpener / chooseQuestion 返回上下文。失败路径中另一个问题仍显示 Blocked、来源不可用和结果未知;数量修复没有把这些来源状态变成确认或完成。原始证据展开与重载仍使用已有 reader。

具体改动 / Changes

关键代码讲解

  1. exploreFindingCopy 新增纯 count 格式化;英文只在数值等于一时使用 finding,零和多条使用 findings,中文保留完整的条结论量词。原有状态标签及意义说明逐字保留。
  2. GoalResearchHistory 复用结论计数,记录总数按 read.total 选择 record,日期分组按真实成员数选择 question。分页完整性、错误保留、选择及来源回读均未改。组列表点击沿用最新主干的返回机制。
  3. GoalResearchTimeline 对阶段可见文案和 aria/title 同时应用格式化,并处理 research item、question 单数;TrailQuestion 对单条决策显示 decision record。所有数量仍取自原 typed projection。

规范依据为 docs/development/design.md,固定版本 55f74c1。Research Workspace → implemented:来源判断与记录时间的边界保留;Explanations On Demand → implemented:默认数量可见,完整原文和来源按需可读;Typography → implemented:正文和来源字号未缩小;Populated Page Review → implemented:检查长重复内容、混合正负/暂定/受阻状态、整页及窄屏展开。这里只承接该修复触及的当前设计义务,不把未来产品验收扩大为本 PR 目标。

最终 diff 为三个展示文件的19行增加/17行删除和八张更新截图。没有新增协议、状态、CLI、provider 或翻译框架。复用现有结论文案已是合适的局部简化,无需进一步抽象或新增一次性公开 smoke。

对主干的风险 / Risks

未发现阻断问题。最有实际风险的是 rebase 时误恢复旧的分组点击逻辑,导致读完一条结论丢失原问题集合;真实 HTTP/SQLite 的选择、原文阅读和 Escape 返回已排除这个反例。另一个风险是通用 reader 检查通过但日期分组仍显示 1 questions,因此补用19个规范 question 节点形成18项和1项的日期组,在 timeline 和 graph 两个真实入口分别比较基线与当前行为。

PASS:TypeScript、Vite 及 Chat 生产构建;既有 packaged research-finding-reader;实际 formatter 的0/1/多项与中文检查;单记录、密集33记录/8节点、18+1日期组的基线/当前回读;最终源码哈希与打包资产一致;DCO、双语 RFC 与 diff 检查。标准 premerge 的4项直接检查和11项选中检查全部完成,失败数为零;CQR cqr_04446113da0c28be334c 对最终 diff 有效。原始 gate 仍保留八张图片的 manual_review_required,已通过逐张实际查看与元数据核对完成该人工义务。

来源文件字节保持不变,两个隔离后端的 mutation_attempts 都为零。八张截图已逐张核对合成像素与 ICC-only 元数据,没有私有信息。通用自动检查对图片保留 manual_review_required,人工核对作为独立维护者结论,不伪称自动通过。当前策略 wait_for_ci=false,未获取、轮询或等待 GitHub CI。此前环境变量、私有 fixture 类型/事件 id 和选择器探针失败均保留记录;实际规范 fixture 和当前源树上的有效运行覆盖了这些分支,没有删除断言或把失败改写为通过。

我的整体评价 / Verdict

problem_context=goal_achieved;long_horizon=preserved;user_experience=improved。实际改善是数量文案准确,继续/转向决策、证据来源及完整阅读所需步骤保持原样;没有新增确认、复制或设置轮次。实际整页保留研究标题、数量和状态的层级;桌面与窄屏都能直接看到受阻原因和单条结论数量,完整原文及来源细节仍按需可读。长内容的正文和来源字号保持,分组返回后仍定位到原来的问题集合。未验证正式安装的 App、真实用户数据、独立确认或长期阅读效率;本次结论限于打包页面与合成来源。

机制与问题相称,现有 owner 足够;状态与协议词汇没有扩展,关闭开关隔离不适用,因为没有引入开关。当前提交 baa70f4 是完整审查对象;代码与已构建源树相同,最后 amend 仅刷新 PNG,最终 source-input witness 已核对。旧提交作者自审不能覆盖 rebase 后的新提交。远端在本轮检查期间已经合并,最终 head 当时尚无本轮发布的完整评审,故如实保留这一流程缺口;后续合并仍应先发布不变 head 的评审,再读取 approval closeout 和 merge readiness,不能把本次补录当作门禁已经提前满足。

English verdict: APPROVE baa70f4. Singular/plural labels are corrected through the existing presentation owners; current-main reading and recovery behavior is preserved by paired real-backend checks. No blocking finding. Installed-app adoption and long-horizon benefit remain unverified; CI was not consulted.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants