Cognition-Partner-Workshops/app_eventflow-payment-service
GitHub: Cognition-Partner-Workshops/app_eventflow-payment-service
EventFlow支付服务是一个故意包含货币处理bug的FastAPI应用,用于演示事件驱动架构中的事故响应与AI辅助调试流程。
Stars: 0 | Forks: 0
# EventFlow Payment Service
**EventFlow 事件驱动架构演示**中的**系统 2**。
这是一个使用 FastAPI 构建的服务,它从 Azure Service Bus 消费 `OrderCreated` 事件并处理支付。该服务包含一个关于零小数货币(JPY, KRW)的已知 bug,用于演示项目的事件响应叙事。
## 架构角色
```
Azure Service Bus → [Payment Service] → Payment Processing
↓
Application Insights
↓
Alert Rule (on error spike)
↓
Devin API (investigate + fix)
```
## 功能特性
- `OrderCreated` 事件的 Azure Service Bus 消费者
- 支付处理与货币转换
- 健康检查与就绪检查端点
- 包含关联 ID 的结构化日志
- 用于 Azure Monitor 的 OpenTelemetry 监测
## Bug 说明(演示叙事)
支付处理器通过除以 100 将金额从最小货币单位转换为显示金额(假设所有货币都有两位小数)。这对于 USD、EUR、GBP 有效,但对于**零小数货币**(如 JPY 和 KRW)会**失败**,因为其金额已经是以基本单位表示的。
当 JPY 订单到达时:
- 金额 `15800`(日元)被除以 100 → `158.00`
- 验证要求金额 ≥ 显示货币中的最小计费单位
- 转换后的金额未通过下游一致性检查 → **未处理异常**
此 bug 被故意保留在 `main` 分支中,以演示:
1. CI 测试通过(它们仅覆盖 USD/EUR)
2. 生产环境在接收 JPY 输入时崩溃
3. Devin AI 调查日志并开启修复 PR
## 技术栈
- Python 3.11+
- FastAPI
- Azure Service Bus SDK
- OpenTelemetry + Azure Monitor
- Pydantic v2
## 本地开发
```
pip install poetry
poetry install
cp .env.example .env
# 使用您的值编辑 .env
# 运行服务
poetry run uvicorn app.main:app --reload --port 8002
# 运行测试
poetry run pytest -v
```
## 环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
| `AZURE_SERVICEBUS_CONNECTION_STRING` | Service Bus 连接字符串 | *(必填)* |
| `AZURE_SERVICEBUS_QUEUE_NAME` | 订单事件的队列名称 | `order-events` |
| `APPLICATIONINSIGHTS_CONNECTION_STRING` | App Insights 连接字符串 | *(可选)* |
| `LOG_LEVEL` | 日志级别 | `INFO` |
| `ENVIRONMENT` | 部署环境 | `development` |
## API 端点
| 方法 | 路径 | 描述 |
|---|---|---|
| `GET` | `/health` | 健康检查 |
| `GET` | `/ready` | 就绪检查 |
| `GET` | `/api/payments` | 列出已处理的支付 |
| `GET` | `/api/payments/{payment_id}` | 根据 ID 获取支付信息 |
## Docker
```
docker build -t eventflow-payment-service .
docker run -p 8002:8002 --env-file .env eventflow-payment-service
```
标签:AI编程演示, Application Insights, AV绕过, Azure Monitor, Azure Service Bus, FastAPI, GET参数, Incident Response, OpenTelemetry, Pydantic, Python, 事件驱动架构, 支付服务, 故障响应演示, 无后门, 用户代理, 示例项目, 请求拦截, 货币转换Bug, 逆向工具, 零小数货币