From f8d765c1981f6d9caefbb6eb88ceddff7f5283a9 Mon Sep 17 00:00:00 2001 From: renzhiyuan <465386466@qq.com> Date: Mon, 27 Jul 2026 09:53:54 +0800 Subject: [PATCH] 1 --- Dockerfile | 286 ++++++++--------------------------------------------- README.md | 283 +++++++++++++++++++++++++++++++++++++++++++++++----- 2 files changed, 300 insertions(+), 269 deletions(-) diff --git a/Dockerfile b/Dockerfile index 4d124d2..cbe898b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,266 +1,58 @@ -好的,根据你现在的项目,我来写一个完整的 README: +# ============================================================ +# 阶段1: 构建 +# ============================================================ +FROM golang:1.26-alpine AS builder ---- +WORKDIR /app -## README.md +# ✅ 设置 Go 代理(解决网络问题) +ENV GOPROXY=https://goproxy.cn,https://proxy.golang.org,direct +ENV GOSUMDB=off +ENV GO111MODULE=on -```markdown -# SDK Generator - AI 驱动的 SDK 代码生成器 +RUN apk add --no-cache git make -一款基于 AI 大模型的 SDK 代码生成工具,通过上传 API 文档自动生成 Go 语言的 SDK 客户端或服务端骨架代码。 +COPY go.mod go.sum ./ -## ✨ 核心功能 +# ✅ 先尝试下载依赖,如果失败则重试 +RUN go mod download || go mod download -- 📄 **文档精炼**:上传 API 文档(支持 .md / .txt / .doc / .docx / .pdf),自动提取接口信息 -- 🚀 **代码生成**:支持两种生成模式 - - **客户端 SDK**:根据接口文档生成 Go SDK 客户端代码 - - **服务端骨架**:根据对接文档生成 Go HTTP 服务端骨架(Fiber 框架) -- 🔐 **加密算法**:集成常用加密算法(SM2/SM3/SM4、RSA、AES 等) -- 📋 **任务管理**:异步任务队列,实时查看生成进度和状态 -- 📊 **用量统计**:记录每次生成的 Token 用量,支持按步骤查看详情 -- 🔗 **代码仓库**:生成完成后自动推送到 Git 仓库(Gitea 等) +COPY . . -## 🏗️ 技术架构 +# 🔧 修改这里:指向 cmd/server 目录 +RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build \ + -ldflags="-s -w" \ + -o /app/sdk-generator \ + ./cmd/server -### 后端 -- **语言**:Go 1.26 -- **Web 框架**:Fiber v2 -- **AI 集成**:OpenAI 兼容 API(支持豆包、DeepSeek 等) -- **数据库**:SQLite(可扩展) -- **文件存储**:本地文件系统 +# ============================================================ +# 阶段2: 运行 +# ============================================================ +FROM alpine:latest -### 前端 -- **技术栈**:原生 HTML + CSS + JavaScript -- **交互**:Modal 弹窗、实时进度轮询、Markdown 渲染 +RUN apk add --no-cache ca-certificates tzdata git go -## 📁 项目结构 +ENV TZ=Asia/Shanghai +ENV GOPROXY=https://goproxy.cn,https://proxy.golang.org,direct +ENV GOSUMDB=off -``` -sdk-generator/ -├── cmd/ -│ └── server/ -│ └── main.go # 服务启动入口 -├── internal/ -│ ├── call/ -│ │ └── call.go # LLM 调用封装 -│ ├── config/ -│ │ └── config.go # 配置管理 -│ ├── extractor/ -│ │ └── extractor.go # 代码块提取 -│ ├── handler/ -│ │ ├── api_handler.go # API 路由处理 -│ │ └── page_handler.go # 页面渲染 -│ ├── models/ -│ │ └── task.go # 数据模型 -│ ├── postprocess/ -│ │ └── postprocess.go # 代码后处理(格式化、编译检查) -│ ├── prompts/ -│ │ ├── generate.go # 生成 Prompt 模板 -│ │ └── validate.go # 验证 Prompt 模板 -│ ├── refiner/ -│ │ └── refiner.go # 文档精炼 -│ ├── service/ -│ │ └── generator.go # 核心业务逻辑 -│ └── validator/ -│ └── validator.go # 代码验证 -├── web/ -│ ├── static/ -│ │ ├── css/ -│ │ │ └── style.css # 样式文件 -│ │ └── js/ -│ │ └── app.js # 前端逻辑 -│ └── templates/ -│ └── index.html # 主页面 -├── outputs/ # 生成的 SDK 输出目录 -├── uploads/ # 临时上传目录 -├── Dockerfile -├── docker-compose.yml -├── go.mod -├── go.sum -└── README.md -``` +RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone -## 🚀 快速开始 +RUN adduser -D -g '' appuser -### 前置依赖 +WORKDIR /app -- Go 1.26+ -- Docker(可选) -- 大模型 API Key(豆包/DeepSeek/OpenAI 等) +COPY --from=builder /app/sdk-generator /app/sdk-generator +COPY --chown=appuser:appuser ./web /app/web -### 本地运行 +RUN mkdir -p /app/outputs /app/uploads && \ + chown -R appuser:appuser /app -```bash -# 1. 克隆项目 -git clone -cd sdk-generator +USER appuser -# 2. 下载依赖 -go mod download +EXPOSE 8080 -# 3. 配置环境变量 -export DOUBAO_API_KEY=your_api_key -export DOUBAO_BASE_URL=https://ark.cn-beijing.volces.com/api/v3 -export DOUBAO_MODEL=doubao-seed-evolving +HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ + CMD wget --no-verbose --tries=1 --spider http://localhost:8080/health || exit 1 -# 4. 启动服务 -go run cmd/server/main.go - -# 5. 访问 -# 浏览器打开 http://localhost:8080 -``` - -### Docker 运行 - -```bash -# 1. 构建镜像 -docker build -t sdk-generator . - -# 2. 运行容器 -docker run -d \ - -p 8080:8080 \ - -e DOUBAO_API_KEY=your_api_key \ - -e DOUBAO_BASE_URL=https://ark.cn-beijing.volces.com/api/v3 \ - -e DOUBAO_MODEL=doubao-seed-evolving \ - -v $(pwd)/outputs:/app/outputs \ - --name sdk-generator \ - sdk-generator - -# 或使用 docker-compose -docker-compose up -d -``` - -## 📖 使用指南 - -### 1. 添加文档实例 - -1. 点击「添加文档实例」 -2. 上传 API 文档(支持 .md / .txt / .doc / .docx / .pdf) -3. 填写 API Key、Base URL、大模型名称 -4. 点击「精炼并保存」,系统会自动提取接口信息 - -### 2. 生成代码 - -1. 在文档列表中找到目标文档 -2. 点击「生成」按钮 -3. 选择需要实现的接口(可多选) -4. 填写: - - 仓库名称(如 `marketing-sdk`) - - 生成类型(客户端 SDK / 服务端骨架) - - API Key、Base URL、大模型名称 -5. 点击「生成代码」提交任务 - -### 3. 查看进度 - -- 页面会实时显示生成进度(百分比 + 状态文字) -- 日志区域显示详细的执行步骤 -- 生成完成后可通过「下载 SDK」或「查看代码仓库」获取结果 - -### 4. 历史任务 - -- 点击文档的「历史」按钮查看所有生成任务 -- 点击任务可查看详情(接口列表、Token 用量等) - -## 🔌 API 接口 - -| 接口 | 方法 | 说明 | -|------|------|------| -| `/api/v1/refine` | POST | 精炼文档(上传 + AI 提取) | -| `/api/v1/refine/list` | POST | 获取文档实例列表 | -| `/api/v1/refine/update` | POST | 更新文档内容 | -| `/api/v1/generate` | POST | 提交代码生成任务 | -| `/api/v1/tasks/{task_id}` | GET | 查询任务状态和进度 | -| `/api/v1/tasks/{task_id}/download` | GET | 下载生成的代码包 | -| `/api/v1/tasks/list` | POST | 获取历史任务列表 | -| `/api/v1/tasks/{task_id}/detail` | GET | 获取任务详情 | - -### 生成任务请求示例 - -```bash -curl -X POST /api/v1/generate \ - -H "Content-Type: application/x-www-form-urlencoded" \ - -d "instance_id=xxx" \ - -d "llm_api_key=xxx" \ - -d "llm_base_url=https://ark.cn-beijing.volces.com/api/v3" \ - -d "llm_model=doubao-seed-evolving" \ - -d "desc=my-sdk" \ - -d "code_type=go" \ - -d "generate_type=1" \ - -d "interfaces=[{\"method\":\"POST\",\"summary\":\"创建订单\"}]" -``` - -### 查询任务状态响应示例 - -```json -{ - "code": 200, - "data": { - "Task": { - "task_id": "xxx", - "task_status": "generateCode", - "desc": "my-sdk", - "repo_url": "https://gitea.example.com/ai_sdk/my-sdk" - }, - "percent": 60, - "status_desc": "生成代码中..." - }, - "message": "成功" -} -``` - -## 🔐 支持的加密算法 - -| 算法 | 类型 | 说明 | -|------|------|------| -| **SM2** | 非对称加密 | 国密签名/加密 | -| **SM3** | 哈希算法 | 国密摘要计算 | -| **SM4** | 对称加密 | 国密 CBC/ECB 模式 | -| **RSA** | 非对称加密 | 签名/PKCS1/PKCS8 | -| **AES** | 对称加密 | CBC/ECB 模式 | -| **HMAC-SHA256** | 哈希算法 | 签名验证 | - -## 🛠️ 配置说明 - -### 环境变量 - -| 变量 | 说明 | 默认值 | -|------|------|--------| -| `PORT` | 服务端口 | `8080` | -| `DOUBAO_API_KEY` | 大模型 API Key | - | -| `DOUBAO_BASE_URL` | API 地址 | `https://ark.cn-beijing.volces.com/api/v3` | -| `DOUBAO_MODEL` | 模型名称 | `doubao-seed-evolving` | -| `OUTPUT_DIR` | 输出目录 | `./outputs` | -| `UPLOAD_DIR` | 上传目录 | `./uploads` | -| `MAX_TOKENS` | 最大输出 Token | `65536` | - -## 📦 依赖库 - -| 库 | 用途 | -|----|------| -| `github.com/gofiber/fiber/v2` | Web 框架 | -| `github.com/sashabaranov/go-openai` | OpenAI API 客户端 | -| `github.com/gofiber/template/html/v2` | HTML 模板引擎 | -| `github.com/google/uuid` | UUID 生成 | -| `github.com/yuin/goldmark` | Markdown 解析 | -| `github.com/tjfoc/gmsm` | 国密算法(SM2/SM3/SM4) | - -## 🤝 贡献指南 - -1. Fork 本仓库 -2. 创建特性分支 (`git checkout -b feature/amazing-feature`) -3. 提交更改 (`git commit -m 'Add some amazing feature'`) -4. 推送到分支 (`git push origin feature/amazing-feature`) -5. 创建 Pull Request - -## 📝 License - -MIT License - -## 📧 联系方式 - -如有问题,请提交 Issue 或联系项目维护者。 - ---- - -**Made with ❤️ by AI SDK Generator Team** -``` \ No newline at end of file +ENTRYPOINT ["/app/sdk-generator"] \ No newline at end of file diff --git a/README.md b/README.md index 58e000c..2d29b96 100644 --- a/README.md +++ b/README.md @@ -1,23 +1,262 @@ + +## README.md + +```markdown +# SDK Generator - AI 驱动的 SDK 代码生成器 + +一款基于 AI 大模型的 SDK 代码生成工具,通过上传 API 文档自动生成 Go 语言的 SDK 客户端或服务端骨架代码。 + +## ✨ 核心功能 + +- 📄 **文档精炼**:上传 API 文档(支持 .md / .txt / .doc / .docx / .pdf),自动提取接口信息 +- 🚀 **代码生成**:支持两种生成模式 + - **客户端 SDK**:根据接口文档生成 Go SDK 客户端代码 + - **服务端骨架**:根据对接文档生成 Go HTTP 服务端骨架(Fiber 框架) +- 🔐 **加密算法**:集成常用加密算法(SM2/SM3/SM4、RSA、AES 等) +- 📋 **任务管理**:异步任务队列,实时查看生成进度和状态 +- 📊 **用量统计**:记录每次生成的 Token 用量,支持按步骤查看详情 +- 🔗 **代码仓库**:生成完成后自动推送到 Git 仓库(Gitea 等) + +## 🏗️ 技术架构 + +### 后端 +- **语言**:Go 1.26 +- **Web 框架**:Fiber v2 +- **AI 集成**:OpenAI 兼容 API(支持豆包、DeepSeek 等) +- **数据库**:SQLite(可扩展) +- **文件存储**:本地文件系统 + +### 前端 +- **技术栈**:原生 HTML + CSS + JavaScript +- **交互**:Modal 弹窗、实时进度轮询、Markdown 渲染 + +## 📁 项目结构 + +``` +sdk-generator/ +├── cmd/ +│ └── server/ +│ └── main.go # 服务启动入口 +├── internal/ +│ ├── call/ +│ │ └── call.go # LLM 调用封装 +│ ├── config/ +│ │ └── config.go # 配置管理 +│ ├── extractor/ +│ │ └── extractor.go # 代码块提取 +│ ├── handler/ +│ │ ├── api_handler.go # API 路由处理 +│ │ └── page_handler.go # 页面渲染 +│ ├── models/ +│ │ └── task.go # 数据模型 +│ ├── postprocess/ +│ │ └── postprocess.go # 代码后处理(格式化、编译检查) +│ ├── prompts/ +│ │ ├── generate.go # 生成 Prompt 模板 +│ │ └── validate.go # 验证 Prompt 模板 +│ ├── refiner/ +│ │ └── refiner.go # 文档精炼 +│ ├── service/ +│ │ └── generator.go # 核心业务逻辑 +│ └── validator/ +│ └── validator.go # 代码验证 +├── web/ +│ ├── static/ +│ │ ├── css/ +│ │ │ └── style.css # 样式文件 +│ │ └── js/ +│ │ └── app.js # 前端逻辑 +│ └── templates/ +│ └── index.html # 主页面 +├── outputs/ # 生成的 SDK 输出目录 +├── uploads/ # 临时上传目录 +├── Dockerfile +├── docker-compose.yml +├── go.mod +├── go.sum +└── README.md +``` + +## 🚀 快速开始 + +### 前置依赖 + +- Go 1.26+ +- Docker(可选) +- 大模型 API Key(豆包/DeepSeek/OpenAI 等) + +### 本地运行 + +```bash +# 1. 克隆项目 +git clone +cd sdk-generator + +# 2. 下载依赖 +go mod download + +# 3. 配置环境变量 +export DOUBAO_API_KEY=your_api_key +export DOUBAO_BASE_URL=https://ark.cn-beijing.volces.com/api/v3 +export DOUBAO_MODEL=doubao-seed-evolving + +# 4. 启动服务 +go run cmd/server/main.go + +# 5. 访问 +# 浏览器打开 http://localhost:8080 +``` + +### Docker 运行 + +```bash +# 1. 构建镜像 +docker build -t sdk-generator . + +# 2. 运行容器 +docker run -d \ + -p 8080:8080 \ + -e DOUBAO_API_KEY=your_api_key \ + -e DOUBAO_BASE_URL=https://ark.cn-beijing.volces.com/api/v3 \ + -e DOUBAO_MODEL=doubao-seed-evolving \ + -v $(pwd)/outputs:/app/outputs \ + --name sdk-generator \ + sdk-generator + +# 或使用 docker-compose +docker-compose up -d +``` + +## 📖 使用指南 + +### 1. 添加文档实例 + +1. 点击「添加文档实例」 +2. 上传 API 文档(支持 .md / .txt / .doc / .docx / .pdf) +3. 填写 API Key、Base URL、大模型名称 +4. 点击「精炼并保存」,系统会自动提取接口信息 + +### 2. 生成代码 + +1. 在文档列表中找到目标文档 +2. 点击「生成」按钮 +3. 选择需要实现的接口(可多选) +4. 填写: + - 仓库名称(如 `marketing-sdk`) + - 生成类型(客户端 SDK / 服务端骨架) + - API Key、Base URL、大模型名称 +5. 点击「生成代码」提交任务 + +### 3. 查看进度 + +- 页面会实时显示生成进度(百分比 + 状态文字) +- 日志区域显示详细的执行步骤 +- 生成完成后可通过「下载 SDK」或「查看代码仓库」获取结果 + +### 4. 历史任务 + +- 点击文档的「历史」按钮查看所有生成任务 +- 点击任务可查看详情(接口列表、Token 用量等) + +## 🔌 API 接口 + +| 接口 | 方法 | 说明 | +|------|------|------| +| `/api/v1/refine` | POST | 精炼文档(上传 + AI 提取) | +| `/api/v1/refine/list` | POST | 获取文档实例列表 | +| `/api/v1/refine/update` | POST | 更新文档内容 | +| `/api/v1/generate` | POST | 提交代码生成任务 | +| `/api/v1/tasks/{task_id}` | GET | 查询任务状态和进度 | +| `/api/v1/tasks/{task_id}/download` | GET | 下载生成的代码包 | +| `/api/v1/tasks/list` | POST | 获取历史任务列表 | +| `/api/v1/tasks/{task_id}/detail` | GET | 获取任务详情 | + +### 生成任务请求示例 + +```bash +curl -X POST /api/v1/generate \ + -H "Content-Type: application/x-www-form-urlencoded" \ + -d "instance_id=xxx" \ + -d "llm_api_key=xxx" \ + -d "llm_base_url=https://ark.cn-beijing.volces.com/api/v3" \ + -d "llm_model=doubao-seed-evolving" \ + -d "desc=my-sdk" \ + -d "code_type=go" \ + -d "generate_type=1" \ + -d "interfaces=[{\"method\":\"POST\",\"summary\":\"创建订单\"}]" +``` + +### 查询任务状态响应示例 + +```json { -"doc_type" : "client_sdk", -"refined_doc" : "## 文档概述\n- 文档类型:client_sdk\n- 接口总数:4个(3个调用接口 + 1个回调通知接口)\n- 说明:本文档描述行内(调用方)调用供应商权益接口的规范,包含下单、查询、充值及回调通知\n\n## 认证与安全\n\n### 前置约定(需双方协商)\n- SM3 salt(盐值)\n- SM4 key(对称加密密钥)\n- 供应商侧测试及生产环境的 IP/域名和接口地址\n- 行方回调通知接口地址\n\n### 签名规则\n1. 将 `timestamp` + `encryptedData` 字符串拼接\n2. 使用 SM3 盐值加密(SmUtil.sm3WithSalt)进行签名\n\n**签名示例(Java Hutool):**\n```java\nimport cn.hutool.crypto.SmUtil;\nString sign = SmUtil.sm3WithSalt(sm3Salt.getBytes()).digestHex(timestamp + encryptedData);\n```\n\n### 加密规则\n- 业务数据(JSON格式)使用 SM4 加密后放入 `encryptedData` 字段\n- 响应中的 `data` 字段也是 SM4 加密的 JSON 字符串,需解密后使用\n\n### 通用请求参数(所有接口共用)\n\n#### 请求头\n| 参数名 | 必填 | 类型 | 描述 | 取值说明 |\n|--------|------|------|------|----------|\n| timestamp | 是 | String | 时间戳 | 毫秒级时间戳 |\n| sign | 是 | String | 签名 | 见签名规则 |\n\n#### 请求体\n| 参数名 | 必填 | 类型 | 描述 | 取值说明 |\n|--------|------|------|------|----------|\n| encryptedData | 是 | String | 加密数据 | JSON格式业务数据进行SM4加密 |\n\n### 通用响应参数(所有接口共用)\n| 参数名 | 必填 | 类型 | 描述 | 说明 |\n|--------|------|------|------|------|\n| code | 是 | int | 返回状态编码 | 0成功 -1失败 |\n| msg | 是 | String | 返回错误信息 | |\n| data | 否 | Object | 返回数据 | JSON格式业务数据进行SM4加密 |\n\n## 接口列表\n\n### 接口 1:卡券/直充权益下单接口\n- 路径:待供应商提供(测试/生产环境)\n- 方法:POST\n- 描述:适用于卡密、直充商品下单\n- Content-Type:application/json\n\n#### 请求参数(业务数据,加密前)\n| 参数名 | 必填 | 类型 | 描述 | 取值说明 |\n|--------|------|------|------|----------|\n| actCode | 是 | String | 活动code | 可约定为各供应商的项目编号和密钥的拼接加密字符串 |\n| goodsCode | 是 | String | 商品code | 供应商商品编号 |\n| actOrderNum | 是 | String | 活动方订单号 | 唯一,行内活动订单号 |\n| account | 否 | String | 充值账号 | |\n| callbackUrl | 否 | String | 回调地址 | |\n\n#### 响应参数(data解密后)\n| 参数名 | 必填 | 类型 | 描述 | 说明 |\n|--------|------|------|------|------|\n| orderNo | 是 | String | 权益订单号 | 唯一,供应商订单号 |\n| couponNo | 否 | String | 卡号 | 卡券/短链类商品返回 |\n| couponCode | 否 | String | 卡密 | 卡券类商品返回 |\n| status | 是 | Integer | 状态 | -1发放中 0成功 1失败 2已核销 3已过期 |\n| expireTime | 否 | String | 有效期 | 卡券/短链类商品返回,格式:yyyy-MM-dd HH:mm:SS |\n\n#### 示例\n\n**请求示例(原始业务参数,加密前):**\n```json\n{\n \"actCode\": \"ACT001\",\n \"goodsCode\": \"123456\",\n \"actOrderNum\": \"00001\",\n \"account\": \"19912345678\",\n \"callbackUrl\": \"https://xxx/notice\"\n}\n```\n\n**响应示例(data解密后):**\n```json\n{\n \"code\": 0,\n \"msg\": \"请求成功\",\n \"data\": \"{\\\"orderNo\\\":\\\"HM17575805323790000127073398f3772c00\\\",\\\"expireTime\\\":\\\"2025-09-12 00:00:00\\\",\\\"couponNo\\\":\\\"27073398f3772c00\\\",\\\"couponCode\\\":\\\"27073398f3772c00\\\",\\\"status\\\":1}\"\n}\n```\n\n### 接口 2:卡券/直充/微信立减金订单查询接口\n- 路径:待供应商提供(测试/生产环境)\n- 方法:POST\n- 描述:行内通过供应商订单号查询订单状态\n- Content-Type:application/json\n\n#### 请求参数(业务数据,加密前)\n| 参数名 | 必填 | 类型 | 描述 | 取值说明 |\n|--------|------|------|------|----------|\n| actCode | 是 | String | 活动code | 可约定为各供应商的项目编号和密钥的拼接加密字符串 |\n| orderNo | 是 | String | 供应商订单号 | |\n\n#### 响应参数(data解密后)\n| 参数名 | 必填 | 类型 | 描述 | 说明 |\n|--------|------|------|------|------|\n| orderNo | 是 | String | 权益订单号 | 唯一,供应商订单号 |\n| status | 是 | Integer | 订单状态 | -1发放中 0成功 1失败 2已核销 3已过期 |\n| account | 否 | String | 充值账号 | 直充类型时存在 |\n| cardInfo | 否 | Object | 卡券信息 | 卡券/短链类型时存在 |\n| - couponNo | 是 | String | 卡号/短链 | |\n| - couponCode | 是 | String | 卡密 | |\n| - expireTime | 是 | String | 过期时间 | 格式:yyyy-MM-dd HH:mm:ss |\n| couponId | 是 | String | 优惠id | 微信立减金类型时存在 |\n\n#### 示例\n\n**请求示例(原始业务参数,加密前):**\n```json\n{\n \"actCode\": \"FBG6vdYqGE4mGX7EH/woEg==\",\n \"orderNo\": \"HM1757046717684000102707339840b23222\"\n}\n```\n\n**响应示例(data解密后):**\n```json\n{\n \"code\": 0,\n \"msg\": \"请求成功\",\n \"data\": \"{\\\"orderNo\\\":\\\"HM1757046717684000102707339840b23222\\\",\\\"cardInfo\\\":\\\"{\\\\\\\"couponNo\\\\\\\":\\\\\\\"11111\\\\\\\",\\\\\\\"couponCode\\\\\\\":\\\\\\\"12334\\\\\\\",\\\\\\\"expireTime\\\\\\\":\\\\\\\"2029-03-09 00:00:00\\\\\\\"}\\\",\\\"status\\\":3}\"\n}\n```\n\n### 接口 3:微信立减金订单充值接口\n- 路径:待供应商提供(测试/生产环境)\n- 方法:POST\n- 描述:微信立减金订单充值\n- Content-Type:application/json\n\n#### 请求参数(业务数据,加密前)\n| 参数名 | 必填 | 类型 | 描述 | 取值说明 |\n|--------|------|------|------|----------|\n| actCode | 是 | String | 活动code | 可约定为各供应商的项目编号和密钥的拼接加密字符串 |\n| orderNo | 是 | String | 供应商订单号 | |\n| goodsCode | 是 | String | 商品code | 供应商商品编号 |\n| actOrderNum | 是 | String | 活动方订单号 | 唯一,行内订单号 |\n| appId | 是 | String | 公众账号ID | |\n| openId | 是 | String | 微信用户标识 | 需要与 appId 绑定(同一个 appId 下的 openId) |\n| callbackUrl | 否 | String | 回调地址 | |\n\n#### 响应参数(data解密后)\n| 参数名 | 必填 | 类型 | 描述 | 说明 |\n|--------|------|------|------|------|\n| orderNo | 是 | String | 权益订单号 | 唯一,供应商订单号 |\n| status | 是 | Integer | 订单状态 | -1发放中 0成功 1失败 2已核销 3已过期 |\n| couponId | 是 | String | 微信优惠id | 微信该批次立减金的优惠id |\n\n#### 示例\n\n**请求示例(原始业务参数,加密前):**\n```json\n{\n \"actCode\": \"FBG6vdYqGE4mGX7EH/woEg==\",\n \"goodsCode\": \"0001\",\n \"actOrderNum\": \"0001\",\n \"openId\": \"0001\",\n \"appId\": \"00001\"\n}\n```\n\n**响应示例(data解密后):**\n```json\n{\n \"code\": 0,\n \"msg\": \"请求成功\",\n \"data\": \"{\\\"orderNo\\\":\\\"0001\\\",\\\"couponId\\\":\\\"123456\\\",\\\"status\\\":1}\"\n}\n```\n\n**失败响应示例:**\n```json\n{\n \"code\": -1,\n \"msg\": \"库存不足\",\n \"data\": null\n}\n```\n\n## 回调通知\n\n### 接口 4:卡券/直充/微信立减金充值结果通知接口\n- 说明:供应商主动回调行内,通知充值结果\n- 路径:行内提供回调地址\n- 方法:POST\n- Content-Type:application/json\n\n#### 请求参数(业务数据,加密前)\n| 参数名 | 必填 | 类型 | 描述 | 取值说明 |\n|--------|------|------|------|----------|\n| orderNo | 是 | String | 供应商订单号 | 唯一,供应商订单号 |\n| actOrderNum | 是 | String | 活动方订单号 | 唯一,行内订单号 |\n| status | 是 | Integer | 订单状态 | -1发放中 0成功 1失败 2已核销 3已过期 |\n| account | 否 | String | 直充账号 | 直充类型商品时存在 |\n| cardInfo | 否 | Object | 卡券信息 | 卡券/短链类型商品时存在 |\n| - couponNo | 是 | String | 卡号/短链 | |\n| - couponCode | 是 | String | 卡密 | |\n| - expireTime | 是 | String | 卡券过期时间 | |\n| couponId | 否 | String | 微信优惠id | 微信立减金类型商品时存在 |\n\n#### 回调请求示例(原始业务参数,加密前)\n```json\n{\n \"orderNo\": \"HM202509291010001\",\n \"actOrderNum\": \"XY2025092910100001\",\n \"status\": 3,\n \"account\": \"19912345678\"\n}\n```\n\n#### 响应要求\n| 状态码 | 返回内容 | 说明 |\n|--------|----------|------|\n| 200 | ok | 接收成功,系统认为回调已处理成功,不会重试 |\n| 其它 | 任意内容 | 系统认为接收失败,将按重试策略重试,最多3次 |\n\n## 错误码\n| 错误码 | 说明 | 处理建议 |\n|--------|------|----------|\n| 0 | 成功 | - |\n| -1 | 失败 | 根据 msg 字段判断具体错误原因 |\n\n## 订单状态枚举\n| 状态值 | 说明 |\n|--------|------|\n| -1 | 发放中 |\n| 0 | 成功 |\n| 1 | 失败 |\n| 2 | 已核销 |\n| 3 | 已过期 |", -"has_authentication" : true, -"interfaces" : [ { -"method" : "POST", -"path" : "待供应商提供", -"summary" : "卡券/直充权益下单接口" -}, { -"method" : "POST", -"path" : "待供应商提供", -"summary" : "卡券/直充/微信立减金订单查询接口" -}, { -"method" : "POST", -"path" : "待供应商提供", -"summary" : "微信立减金订单充值接口" -}, { -"method" : "POST", -"path" : "行内提供回调地址", -"summary" : "卡券/直充/微信立减金充值结果通知接口(回调)" -} ], -"reason" : "文档主要描述行内(调用方)如何调用供应商的3个接口(下单、查询、充值),包含请求方式、参数、签名规则、加密方式等调用方所需信息,同时附带一个供应商回调行内的通知接口说明,整体属于 client_sdk 类型。" -} \ No newline at end of file + "code": 200, + "data": { + "Task": { + "task_id": "xxx", + "task_status": "generateCode", + "desc": "my-sdk", + "repo_url": "https://gitea.example.com/ai_sdk/my-sdk" + }, + "percent": 60, + "status_desc": "生成代码中..." + }, + "message": "成功" +} +``` + +## 🔐 支持的加密算法 + +| 算法 | 类型 | 说明 | +|------|------|------| +| **SM2** | 非对称加密 | 国密签名/加密 | +| **SM3** | 哈希算法 | 国密摘要计算 | +| **SM4** | 对称加密 | 国密 CBC/ECB 模式 | +| **RSA** | 非对称加密 | 签名/PKCS1/PKCS8 | +| **AES** | 对称加密 | CBC/ECB 模式 | +| **HMAC-SHA256** | 哈希算法 | 签名验证 | + +## 🛠️ 配置说明 + +### 环境变量 + +| 变量 | 说明 | 默认值 | +|------|------|--------| +| `PORT` | 服务端口 | `8080` | +| `DOUBAO_API_KEY` | 大模型 API Key | - | +| `DOUBAO_BASE_URL` | API 地址 | `https://ark.cn-beijing.volces.com/api/v3` | +| `DOUBAO_MODEL` | 模型名称 | `doubao-seed-evolving` | +| `OUTPUT_DIR` | 输出目录 | `./outputs` | +| `UPLOAD_DIR` | 上传目录 | `./uploads` | +| `MAX_TOKENS` | 最大输出 Token | `65536` | + +## 📦 依赖库 + +| 库 | 用途 | +|----|------| +| `github.com/gofiber/fiber/v2` | Web 框架 | +| `github.com/sashabaranov/go-openai` | OpenAI API 客户端 | +| `github.com/gofiber/template/html/v2` | HTML 模板引擎 | +| `github.com/google/uuid` | UUID 生成 | +| `github.com/yuin/goldmark` | Markdown 解析 | +| `github.com/tjfoc/gmsm` | 国密算法(SM2/SM3/SM4) | + +## 🤝 贡献指南 + +1. Fork 本仓库 +2. 创建特性分支 (`git checkout -b feature/amazing-feature`) +3. 提交更改 (`git commit -m 'Add some amazing feature'`) +4. 推送到分支 (`git push origin feature/amazing-feature`) +5. 创建 Pull Request + +## 📝 License + +MIT License + +## 📧 联系方式 + +如有问题,请提交 Issue 或联系项目维护者。 + +--- + +**Made with ❤️ by AI SDK Generator Team**