posts

《互联网产品的客户端架构·交易、增长与平台化》 · 已发布章节索引(45 篇)

《互联网产品的客户端架构·交易、增长与平台化》全 45 篇:13 章覆盖交易四条链路、商品与库存、购物车与价格、下单与状态机、支付编排与回调、对账与退款、优惠券、会员权益、增长链路、实验配置、客服售后与埋点分析;附序、前言、目录与三篇附录,配可运行 TypeScript 实验工程。

全卷 45 篇:13 章正文 + 序、前言、目录 + 附录 A/B/C。每节配可运行的 TypeScript 代码,代码块用 // file: / // tier: / // verify: 标注,可在实验工程中逐字节还原。

本页是卷三的完整索引。可以从目录与学习路径 按顺序通读,也可以按问题跳读。

全书概览

项目内容
书稿《互联网产品的客户端架构》卷三
已发布篇数45 篇(含目录与附录)
主线语言TypeScript(Node 26 原生类型剥离,零第三方依赖)
贯穿案例内容社区「回声」长出的轻交易:周边、券、会员与活动
阅读方式目录篇顺序通读,或按章节表跳读
上级专题书稿专题

前置

篇文章核心内容
序序从承诺强度写起,交代交易、增长与平台化为什么单独成卷,本卷的四条判断与边界。
前言前言四卷分工、十三章结构、贯穿案例「回声」轻交易、trade-lab 与三级可运行性。
目录目录13 章 39 节的结构、章节依赖、三条阅读路径与读完应能回答的六个问题。

第 1 章 交易端架构与 trade-lab

节文章核心内容
1.11.1 交易端的四条链路:浏览、下单、支付、售后交易端不是「商品页加一个购买按钮」,而是浏览、下单、支付、售后四条失败边界完全不同的链路。本节逐条说明每条链路需要哪…
1.21.2 trade-lab 的第一条约束:金额与订单状态归谁所有交易端的第一条约束不是选框架,而是给每个字段标注所有者:金额、库存、订单状态与支付结果归服务端,勾选与草稿归端上。本…
1.31.3 lab 的三条验证线:纯计算、进程内下单、真实回调交易端的测试最容易「全绿但线上出错」,因为很多问题只在进程边界与真实回调里出现。本节把 trade-lab 的验证分…

第 2 章 商品与库存展示

节文章核心内容
2.12.1 商详页的三份数据:价格、库存与时效商详页的价格、库存、时效常来自三个接口、三种新鲜度,端上拼页面时很容易拼出一个「不存在的商品」。本节用字段级来源标记…
2.22.2 SKU 选择与规格约束规格选择看起来只是几个按钮,实际是一组组合约束:哪些组合存在、哪些组合缺货、切换一个维度后哪些已选值必须失效。本节把…
2.32.3 库存展示:可售不等于有货库存展示的核心不是「有货/无货」两个状态,而是可售、锁定、预售、区域限制与数据降级五件事。本节把端上的库存判断写成纯…

第 3 章 购物车与价格计算

节文章核心内容
3.13.1 购物车归属:本地车、服务端车与合并游客购物车与服务端购物车合并,是交易端最容易被低估的一次状态冲突。本节把同 SKU 的数量策略、下架与删除的处理、时…
3.23.2 价格明细的端上重算边界价格明细不是五个孤立的数字,而是一份必须同版本的结算快照。本节拆开商品小计、优惠、运费、税费与实付五段,说明端上只能…
3.33.3 失效商品、限购与勾选状态购物车的全选、半选、失效商品与限购,最终都会落到一个数字上:结算金额。本节把勾选状态建模成可售行的三态汇总,明确失效…

第 4 章 下单与订单状态

节文章核心内容
4.14.1 提交防重:幂等键与按钮状态下单提交超时后,端上把「未知」当成「失败」就会诱导用户重复下单。本节用进入确认页生成的幂等键、五个内部状态与三种按钮…
4.24.2 订单状态机与端上映射服务端订单状态有八种,端上却要面对按钮、倒计时、浮层与列表刷新四类副作用。本节把状态映射写成纯函数,用未知状态的前向…
4.34.3 待支付超时与取消待支付倒计时不该由本地时长递减,而要以服务端 expiresAt 为准,并用服务端时间校正本地时钟。本节讨论切后台、…

第 5 章 支付流程与回调

节文章核心内容
5.15.1 支付渠道的端上编排:拉起、轮询与回跳支付编排不是把用户送去渠道就结束:拉起成功只说明参数被接收,回跳参数只是一句口信,真正结果必须由服务端查询确认。本节…
5.25.2 支付结果不确定时的状态机支付结果不是成功与失败两态:超时、回跳丢失与查询未决都会落入 unknown。本节用一个五态状态机表达 pendin…
5.35.3 回调、轮询与端上确认的时序竞争同一笔支付的结果会从回调、服务端推送、轮询和回跳四个方向同时到达,端上收到的顺序与事实发生的顺序无关。本节把事件写成…

