Files
wenzi/specs/004-system-integration/spec.md

33 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 功能规范: 004 - 系统能力与集成
本文档定义了“蚊子”传播系统中与“系统能力与集成”相关的功能。
## 1. 用户故事与验收标准 (User Stories & Acceptance Criteria)
| 用户故事 | 验收标准 | 优先级 |
| :--- | :--- | :--- |
| **作为第三方应用**当一个新用户通过邀请链接完成注册后我希望能通过API通知“蚊子”系统以便为邀请者记功和发放奖励。 | 1. 提供一个安全的、基于`X-API-Key` HTTP头认证的回调API。<br>2. API需接收一个在邀请链接中传递的唯一`tracking_id`(必需),以及第三方系统中的`external_user_id`(可选)。<br>3. API有清晰的成功/失败返回码。<br>4. **(澄清)** API需具备幂等性对于重复的`tracking_id`调用应返回成功,但只记功一次。 | **高** |
| **作为系统**,需要能初步识别和拦截刷单行为,以保证活动的公平性和数据准确性。 | 1. **(澄清)** 在用户点击邀请链接的环节收集其IP和设备指纹信息。<br>2. **(澄清)** 对回调API进行速率限制默认为“每分钟100次/API Key”并支持在后台配置此数值。<br>3. 可配置是否对来源IP进行校验。 | **高** |
| **作为系统**,需要能自动完成奖励发放,以降低运营成本和提升用户体验。 | 1. 可通过API与内部账户系统或第三方API打通完成积分/优惠券发放。<br>2. **(澄清)** 当奖励发放失败时应自动进入延迟重试队列重试3次后仍失败则标记为“发放失败”并通知管理员。 | **中** |
## 2. 澄清与边缘场景 (Clarifications & Edge Cases)
- **API幂等性 (API Idempotency)**:
- 回调API必须是幂等idempotent的。系统将记录已成功处理的 `tracking_id`。如果收到一个已处理过的 `tracking_id`,系统将直接返回成功状态,但不会重复执行奖励逻辑。
- **回调API负载 (Callback API Payload)**:
- `tracking_id` (string, required): 从邀请链接中获得的唯一追踪ID。
- `external_user_id` (string, optional): 新用户在第三方系统中的ID用于对账。
- `timestamp` (integer, optional): 事件发生的时间戳。
- **防刷单信息收集 (Anti-Fraud Info Collection)**:
- 用户的IP和设备指纹信息在点击我方生成的邀请链接重定向前时捕获并与 `tracking_id` 关联存储。后续可基于此信息进行风险评估。
- **奖励发放重试机制 (Reward Issuance Retries)**:
- 首次发放失败的奖励任务将进入一个延迟队列。
- 队列将以递增的时间间隔例如5分钟后15分钟后30分钟后自动重试最多3次。
- 3次全部失败后该任务将被标记为“永久失败”并生成一条待办事项或通知给系统管理员进行人工干预。
- **奖励接口适配 (Reward API Adaptability)**:
- 奖励发放模块在设计上应是可扩展的通过适配器模式Adapter Pattern来支持未来接入不同类型的第三方奖励系统。V1.0将优先实现一种基于 `token` 认证的RESTful API调用方式。