Skip to content

动作文案与状态语义规范

目标:减少“文案看起来通过了,但语义误导用户”的问题。


背景

在交易、签名、授权等高风险流程中,确认中 这类模糊文案会掩盖真实阶段(例如:实际处于广播中)。 这类问题通常无法通过 lint / i18n key check 自动发现,必须在开发阶段做语义自检。


核心原则

1) 状态文案必须反映真实阶段

  • ❌ 模糊:确认中
  • ✅ 明确:广播中 / 等待上链 / 签名中

规则:文案要回答两个问题:

  1. 当前动作是什么?(签名 / 广播 / 上链确认)
  2. 谁在执行?(本地钱包 / 链网络)

2) UI 不直接透出底层硬编码错误

  • ❌ 直接显示:Failed to broadcast transaction
  • ✅ 映射到 i18n:transaction:broadcast.failed

规则:底层 error.message 仅用于日志;展示给用户时必须走错误映射层。

3) 一次异步动作只能有一个主状态文案

  • 同一时刻只显示一个“主进度词”(例如 广播中)。
  • 不得在同一阶段混用 确认中 + 广播中 两套术语。

推荐状态词典(转账示例)

阶段推荐 key说明
本地签名common:signing钱包锁/私钥验证与签名中
广播交易transaction:txStatus.broadcasting向网络广播交易
等待区块确认transaction:txStatus.confirming广播成功后等待上链确认
失败transaction:broadcast.failed / transaction:broadcast.timeout用户可理解并可行动

开发约束

MUST

  • 所有用户可见状态/错误文案必须可 i18n。
  • 交易类流程必须区分 签名广播确认 三阶段。
  • 对底层错误进行统一映射(code + message pattern)。

SHOULD

  • 使用纯函数做“错误 -> 文案 key”映射,便于测试。
  • 为映射层补单测(timeout、broadcast failed、unknown 等)。

MUST NOT

  • 在 UI 直接渲染英文异常文本。
  • 用“确认中”替代所有异步状态。

AI 开发前自检清单

在改动任何状态文案/错误文案前,先逐条确认:

  1. 该文案是否准确描述当前真实阶段?
  2. 是否存在更具体的阶段词可用(签名/广播/确认)?
  3. 是否仍有 error.message 直出到 UI?
  4. 是否为新增映射补了最小回归测试?
  5. 四语种(zh-CN/en/zh-TW/ar)是否补齐 key?

Released under the MIT License.