第 6 章 支付对账与重复支付

节文章核心内容
6.16.1 端上如何避免重复支付重复支付通常来自重复点击、重复回跳与重复轮询三个入口,而不是用户手抖。本节用支付单号去重、显式的进行中状态与超时后先…
6.26.2 支付对账的数据口径端上无法直接看渠道账单,只能把订单状态、支付单状态与渠道流水号三路信号按 orderId、payId、channel…
6.36.3 退款与售后状态退款不是把订单状态改成已退款,而是挂在原支付单上的一组退款单:整单退与部分退、审核中与退款中、金额分摊与到账时间都各…

第 7 章 优惠券与营销规则

节文章核心内容
7.17.1 优惠券的可用性判定优惠券的「可用」不是布尔值,而是门槛、范围、有效期、领取状态与互斥关系共同裁决的结果。本节把判定顺序写成可测试的纯函…
7.27.2 叠加规则与端上预演会员价、活动、优惠券与积分同时出现时,叠加顺序、互斥组与舍入规则决定了用户最终付多少钱。本节把顺序固定为会员、活动、…
7.37.3 优惠展示的诚实性划线价、券后价与「预计省 X 元」不是三个装饰数字,而是三句可以被核验的事实陈述。本节给出划线价的展示条件、券后价与…

第 8 章 会员、积分与权益

节文章核心内容
8.18.1 会员状态与权益展示会员页最容易把等级、有效期与权益状态混成一个字段:用户看到五条权益,实际只有两条可用。本节把会员快照、权益状态与会员…
8.28.2 积分的加减与过期积分不是端上可以随便加减的余额,而是一本由发放、抵扣、退回、过期四类流水组成的账。本节说明为什么余额必须从流水重放、…
8.38.3 权益降级与到期提醒会员到期不是一瞬间的 UI 状态:权益会逐条失效,提醒要按节奏升级,已支付订单还要保住下单时的会员价。本节把降级拆成…

第 9 章 分享、拉新与增长链路

节文章核心内容
9.19.1 分享卡片的参数与归因分享链接不是拼几个查询参数,而是一份要穿过渠道、安装包和归因窗口的承诺。本节拆开渠道码、活动 id、邀请人、商品与时…
9.29.2 邀请关系与绑定时机邀请关系是一本「谁欠谁奖励」的账,绑定时机早一步会被刷、晚一步会被截胡。本节比较点击、注册、首单三个绑定时机,拆开唯…
9.39.3 拉新活动页的降级活动页的失败方式比商品页多得多:配置拉不到、活动未开始、已经结束、名额耗尽、运营暂停。本节把这些情况分成「配置问题」…

第 10 章 A/B 实验与远端配置

节文章核心内容
10.110.1 实验分流与曝光口径结算页改版上线后先涨后跌,问题往往不在实验结论,而在分流与曝光口径。本节用哈希加盐实现稳定分流、用分层隔离并行实验、…
10.210.2 实验配置的本地缓存与回退实验开关、活动文案和入口配置都走远端下发,但拉取失败、版本回退、冷启动无配置才是客户端真正要处理的场景。本节把版本、…
10.310.3 实验污染与互斥同一账号在两台手机、两个客户端版本上进入不同实验分组,是实验系统最难发现的一类污染。本节定义跨端漂移、跨版本残留、互…

第 11 章 客服、售后与工单

节文章核心内容
11.111.1 客服入口与上下文携带用户在订单页点客服,却还要第三次报订单号;问题不在客服系统,而在入口没有携带最小上下文。本节把订单号、支付单、页面来…
11.211.2 售后申请的状态与证据售后申请最常见的两个问题,是证据不齐导致来回补材料,和重复提交产生多张售后单。本节把申请、审核、通过或驳回、完成写成…
11.311.3 工单会话的离线与恢复客服工单最容易被低估的是「用户关掉 App 之后」。消息发没发出去、重连后会不会重复、会话关闭后历史还在不在,决定了…

第 12 章 数据埋点与增长分析

节文章核心内容
12.112.1 埋点模型与事件契约交易埋点最容易在「同名事件两个口径」上失真。本节把曝光、点击、加购、下单、支付、退款六类事件写成带 schema 版…
12.212.2 上报队列、离线缓存与去重上报队列不是「失败重发」四个字。本节给出一个内存加注入存储的端上队列:批量取件、指数退避、容量上限与三种丢弃策略、崩…
12.312.3 漏斗与归因的端上边界端上漏斗只能回答「用户在我这里走到哪一步」,不能替服务端宣布支付或退款成功。本节定义步骤、同会话同订单、归因窗口三个…

