@@ -111,7 +111,7 @@ icon: "list-check"
11111114 . chainstream-sdk PR #10 review 通过后合并到 ` main ` 。
11211215 . 在 SDK 仓库执行 ` git checkout main && git pull --ff-only origin main ` ,从 main 创建并推送需要发布的 SDK tag:` js-v* ` 、` rust-v* ` 、` py-v* ` 、` go-v* ` 。
11311316 . 等待 SDK release workflows 完成,记录 npm、crates.io、PyPI、Go SDK repo/tag 发布结果。
114- 17 . Realtime 仍按当前要求先不部署;生产 live receive 与 SDK live receive 在 ` pred ` namespace 放行后单独补验收 。
114+ 17 . Realtime production hotfix 在 ` xrealtime/dexes-xrealtimego-server ` 放行 ` pred ` namespace;rollout 完成后复测 event / token channel 与 SDK live example 。
115115
116116## PR 审核顺序
117117
@@ -126,8 +126,8 @@ icon: "list-check"
1261262 . ClickHouse:activity local/distributed/archive/realtime view 存在,热表 TTL 为 3 天。
1271273 . Pipeline:trade buy/sell、settlement redeem/split/merge 样本能落 activity 表。
1281284 . API:` GET /v1/prediction/events/world-cup-winner/activities ` 与 ` GET /v1/prediction/markets/{condition_id}/activities ` 均返回 200,字段不少于 features.new,分页下一页无重复 ` activityId ` 。
129- 5 . Realtime:producer、channel builder、短字段 payload 与 SDK parser 已上线;production live receive 按当前要求不纳入本次部署验收 。
130- 6 . SDK:TypeScript/Rust/Go/Python release tags 已发布;SDK parser 单测能把短字段 payload 解析成完整模型。
129+ 5 . Realtime:producer、channel builder、短字段 payload 与 SDK parser 已上线;production event / token channel live receive 已通过 。
130+ 6 . SDK:TypeScript/Rust/Go/Python release tags 已发布;SDK parser 单测与 TypeScript SDK production live example 均能把短字段 payload 解析成完整模型。
1311317 . 缓存:` PREDICTION_FIRSTSCREEN_CACHE_ENABLED=false ` 时没有 firstscreen queue 堆积,也没有持续 firstscreen cache write 日志。
1321328 . 日志:生产无持续 decode error、ClickHouse insert error、cache write error。
1331339 . 发布:aggregation/services/SDK 的生产记录均包含 tag 值、对应 main commit、workflow 或 rollout 链接。
@@ -143,12 +143,12 @@ icon: "list-check"
143143| Event REST API | 已验证 | ` GET /v1/prediction/events/world-cup-winner/activities?limit=5 ` 公网返回 200,5 条,cursor present,` retentionDays=3 ` ,必需字段缺失 ` [] ` ,页内 ` activityId ` 无重复 | 无 |
144144| Market REST API | 已验证 | ` GET /v1/prediction/markets/{condition_id}/activities?limit=5 ` 公网返回 200,5 条,cursor present,` retentionDays=3 ` ,无需传 ` event_slug ` | 无 |
145145| OpenAPI / SDK REST | 已发布 | SDK PR #10 已 merge;` js-v2.1.15 ` 、` py-v2.1.7 ` 、` rust-v2.1.6 ` 、` go-v2.1.7 ` 均指向 main commit ` d41bed1 ` ,release workflows 全 success | 无 |
146- | Realtime channel / payload | 代码已上线,live receive 暂不验收 | aggregation tag 使用 ` pred:evt:{event_slug}:act ` / ` pred:tok:{token_id}:act ` ,payload 短字段;SDK parser 单测通过;producer logs 曾确认 publish path 生效 | 按当前要求 realtime live receive 先不部署;后续放行 ` pred ` namespace 后复测 |
147- | Realtime failure rule | 已验证代码证据 | Kafka/realtime/cache publish 失败只 debug 记录并继续主流程;不补发、不进 DLQ、不阻塞 offset commit | 生产 live receive 放行后补端到端验证 |
148- | SDK realtime 订阅 | SDK 已发布,live receive 暂不验收 | TS/Rust/Go/Python enum + builder 构造 channel,短字段 payload 解析为完整模型;SDK release workflows 全绿 | realtime namespace 放行后跑 SDK live 示例 |
146+ | Realtime channel / payload | 已验证 | aggregation tag 使用 ` pred:evt:{event_slug}:act ` / ` pred:tok:{token_id}:act ` ,payload 短字段;xrealtime generation ` 11128 ` 已放行 ` pred ` namespace;raw production WebSocket event / token channel 均收到 activity push | 无 |
147+ | Realtime failure rule | 已验证 | Kafka/realtime/cache publish 失败只 debug 记录并继续主流程;不补发、不进 DLQ、不阻塞 offset commit;production live receive 已确认 realtime 不反向阻塞 activity 链路 | 无 |
148+ | SDK realtime 订阅 | 已验证 | TS/Rust/Go/Python enum + builder 构造 channel,短字段 payload 解析为完整模型;SDK release workflows 全绿;published ` @chainstream-io/sdk@2.1.15 ` production live example 收到完整 27 字段 activity model | 无 |
149149| Firstscreen cache gate | 已验证默认关闭 | aggregation YAML 显式 ` PREDICTION_FIRSTSCREEN_CACHE_ENABLED=false ` ;services deployment 未设置覆盖项;代码默认 false;最近 logs 无 cache write error | 后续打开开关前补命中率、陈旧数据、cache write 日志验收 |
150- | 发布流程 | 已验证 | aggregation PR #39 、services PR #29 /#30 、SDK PR #10 、docs PR #3 均已 merge;aggregation/services/SDK tags 均指向各自 ` origin/main ` | 无 |
151- | 最终验收 | 本次范围已完成 | topic、DDL、pipeline、API、SDK、发布 tag、protobuf Kafka payload、API 分页均有记录 | realtime production live receive 与 SDK live receive 按当前要求留作后续单独验收 |
150+ | 发布流程 | 已验证 | aggregation PR #39 、services PR #29 /#30 、SDK PR #10 、docs PR #4 均已 merge;aggregation/services/SDK tags 均指向各自 ` origin/main ` ;xrealtime production image 已从 ` latest ` 切到 tag ` pred-namespace-20260605-1f8d03dd ` | 无 |
151+ | 最终验收 | 已完成 | topic、DDL、pipeline、API、realtime、 SDK、发布 tag、protobuf Kafka payload、API 分页均有记录;SDK live example 已收到完整模型 | 无 |
152152
153153## 2026-06-05 验收记录
154154
@@ -165,8 +165,12 @@ icon: "list-check"
165165 - 最新样本包含全部 27 个必需字段,缺失字段为 ` [] ` ;画像字段无数据时返回 ` "" ` 或 ` [] ` 兜底。
166166 - event endpoint cursor 翻页验证:page1/page2 均返回 5 条,cursor 均存在,跨页 ` activityId ` overlap 为 ` 0 ` 。
167167- production Kafka payload 已用集群内 kcat 验证为 protobuf envelope,不是 JSON:latest payload ` bytes=1065 ` ,first16 为 ` 08 01 12 a4 08 0a 17 32 30 32 36 2d 30 36 2d 30 ` ,` json_like=false ` 。
168- - 当前本地 ` kubectl ` 只读查询在 ` aws eks get-token ` 凭据链路处 30 秒超时,因此本段不新增 K8s 实时 pod/log 证据;K8s rollout 与日志证据以本节下方已记录的 direct API 复核和本次公网 API 最新数据为准。
169- - realtime production live receive 与 SDK live receive 按当前要求不纳入本次部署验收;代码、producer、SDK enum/builder/parser 已上线,后续需要放行 production ` pred ` namespace 后单独复测。
168+ - 当前本地 ` kubectl ` / AWS CLI 凭据链路曾在 ` aws eks get-token ` 处超时;最终使用直接 EKS SigV4 token 访问 Kubernetes API 复核 rollout。
169+ - xrealtime production hotfix 已完成:deployment ` xrealtime/dexes-xrealtimego-server ` generation ` 11128 ` rollout 成功,replicas / updated / ready / available 均为 ` 4/4/4/4 ` ;` CENTRIFUGO_CHANNEL_NAMESPACES ` 解析为 40 个 namespace,原 39 个 namespace 均保留并新增 ` pred ` 。
170+ - xrealtime production image 已从 ` latest ` 切换为 tag 镜像 ` 440744256864.dkr.ecr.ap-southeast-1.amazonaws.com/xrealtime/xrealtimego:pred-namespace-20260605-1f8d03dd ` ;该 tag 对应 digest ` sha256:1fd733b9c74925c7d405a5cbf07cc6d13fea35e7814936fedc35fc6e3e973e7d ` 。
171+ - production raw WebSocket 使用 fresh token 完成 connect / subscribe,` pred:evt:world-cup-winner:act ` 与 ` pred:tok:{token_id}:act ` 均可订阅并收到 push;payload 为短字段集合 ` id ` 、` amt ` 、` as ` 、` bn ` 、` cid ` 、` es ` 、` li ` 、` mi ` 、` mid ` 、` mq ` 、` oc ` 、` ocs ` 、` p ` 、` q ` 、` seq ` 、` src ` 、` tk ` 、` ta ` 、` ti ` 、` tn ` 、` toh ` 、` tp ` 、` tt ` 、` ts ` 、` tid ` 、` tx ` 、` ty ` 。
172+ - published TypeScript SDK ` @chainstream-io/sdk@2.1.15 ` production live example 已通过:SDK 订阅 event channel 与 token channel 后收到完整 27 字段 activity model,字段集合与 REST ` PredictionActivity ` 对齐。
173+ - realtime repo 仍存在发布资产工程债:当前 production ` centrifugo/config.json ` 被 ` .gitignore ` 忽略,远端 clean worktree 缺少该文件;` Dockerfile-xrealtime ` 、` deploy.sh ` 、` k8s/ ` 在本地为 untracked。Day2 runtime 验收已完成,后续需把 xrealtime namespace 与 deploy manifest 收敛到可审计的 repo / secret-managed 发布流程。
170174
171175### 历史过程记录
172176
@@ -367,10 +371,10 @@ icon: "list-check"
367371 - TypeScript SDK PR 分支本地 ` dist ` 可以完成 REST seed:` world-cup-winner ` 拉取 50 条 activity,并从中得到 token channel 列表。
368372 - TypeScript SDK 能连接 ` wss://realtime-dex.chainstream.io/connection/websocket ` ,连接阶段通过。
369373 - 订阅 ` pred:evt:world-cup-winner:act ` 与 ` pred:tok:{tokenId}:act ` 时,production realtime 返回 ` code=102, message=unknown channel ` 。
370- - 判断:SDK channel 构造与解析逻辑已由本地测试覆盖,但 production realtime 侧尚未开放 ` pred ` namespace,因此 realtime live receive 与 SDK live receive 尚未通过。
374+ - 判断:SDK channel 构造与解析逻辑已由本地测试覆盖;首次失败根因为 production realtime 侧尚未开放 ` pred ` namespace。
375+ - 最终复测:放行 ` pred ` namespace 并切换 xrealtime tag 镜像后,published ` @chainstream-io/sdk@2.1.15 ` production live example 已成功收到完整 activity model,该历史失败已被覆盖。
371376
372- ### 待最终验收
377+ ### 后续工程债
373378
374- - Realtime event channel ` pred:evt:world-cup-winner:act ` 与 token channel ` pred:tok:{tokenId}:act ` 的 production live receive 验收尚未纳入本次部署;后续需补 production ` pred ` namespace 或等价放行配置后再复测。
375- - SDK 示例 live 订阅 WorldCup activity 并收到完整模型的生产验收随 realtime namespace 放行后单独补测。
379+ - xrealtime production runtime 已通过 live 验收,但 ` centrifugo/config.json ` 、` Dockerfile-xrealtime ` 、` deploy.sh ` 、` k8s/ ` 等发布资产仍需 repo 化或进入 secret-managed 配置流程,避免后续 namespace 变更依赖本地 ignored / untracked 文件。
376380- Firstscreen cache 默认关闭已由代码、配置和日志复核;若后续打开,需要单独补缓存命中率、陈旧数据和 cache write 日志验收。
0 commit comments