Files
lijiaoqiao/supply-api
Your Name a2f042f1c2 test(supply-api): expand e2e coverage and support unix socket dsn
Add broader e2e coverage for account, package, billing, tracing, and reliability scenarios.\nSupport Unix socket DSN formatting in config and cover it with unit tests.\nIgnore local assistant metadata and generated gate artifacts to reduce workspace noise.
2026-04-13 18:53:35 +08:00
..
2026-04-09 22:44:57 +08:00

Supply API

供应链管理 API 服务

项目概述

Supply API 是一个基于 Go 的微服务,提供供应链管理功能,包括:

  • 账户管理 - 供应商和消费者账户的 CRUD 操作
  • 套餐管理 - 供应链套餐的发布、下架和管理
  • 结算服务 - 供应链结算和提现处理
  • 收益服务 - 收益记录和账单汇总
  • 审计日志 - 完整的审计日志记录和查询
  • IAM (身份和访问管理) - 多角色权限系统

技术栈

  • 语言: Go 1.21+
  • 数据库: PostgreSQL 15+
  • 缓存: Redis
  • 框架: 标准库 + 自定义中间件
  • 测试: Go testing + testify

项目结构

supply-api/
├── cmd/
│   └── supply-api/           # 主程序入口
│       └── main.go
├── internal/
│   ├── audit/                # 审计日志模块
│   │   ├── model/           # 审计事件模型
│   │   ├── service/         # 审计服务
│   │   ├── handler/         # HTTP 处理器
│   │   ├── repository/      # 数据库仓储 (R-09)
│   │   ├── sanitizer/      # 敏感信息脱敏
│   │   └── events/         # 事件定义 (CRED, SECURITY)
│   ├── iam/                 # IAM 模块
│   │   ├── model/          # 角色、权限模型
│   │   ├── service/         # IAM 服务
│   │   ├── handler/         # HTTP 处理器
│   │   ├── middleware/      # 权限中间件
│   │   └── repository/     # 数据库仓储 (R-08)
│   ├── domain/              # 领域模型
│   ├── middleware/           # HTTP 中间件
│   ├── repository/           # 通用数据仓储
│   ├── cache/                # Redis 缓存
│   └── config/               # 配置管理
├── sql/
│   └── postgresql/           # 数据库 DDL 脚本
│       ├── platform_core_schema_v1.sql
│       ├── iam_schema_v1.sql           # IAM 表 (R-07)
│       └── supply_idempotency_record_v1.sql
└── scripts/
    └── migrate.sh            # 数据库迁移脚本

模块说明

IAM 模块 (多角色权限)

功能 说明
角色管理 super_admin, org_admin, supply_admin, operator, developer, finops, viewer
权限范围 细粒度 scope 权限控制
角色继承 支持角色层级继承
中间件验证 ScopeAuth 中间件

文件:

  • internal/iam/model/ - 角色、权限模型
  • internal/iam/service/ - IAM 服务层
  • internal/iam/middleware/ - 权限验证中间件

Audit 模块 (审计日志)

功能 说明
事件记录 CRED/AUTH/DATA/SECURITY 事件分类
幂等性保证 IdempotencyKey 支持
敏感信息脱敏 自动扫描和掩码
指标统计 M-013/M-014/M-015/M-016

文件:

  • internal/audit/model/ - 审计事件模型
  • internal/audit/service/ - 审计服务
  • internal/audit/handler/ - HTTP API
  • internal/audit/sanitizer/ - 敏感信息脱敏

Domain 模块

Store 说明
AccountStore 账户 CRUD
PackageStore 套餐管理
SettlementStore 结算处理
EarningStore 收益记录

API 端点

审计 API

方法 路径 说明
POST /api/v1/audit/events 创建审计事件
GET /api/v1/audit/events 查询事件列表

IAM API

方法 路径 说明
POST /api/v1/iam/roles 创建角色
GET /api/v1/iam/roles 列出角色
GET /api/v1/iam/roles/:code 获取角色详情
PUT /api/v1/iam/roles/:code 更新角色
DELETE /api/v1/iam/roles/:code 删除角色
POST /api/v1/iam/roles/:code/scopes 分配权限
DELETE /api/v1/iam/roles/:code/scopes/:scope 移除权限

配置

配置文件位于 config/ 目录:

# config/config.dev.yaml
database:
  host: localhost
  port: 5432
  user: supply
  password: ""
  database: supply_db
  max_open_conns: 25
  max_idle_conns: 5
  conn_max_lifetime: 5m

redis:
  host: localhost
  port: 6379
  password: ""
  db: 0

构建和运行

# 构建
go build -o supply-api ./cmd/supply-api/

# 运行
./supply-api -env=dev

# 测试
go test ./... -count=1

测试覆盖率

模块 覆盖率
audit/events 73.5%
audit/handler 83.0%
audit/model 95.0%
audit/sanitizer 79.7%
audit/service 75.3%
iam/handler 85.9%
iam/middleware 83.5%
iam/model 62.9%
iam/service 99.0%

数据库迁移

# 运行迁移
./scripts/migrate.sh -env=dev

文档

License

Proprietary