第 13 章 卷三收口:trade-lab 端到端

节文章核心内容
13.113.1 端到端:选品、下单、支付、退款前十二章分别验证了金额、库存、幂等、支付与退款,但真实事故往往发生在模块交界处。本节用五个窄端口把选品、加购、下单、…
13.213.2 故障注入:重复提交、支付超时、回调乱序正常主线只能证明系统会走路,故障注入才能证明它不会在摔倒时抓错东西。本节在进程内注入重复提交、支付超时、回调先成功后…
13.313.3 质量场景与风险清单:进入卷四收口不是把前十二章再讲一遍,而是把每条约束改写成可执行断言、证据要求与风险等级。本节给出 16 条覆盖第 1 到 1…

附录

篇文章核心内容
附录 A附录 A订单、支付、退款三套状态机、金额分段口径、禁止组合与展示文案速查。
附录 B附录 B按八类症状组织的交易排查手册:定性顺序、必查字段、证据留存与升级判据。
附录 C附录 C交易端评审清单:十组提问、通过标准、常见缺陷与「未验证」栏。

怎么读这一卷

与其他书稿的边界

代码与可复现性

全部文章 Books game Java Indie golang 客户端开发 Minigame Saas rust Python
books

《互联网产品的客户端架构·交易、增长与平台化》附录 C 交易端评审清单

可以带进评审会的交易端清单:按所有权、状态机、金额、幂等与重复、失败路径、优惠与会员、增长与实验、埋点与观测、安全与隐私、发布与回滚十组问题逐项提问,每组给出通过标准与常见缺陷,另附「未验证」栏、评审记录模板、快速版十问与不通过判据,供方案评审与上线前评审直接使用。

7 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·交易、增长与平台化》附录 B 交易问题排查手册

按症状组织的交易端排查手册:支付成功但订单未变、重复扣款、金额不一致、券不可用、库存显示有货却下单失败、退款不到账、会员权益不生效、漏斗数据对不上,每一类给出定性顺序、必查字段、常见原因排序、证据留存方法与升级人工的判据,并附最小信息集与时间线还原方法。

7 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·交易、增长与平台化》附录 A 状态与金额速查

把交易端最容易混淆的状态与金额字段收在一张表里:订单、支付、退款三套状态机各自的取值、迁移与终态,金额从商品价到应付、实付再到退款的分段口径与字段命名,状态之间的禁止组合,以及展示文案、按钮可用性和事件时序的对照,供评审、联调与线上排查时随手查用。

9 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·交易、增长与平台化》13.3 质量场景与风险清单:进入卷四

收口不是把前十二章再讲一遍,而是把每条约束改写成可执行断言、证据要求与风险等级。本节给出 16 条覆盖第 1 到 12 章的质量场景,用台账函数检查断言、证据、章节覆盖与卷四移交项,并用发布门禁区分高风险阻断与中风险警告,最后说明多端、规模化与平台化为什么留给卷四。

10 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·交易、增长与平台化》13.2 故障注入:重复提交、支付超时、回调乱序

正常主线只能证明系统会走路,故障注入才能证明它不会在摔倒时抓错东西。本节在进程内注入重复提交、支付超时、回调先成功后失败、重复通知与乱序通知,用假时钟推进查询,断言只产生一笔订单、支付状态不被弱事件改写、未确认支付绝不退款,并复盘一次三类故障叠加的事故。

8 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·交易、增长与平台化》13.1 端到端:选品、下单、支付、退款

前十二章分别验证了金额、库存、幂等、支付与退款,但真实事故往往发生在模块交界处。本节用五个窄端口把选品、加购、下单、支付、退款串成一条可断言主线,假实现放在测试侧,断言金额一致、只有一笔订单、未确认支付不退款,并复盘一次「每段都绿、整条链路金额对不上」的问题。

9 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·交易、增长与平台化》12.3 漏斗与归因的端上边界

端上漏斗只能回答「用户在我这里走到哪一步」,不能替服务端宣布支付或退款成功。本节定义步骤、同会话同订单、归因窗口三个口径,把能算与不能算的指标写成边界表,并给出一个按会话串联、跨会话断开、服务端事件单独计数的可运行漏斗模块,并说明对账时如何解释差异。

7 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·交易、增长与平台化》12.2 上报队列、离线缓存与去重

上报队列不是「失败重发」四个字。本节给出一个内存加注入存储的端上队列:批量取件、指数退避、容量上限与三种丢弃策略、崩溃后重排未确认事件,以及按 eventId 的幂等去重;测试用假时钟与内存存储推进重试,不碰真实网络,也不依赖任何第三方库。

