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, 逆向工具, 零小数货币