Alpaca券商日志
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_3c6cb52e/alpaca-broker-journals
技能介绍
解决什么问题
Alpaca 券商账户体系里,资金在慢速银行通道上跑,但产品体验要求「秒到账」。Journals 机制解决的是这个矛盾:在你自己的 omnibus 账户内部,把预先归集到 firm/sweep 账户的钱或股票,瞬间划转到用户账户。典型场景是 instant funding、cashback 和注册送股。它只动内部账本,不触碰外部银行世界——那是 alpaca-broker-funding-transfers 的职责。
核心能力
- 两种 entry_type:
JNLC走现金,firm ↔ user 双向;JNLS走证券,仅 firm → user,用于送股奖励。 - 端点:
POST /v1/journals单笔、POST /v1/journals/batch一对多(仅 JNLC)、POST /v1/journals/reverse_batch多对一(仅 JNLC)、GET查询与DELETE取消。 - 批量是全有或全无:任何一个条目校验失败,整个 batch 作废,响应里逐条给出
error_message。 - 幂等重试:创建时带
Idempotency-Key(建议用客户端生成的 UUID)。同 key + 相同 body 返回原 journal,同 key + 不同 body 返回 422。这是资金操作重试安全的正确姿势——网络超时后盲目重发可能双重入账。 - 状态流:
GET /v2/events/journals/status以 SSE 推送状态变更;v1 是 legacy,不要用。
状态机里的坑
正常路径是 queued → sent_to_clearing → executed,但有两条教训:
executed不等于最终。未获许可的 journal 可能被 cashiering 撤销,必须对齐后续事件做对账。correct会产生新的 journal ID。纠正不是原地编辑,而是取消原单、新建一张修正金额的单。按 ID 对账时必须同时处理原 ID(变 correct/cancelled)和新 ID(真实资金流向)。
适用边界
- 现金归集/journals 用途需要 Alpaca 审核,可能还涉及本地牌照,需先咨询法务。
DELETE只对pending状态有效(204);要撤销已执行的 journal,只能反向创建一张镜像 journal。- 余额不足时创建返回 403;触及日限额会退回
pending等待人工审批。 GET /v1/journals结果集超过 10 万条会 422,务必用after/before/limit过滤。- 涉及资金移动的 journal 要带 Travel Rule 字段(
transmitter_*);测试可用 description 里的 sandbox fixtures 模拟 rejected/pending。
使用场景
- 券商后端工程师在实现「即时到账」功能时,需要将预先归集到sweep账户的现金通过JNLC journals批量划转到多个用户账户,确保资金秒级可用
- 金融科技团队处理网络超时后的重试逻辑,需用Idempotency-Key生成唯一交易ID,避免因POST /v1/journals超时导致的重复入账问题
- 支付系统运维人员监控journal状态变更,通过GET /v2/events/journals/status的SSE流实时跟踪queued→sent_to_clearing→executed的状态流转
- 交易系统开发者在用户注册送股场景中,需通过JNLS journals将公司账户的股票划转到新激活的用户账户,并处理correct状态产生的新journal ID对账逻辑
适合人员
- 券商后端工程师:需要理解Journals在omnibus账户内部的资金划转机制,实现即时到账、cashback等功能
- 金融科技产品经理:需掌握Journals与外部银行转账的边界,设计符合Alpaca审核要求的资金归集产品流程
- 支付系统运维人员:需要处理Journals状态机中的pending/canceled等异常状态,确保资金对账的准确性
- 交易系统开发者:在实现注册送股、分润等业务时,需处理JNLS证券划转的账户状态校验和correct新ID逻辑