7 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·交易、增长与平台化》11.3 工单会话的离线与恢复

客服工单最容易被低估的是「用户关掉 App 之后」。消息发没发出去、重连后会不会重复、会话关闭后历史还在不在,决定了用户是否信任这个入口。本节用注入存储与假时钟实现本地缓存、离线队列、按序号补拉与去重,并复盘一次重连后消息翻倍的完整排查过程。

8 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·交易、增长与平台化》11.2 售后申请的状态与证据

售后申请最常见的两个问题,是证据不齐导致来回补材料,和重复提交产生多张售后单。本节把申请、审核、通过或驳回、完成写成带角色约束的状态机,按原因定义必要与可选证据,用草稿标识与订单行双重判重,并复盘一次重复申请引发退款叠加的完整修复过程与回归结果。

9 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·交易、增长与平台化》11.1 客服入口与上下文携带

用户在订单页点客服,却还要第三次报订单号;问题不在客服系统,而在入口没有携带最小上下文。本节把订单号、支付单、页面来源与最近错误码写成可校验的上下文对象,用入口白名单控制字段,用脱敏函数挡住手机号与邮箱,并复盘一次多标签页上下文串单的典型问题。

8 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·交易、增长与平台化》10.3 实验污染与互斥

同一账号在两台手机、两个客户端版本上进入不同实验分组,是实验系统最难发现的一类污染。本节定义跨端漂移、跨版本残留、互斥组重叠、长时间未刷新与重置回流等信号,给出解析当前分组、清理旧记录和重置后防回流的纯函数模型,并复盘一次双端哈希输入不一致的典型问题。

7 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·交易、增长与平台化》10.2 实验配置的本地缓存与回退

实验开关、活动文案和入口配置都走远端下发,但拉取失败、版本回退、冷启动无配置才是客户端真正要处理的场景。本节把版本、ETag、有效期、默认值与交易字段隔离写成可测试的配置仓库,给出失败回退路径,并复盘一次旧版本覆盖新配置、导致活动入口消失的事故。

8 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·交易、增长与平台化》10.1 实验分流与曝光口径

结算页改版上线后先涨后跌,问题往往不在实验结论,而在分流与曝光口径。本节用哈希加盐实现稳定分流、用分层隔离并行实验、把渲染、可见、点击三种曝光分开,并给出只上报一次的曝光日志与灰度开关模型,代码可直接运行,最后复盘一次按会话分流的典型误判。

8 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·交易、增长与平台化》9.3 拉新活动页的降级

活动页的失败方式比商品页多得多:配置拉不到、活动未开始、已经结束、名额耗尽、运营暂停。本节把这些情况分成「配置问题」与「业务状态」,给出缓存容忍、版本回退保护、降级目标页与降级后分享参数的规则,并附一个用假时钟与可控配置源验证的 L2 模型。

9 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·交易、增长与平台化》9.2 邀请关系与绑定时机

邀请关系是一本「谁欠谁奖励」的账,绑定时机早一步会被刷、晚一步会被截胡。本节比较点击、注册、首单三个绑定时机,拆开唯一性、可撤销与自己邀请自己的四类伪装,并给出一个把绑定判定、撤销与失败重试写成纯函数、可在本地用 24 条用例验证的可运行模型。

9 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·交易、增长与平台化》9.1 分享卡片的参数与归因

分享链接不是拼几个查询参数,而是一份要穿过渠道、安装包和归因窗口的承诺。本节拆开渠道码、活动 id、邀请人、商品与时间戳的生成与校验,说明分享卡片和落地页不一致时以谁为准、参数丢失后如何兜底,并给出一个可运行、可测试的 L1 分享参数与归因模型。

10 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·交易、增长与平台化》8.3 权益降级与到期提醒

会员到期不是一瞬间的 UI 状态:权益会逐条失效,提醒要按节奏升级,已支付订单还要保住下单时的会员价。本节把降级拆成权益比较、提醒阶段与订单价格快照三层,说明为什么已支付订单永久锁价、待支付订单只保留到支付截止时间,并给出一个可测试的 TypeScript 模型。

12 分钟阅读
书稿 互联网产品 客户端架构
books

《互联网产品的客户端架构·交易、增长与平台化》8.2 积分的加减与过期

积分不是端上可以随便加减的余额,而是一本由发放、抵扣、退回、过期四类流水组成的账。本节说明为什么余额必须从流水重放、过期批次为什么要先到期先出、抵扣失败为什么用退回流水而不是删除,以及多端账本如何按 id 合并,并给出一个可测试的 TypeScript 账本模型。

11 分钟阅读
书稿 互联网产品 客户端架构