Repository navigation
docs(automation): 三语写实「电子邮件模板」节末句 —— 本仓不 ship 邮件模板,通知在 flow 的 notify 里 (#834) - #864
Merged
Merged
Conversation
) The "Email templates" section closed with a claim about this app that this app does not implement: Built-in templates cover lead-routing, opportunity wins, case acknowledgments, contract activations, renewal reminders. Measured on a fresh `pnpm build`: `dist/objectstack.json` has no email-template collection among its 21 top-level keys, `grep` finds no `*.email-template.*` file under `src/`, and the artifact does not contain the string `email_template` once. So an admin who went to Setup looking for a "Renewal Reminder" template to reword found nothing to edit, and the wording they were after was somewhere else entirely: the notifications behind those business events are `notify` node config inside the flows this same page tabulates (16 of the 24 shipped flows carry one), with the subject and body written inline. The page was also contradicting itself across two sections — the sentence under the flow table has said "notifications inside flows are delivered by the `notify` node" all along. The replacement echoes it instead of adding a second answer. Contract activation is called out separately because it is not a flow: it runs as an object hook (`src/objects/contract.hook.ts`) which sends no message at all (#805/#823 measured the same thing from the contracts page), while the contract mail that does go out belongs to Contract Auto-Expiration and Contract Renewal Reminder. Scoped to what this repo can prove — that HotCRM authors no templates. It makes no claim about the platform's template surface (the #800 trap): Setup → Email Templates stays the place to author one, and the section's other four bullets describe that platform capability unchanged. Three locales, one sentence each. Documentation only. Claude-Session: https://claude.ai/code/session_01VHrPAGEgFDoHjphqYG4BMa Co-authored-by: Claude <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub. |
yinlianghui
marked this pull request as ready for review
August 6, 2026 00:45
This was referenced Aug 6, 2026
activities.mdx 三语把「合同结束前 60 天的续约提醒」当成重复任务的用例:既不是 60 天(按合同自己的 renewal_notice_days,默认 30),也不是重复任务
#883
Closed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #834
「电子邮件模板」节最后一句宣称本产品内置了五类邮件模板,而本仓一条邮件模板都没有 author。只改这一句,三语同步;该节其余四条(合并字段、条件块、HTML + 纯文本、附件)是平台能力描述,未动。
前提复核(基线
origin/main= eb4a7e1):126/ zh-Hans:123/ zh-Hant:123:127/ zh-Hans:125/ zh-Hant:125。#854 重写同页多节确认未动本节,三语原句逐字与 issue 引用一致dist顶层没有emailTemplatesrm -rf dist后重新pnpm build取产物(防 stale artifact),21 个顶层键:manifest, translations, i18n, objects, apps, views, pages, dashboards, reports, datasets, actions, flows, positions, permissions, sharingRules, skills, hooks, mappings, data, requires, docs。再加两条:src/下无*.email-template.*文件,产物全文email_template零命中notify节点发出(21 个 flow 中 14 个)src/flows/*.flow.ts21 个文件、14 个含字面type: 'notify';编译产物 24 条 flow、16 条含notify节点(差额是case_escalation/opportunity_approval的on_create孪生,一个文件出两条 flow)contract_on_activation(src/objects/contract.hook.ts:77-126)只做盖signed_date与把 account 提升为 customer 两件事,一条通知都不发(#805/#823 从合同页实测的是同一件事)。所以文中写的是「合同激活不发任何通知」,不是「合同激活的通知由 hook 发」EmailTemplateSchema在@objectstack/spec里存在」node_modules/@objectstack/spec/src/system/notification.zod.ts:40-46;当前 canonical 是EmailTemplateDefinitionSchema(system/email-template.zod.ts,注册为BUILTIN_METADATA_TYPE_SCHEMAS里的email_template类型)。核心前提不受影响(本仓不 author 模板这一点独立成立),但因此不把任何一个标识符写进用户文档 —— 见下文中不落新数字。
automation-docs-coverage的注释专门警告「按src/flows/*文件数数的读者会得到第三个错数」,同页表头(24)与「九个计划行」都由产物派生。本次按边界不加守卫,所以新增散文里一个新数字都不写(写了就是一个没人派生、下次改 flow 就漂的数),16/24 只出现在本 PR 与 commit message 里。改动(三语,每页一句)
en
content/docs/administration/automation.mdx:127Built-in templates cover lead-routing, opportunity wins, case acknowledgments, contract activations, renewal reminders.HotCRM itself ships no email templates: nothing under 'src/' authors one, and the compiled app carries no email-template metadata at all. The lead-routing, opportunity-win, case and renewal notifications this app sends come from the notify nodes in the flows listed above — each one's subject and body text is written inline in its own flow, so that is where you change the wording. Contract activation sends nothing: it runs as an object hook ('src/objects/contract.hook.ts') with no notification step, and the contract mail that does go out comes from the Contract Auto-Expiration and Contract Renewal Reminder flows. Author a template in Setup → Email Templates when you need a templated outbound email of your own.zh-Hans
:125内置模板涵盖潜在客户路由、商机赢单、案例确认、合同激活、续约提醒。HotCRM 自身不发布任何邮件模板:src/ 下没有编写任何一条,编译产物里也不含邮件模板元数据。潜在客户路由、商机赢单、案例处理与续约提醒的通知,都由上表那些流程里的 notify 节点发出 —— 标题与正文直接写在各自的流程里,要改措辞就去改那里。合同激活不发任何通知:它由对象钩子(src/objects/contract.hook.ts)执行,链路上没有通知步骤;真正发出的合同邮件来自「合同自动到期」与「合同续约提醒」两条流程。需要自己发模板化外发邮件时,再到「设置 → 电子邮件模板」里新建模板。zh-Hant
:125同形,术语随本页既有口径(物件鉤子/中繼資料/合約啟用),两条 flow 行标签取自守卫ROW_LABEL(合約自動到期/合約續約提醒),与表内行文一字不差。三处改动都刻意做了两件事:
:86「流程内的通知由 notify 节点投递」呼应,而不是再造第二个答案 —— 这两句原本就是一页之内互相矛盾的一对。#800 边界如何落实
src/下没有编写任何一条」「编译产物里不含」。没有出现任何关于平台的「不存在」断言。EmailTemplateSchema这个名字刚在本版本窗口被移除、换成EmailTemplateDefinitionSchema(见上表末行),把它写进用户文档等于埋一个下次升级就漂的引用。平台侧模板面用 UI 入口表述,事实同样成立且不随版本漂。守卫:预期不敏感,实测不敏感(含反向探针)
预测方向先写下来再跑:
automation-docs-coverage的视野是 flow 表行集/触发面 + 两个派生数词,本句在另一节的散文里,预期改前改后都绿,不存在 before-red / after-green 可演示。第二次跑证明的是:这句话从来不在任何守卫的视野里,这正是它能一直活着的原因。按派单边界本 PR 不加守卫。
验证(
flock /tmp/os-heavy-verify.lock,NODE_OPTIONS=--max-old-space-size=4096)控制字节自扫(
pnpm hygiene只扫src/test/e2e/scripts,不覆盖content/):越界记录
同节另一条 bullet 的合并字段示例
{{Opportunity.Name}}/{{Account.Owner.Email}}用的是本仓不存在的对象/字段拼写(本仓是crm_opportunity/name)。未在本 PR 修改,按 Prime Directive #10 单独立单 #863(含证据边界说明:本仓无sendTemplate调用方,渲染结果无法端到端实测)。检索过既有 open issue,无重复。仅文档改动,无 metadata / 行为 / 字段变更。changeset:
.changeset/email-templates-sentence.md('hotcrm': patch)。Generated by Claude Code