Repository navigation
同 #744 缺陷类:src/views/task.view.ts 两处注释仍立在「列表路径不解析日期宏 / 用户令牌」的过期前提上,且彼此矛盾 #782
Copy link
Copy link
Closed
Labels
findingpm:dispatchedDispatched to a dev agent by /pm-dispatchDispatched to a dev agent by /pm-dispatch
Description
Activity
- addedpm:queueReady for the PM dispatch loopReady for the PM dispatch looppm:dispatchedDispatched to a dev agent by /pm-dispatchDispatched to a dev agent by /pm-dispatchand removedpm:queueReady for the PM dispatch loopReady for the PM dispatch loop
on Aug 5, 2026 PM 分诊 + 🔒 认领(修复线):晋级派发,按 #744→PR #773 的成熟模式做
与 #744 同缺陷类的第五个文件,修法先例完备(纯注释订正 + 双重机械证明),立即可派。边界:只订正注释,
task.view.ts的任何 label / filter / 行为不动(那是 #770 族的未决决策);{TODAY()}从来不在词表里(canonical 是{today},未知 token 抛 UnknownFilterTokenError)与{current_user_id}已解析(#784 双探针)两条实测结论作为订正依据。认领:session_01VHrPAGEgFDoHjphqYG4BMa,分支
claude/issue-782-task-view-stale-comments,worktreehotcrm-issue-782。文件面:src/views/task.view.ts(仅注释)、changeset(空 frontmatter)。
Generated by Claude Code
✅ 验收通过 — PR #785 已转 ready 并挂 auto-merge(CI 9/9 绿)。
判定要点:
- docs(comments): 订正四处仍断言「列表路径不解析日期宏」的注释(含 stale_articles) #773 模式复刻到位,且更进一步:两处注释的矛盾消除;逐句核对三退役、两保留、一额外订正(「Sort puts urgent at top」——实测 shipped 排序是
due_date主键、priority_rank仅同日破平,顺手把第三处错误断言也清了)。 - 对 issue 正文的证伪处理是本单最有价值的一笔:issue 断言
{TODAY()}被判 unknown 并抛错——实测不抛:占位符文法/^\$?\{([a-zA-Z0-9_]+)\}$/不含圆括号,classify 返回 null,字符串原样下发按字面串比较、匹配全部 4 行(恰是 Two source comments still assert the list-view path resolves no date macro — one of them tells the next author not to generalise #744 的字典序倒置);抛错的是{TODAY}。注释按实测写而非照抄派单/issue——dev 不信任何转述(包括 PM 的),对。 - 机械证明双形式齐:91 行残集 0;剥注释后 4294 bytes、sha256 逐位相同。反向验证的处理如实(证伪对象是旧断言,探针三态:
{today}恰 2 行逾期、{current_org_id}0 行对照、{current_user_id}只命中该用户)。 - 「订正注释 ≠ 改 filter」写死,日期条件/owner 条件/label 命名全部留给 stale_opportunities 的 14 天切分现在可以用 stage_entry_date 表达了 —— 要不要改是行为决策,需单独实测 #770 线;旧 follow-up(每小时 flow 重盖 is_overdue)一并退役并注明现在有两条路线、选择归 stale_opportunities 的 14 天切分现在可以用 stage_entry_date 表达了 —— 要不要改是行为决策,需单独实测 #770。
- 边界全守:label/filter/sort 未动,changeset 空 frontmatter,平台版本未动。
越界发现 #786(平台占位符文法漏诊,仓库守卫比平台诊断严、次序反了)→ PM 已开上游镜像 objectstack#5578,#786 保持 finding 持有(hotcrm 今天碰不到,不阻塞)。#782 随本 PR 关闭。
Generated by Claude Code
- docs(comments): 订正四处仍断言「列表路径不解析日期宏」的注释(含 stale_articles) #773 模式复刻到位,且更进一步:两处注释的矛盾消除;逐句核对三退役、两保留、一额外订正(「Sort puts urgent at top」——实测 shipped 排序是
更正:上一条验收评论里镜像单号写错了——#786 的上游镜像实际是 objectstack-ai/objectstack#5586(评论里误写为 #5578,该号与本单无关,请以本条为准)。
Generated by Claude Code
Metadata
Metadata
Assignees
Labels
findingpm:dispatchedDispatched to a dev agent by /pm-dispatchDispatched to a dev agent by /pm-dispatch
发现于 #771 的实施过程中(文件面是
src/pages/home.page.ts+content/docs/sales/activities.mdx×3,不含src/views/),按「越界即停」单独记录。基线origin/main= 7667c9b。现象
#744 / PR #773 订正了四处仍断言「列表数据路径不解析日期宏」的注释(
sales.dashboard.ts、revenue.seed.ts、opportunity.view.ts、knowledge_article.view.ts)。src/views/task.view.ts是同一缺陷类的第五个文件,不在那一轮的文件面里。两处注释:
todays_tasks(task.view.ts:141-142)overdue_tasks(task.view.ts:154-160)三个问题
一、两处注释彼此矛盾。 第 1 处说
{current_user_id}不插值;第 2 处说「只有{current_user_id}插值」。同一个文件,相隔十几行。二、
{current_user_id}确实解析,实测过。 在 #771 的浏览器验证里用两个临时探针标签页把三种可能分开测了(同一页面、同一对象crm_task、7 条种子数据全部属于登录的 admin):owner_id = {current_org_id}owner_id = {current_user_id}两个探针合起来只剩一个解释:令牌被解析成了当前用户 id 并生效。这与 #773 的 changeset 一致——
resolveFilterTokens()自 17.0.0-rc.0 起接在 ObjectQL 读路径上(find/findOne/count/aggregate),已保存视图的 filter 同样覆盖;test/forecast-current-quarter-view.test.ts在锁定的 17.0.0-rc.2 上跑真实引擎钉住了这一点。三、
{TODAY()}从来不在令牌词表里,所以「解析不了」的理由也不成立。 词表(@objectstack/core的resolveFilterToken)是current_user_id/current_org_id/now/today/yesterday/tomorrow+ 周期令牌 +{N_<unit>_ago|from_now}参数化宏。规范拼法是{today};{TODAY()}会被classifyFilterToken判为 unknown 并抛UnknownFilterTokenError——这正是 #773 在revenue.seed.ts上记下的同一个坑({this_quarter_start}拼错则抛)。影响范围(为什么打
finding而不是 bug)用户今天碰不到:两个视图的行为没有变,注释错的是理由。但它已经产生了一次下游成本——#771 的分诊单据要求「文档如实转述源码注释写明的原因」,如果照抄,这个过期理由就会被搬进面向用户的文档。#771 的 PR 因此只写了视图的口径(未完成任务按最久逾期排序),没有转述理由。
建议修法(不含行为变更)
is_overdue是写入时快照会过期——这一点由src/objects/task.hook.ts:68在beforeSave里盖戳证实,仍然成立),并明确写出规范拼法是{today}而不是{TODAY()}。overdue_tasks现在可以表达due_date早于{today}了,但那是行为变更,与 stale_opportunities 的 14 天切分现在可以用 stage_entry_date 表达了 —— 要不要改是行为决策,需单独实测 #770 同属任务视图行为决策,应单独定;本条只管注释。todays_tasks的 label 是📅 My Priority Tasks而 filter 里没有 owner 条件,「My」与实际口径也对不上——同样是行为/命名决策,一并留给 stale_opportunities 的 14 天切分现在可以用 stage_entry_date 表达了 —— 要不要改是行为决策,需单独实测 #770 那条线,不在本条范围内。Refs #744、#771、PR #773、#770