From 2253dc739afb7810525a52cede5406a1f39a5a42 Mon Sep 17 00:00:00 2001 From: danial Date: Sat, 18 Oct 2025 23:41:31 +0800 Subject: [PATCH] =?UTF-8?q?feat(jd-cookie):=E4=BC=98=E5=8C=96=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=88=9B=E5=BB=BA=E9=80=BB=E8=BE=91=E4=B8=8E=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E7=AE=A1=E7=90=86-=20=E6=96=B0=E5=A2=9E=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=8A=B6=E6=80=81=20OrderStatusJDOrderFailed=E7=94=A8?= =?UTF-8?q?=E4=BA=8E=E6=A0=87=E8=AF=86=E4=BA=AC=E4=B8=9C=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=E5=A4=B1=E8=B4=A5=20-=20=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E8=AE=A2=E5=8D=95=E5=8F=98=E6=9B=B4=E7=B1=BB=E5=9E=8B=20OrderC?= =?UTF-8?q?hangeTypeJDOrderFailed=20=E7=94=A8=E4=BA=8E=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E4=B8=8B=E5=8D=95=E5=A4=B1=E8=B4=A5=E4=BA=8B=E4=BB=B6=20-=20?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=AE=A2=E5=8D=95=E5=88=9B=E5=BB=BA=E9=80=BB?= =?UTF-8?q?=E8=BE=91=EF=BC=8C=E6=94=AF=E6=8C=81=E5=A4=B1=E8=B4=A5=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E9=87=8D=E8=AF=95=E6=9C=BA=E5=88=B6=20-=20=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=20RecordOrderHistoryReq=20=E7=BB=93=E6=9E=84=E4=BD=93?= =?UTF-8?q?=E7=BB=9F=E4=B8=80=E8=AE=B0=E5=BD=95=E8=AE=A2=E5=8D=95=E5=8F=98?= =?UTF-8?q?=E6=9B=B4=E5=8E=86=E5=8F=B2=E5=8F=82=E6=95=B0=20-=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E6=95=B0=E6=8D=AE=E5=BA=93=E8=A1=A8=E7=BB=93=E6=9E=84?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E5=AD=97=E6=AE=B5=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=E5=92=8C=E7=B4=A2=E5=BC=95=20-=20=E6=9B=B4=E6=96=B0=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E5=88=9B=E5=BB=BA=E9=80=BB=E8=BE=91=EF=BC=8C=E5=88=86?= =?UTF-8?q?=E7=A6=BB=E6=9C=AC=E5=9C=B0=E8=AE=A2=E5=8D=95=E4=B8=8E=E4=BA=AC?= =?UTF-8?q?=E4=B8=9C=E8=AE=A2=E5=8D=95=E5=88=9B=E5=BB=BA=E6=B5=81=E7=A8=8B?= =?UTF-8?q?-=20=E5=A2=9E=E5=8A=A0=E5=A4=B1=E8=B4=A5=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=88=9B=E5=BB=BA=E4=BA=AC=E4=B8=9C=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=9A=84=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=20-=20?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=AE=A2=E5=8D=95=E7=8A=B6=E6=80=81=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E9=80=BB=E8=BE=91=EF=BC=8C=E6=94=AF=E6=8C=81=E6=9B=B4?= =?UTF-8?q?=E5=A4=9A=E7=8A=B6=E6=80=81=E5=A4=84=E7=90=86=20-=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E8=AE=A2=E5=8D=95=E5=8E=86=E5=8F=B2=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E6=96=B9=E5=BC=8F=EF=BC=8C=E5=A2=9E=E5=8A=A0=E5=A4=87=E6=B3=A8?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=94=AF=E6=8C=81=20-=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E5=AD=97=E7=AC=A6=E9=9B=86=E4=B8=BA?= =?UTF-8?q?=20utf8mb4=5Funicode=5Fci=20=E6=8F=90=E5=8D=87=E5=85=BC?= =?UTF-8?q?=E5=AE=B9=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/settings.local.json | 3 +- .../content/业务逻辑层架构/业务逻辑层架构.md | 6 +- .qoder/repowiki/zh/content/中间件与拦截器.md | 100 +- .../repowiki/zh/content/京东订单导出功能.md | 292 + .../repowiki/zh/content/外部集成/外部集成.md | 111 +- .../数据模型与ORM映射/数据模型与ORM映射.md | 252 +- .qoder/repowiki/zh/content/日志与监控.md | 11 +- .qoder/repowiki/zh/content/订单回调功能.md | 333 + .../repowiki/zh/content/部署配置/部署配置.md | 23 +- .../repowiki/zh/meta/repowiki-metadata.json | 11708 +++++++++++++++- ORDER_CHANGE_HISTORY.md | 322 + ORDER_CREATE_REFACTOR.md | 197 + ORDER_RETRY_MECHANISM.md | 255 + internal/boot/boot_enums.go | 4 +- internal/consts/jd_cookie.go | 45 +- internal/logic/jd_cookie/order_create.go | 257 +- internal/logic/jd_cookie/order_jd.go | 35 +- internal/logic/jd_cookie/order_query.go | 50 +- internal/logic/jd_cookie/order_utils.go | 39 +- internal/logic/jd_cookie/rotation.go | 15 +- internal/model/jd_cookie.go | 8 + internal/service/jd_cookie.go | 2 +- sql/add_order_fields.sql | 14 + sql/jd_cookie_tables.sql | 36 +- 24 files changed, 13913 insertions(+), 205 deletions(-) create mode 100644 .qoder/repowiki/zh/content/京东订单导出功能.md create mode 100644 .qoder/repowiki/zh/content/订单回调功能.md create mode 100644 ORDER_CHANGE_HISTORY.md create mode 100644 ORDER_CREATE_REFACTOR.md create mode 100644 ORDER_RETRY_MECHANISM.md create mode 100644 sql/add_order_fields.sql diff --git a/.claude/settings.local.json b/.claude/settings.local.json index c76ab48f..1aad6329 100644 --- a/.claude/settings.local.json +++ b/.claude/settings.local.json @@ -6,7 +6,8 @@ "Bash(timeout:*)", "WebSearch", "mcp__fetch__fetch", - "Bash(find:*)" + "Bash(find:*)", + "mcp__mysql-mcp-sever__query" ], "deny": [], "ask": [] diff --git a/.qoder/repowiki/zh/content/业务逻辑层架构/业务逻辑层架构.md b/.qoder/repowiki/zh/content/业务逻辑层架构/业务逻辑层架构.md index a591b5aa..cee91fd1 100644 --- a/.qoder/repowiki/zh/content/业务逻辑层架构/业务逻辑层架构.md +++ b/.qoder/repowiki/zh/content/业务逻辑层架构/业务逻辑层架构.md @@ -21,6 +21,9 @@ - [config.yaml](file://manifest/config/config.yaml) - [order.go](file://internal/logic/jd_cookie/order.go) - *在提交77aff4289e7b60617a6b97873721f586af264581中更新* - [jd_cookie.go](file://internal/service/jd_cookie.go) - *在提交0fdae6a89fef78f6368400b1fe726d987adda7b1中更新* +- [order_create.go](file://internal/logic/jd_cookie/order_create.go) - *在提交bc2d58753b8fe0b4f7150657bf40cfe756ce48de中重构* +- [order_utils.go](file://internal/logic/jd_cookie/order_utils.go) - *在提交8bc2d51c8ba46582286270b3dd85e166f2562e51中优化* +- [order_jd.go](file://internal/logic/jd_cookie/order_jd.go) - *在提交d1b7f907caa0c3c59628241250901cb7239b25a8中新增功能* ## 更新摘要 @@ -29,6 +32,8 @@ - 增加了京东Cookie账户变更历史记录功能的说明 - 修订了京东Cookie相关组件的序列图和流程描述 - 更新了受影响文件的引用来源标记 +- 新增了京东订单支付状态定时检查与卡密提取功能的文档 +- 更新了订单创建逻辑的并发控制机制说明 ## 目录 1. [引言](#引言) @@ -150,7 +155,6 @@ class SysUser { +EditUserRole(ctx context.Context, roleIds []int64, userId int64) (err error) +UserNameOrMobileExists(ctx context.Context, userName string, id ...string) (isExist bool, err error) +GetEditUser(ctx context.Context, id string) (res *model.UserGetEditOutput, err error) -+GetUserInfoById(ctx context.Context, id string, withPwd ...bool) (user *entity.V1SysUser, err error) +ChangePwd(ctx context.Context, input *model.UserChangePwdInput) (err error) +ChangeUserStatus(ctx context.Context, input *model.UserStatusInput) (err error) +DeleteById(ctx context.Context, id string) (err error) diff --git a/.qoder/repowiki/zh/content/中间件与拦截器.md b/.qoder/repowiki/zh/content/中间件与拦截器.md index acbc7392..b397aa5e 100644 --- a/.qoder/repowiki/zh/content/中间件与拦截器.md +++ b/.qoder/repowiki/zh/content/中间件与拦截器.md @@ -4,6 +4,11 @@ **本文档引用的文件** - [auth.go](file://internal/middleware/auth.go) - *在最近的提交中更新* - [error_handler.go](file://internal/middleware/error_handler.go) - *在最近的提交中更新* +- [sys_auth.go](file://internal/service/sys_auth.go) - *定义认证服务接口* +- [sysAuth.go](file://internal/logic/sys_auth/sysAuth.go) - *实现认证服务逻辑* +- [jd_cookie_v1_create_account.go](file://internal/controller/jd_cookie/jd_cookie_v1_create_account.go) - *账户创建控制器* +- [jd_cookie_v1_create_order.go](file://internal/controller/jd_cookie/jd_cookie_v1_create_order.go) - *订单创建控制器* +- [jd_cookie_v1_batch_check.go](file://internal/controller/jd_cookie/jd_cookie_v1_batch_check.go) - *批量检测控制器* - [user_token.go](file://utility/token/user_token.go) - *在认证流程中使用* - [config.go](file://utility/config/config.go) - *在认证流程中使用* - [code.go](file://internal/errHandler/code.go) - *定义错误码* @@ -11,9 +16,12 @@ ## 更新摘要 **已做更改** -- 更新了白名单认证流程,将 `/api/jd-cookie/order/create` 接口添加到白名单 -- 修正了相关文档内容以反映最新的代码状态 -- 更新了白名单认证流程图和相关说明 + +- 更新了认证中间件文档,反映`LoginOnlyIFrame`和`LoginOnlyLogin`认证策略的使用 +- 添加了对`SysAuth`服务接口的详细说明 +- 更新了JD Cookie模块的权限校验说明,包括账户创建和批量检测接口使用`LoginOnlyIFrame` +- 修正了订单创建接口不再需要权限校验的文档说明 +- 更新了相关架构图和序列图以反映最新的认证流程 - 维护了源代码引用跟踪系统 ## 目录 @@ -96,6 +104,26 @@ AuthMiddleware --> IFrameAuth ### 认证中间件分析 认证中间件是kami_backend安全体系的核心,实现了多模式的身份验证机制。该中间件通过`LoginOrIframeAuth`函数协调不同的认证策略,根据请求头中的`tokenFrom`字段选择适当的认证方式。 +#### 认证服务接口 + +系统通过`SysAuth`接口提供统一的认证服务,该接口定义了多种认证策略: + +```go +type ISysAuth interface { + // LoginWithIFrameAndLogin Iframe和账号可以同时登陆 + LoginWithIFrameAndLogin(ctx context.Context) (userInfo *entity.V1SysUser, err error) + LoginWithEverything(ctx context.Context) (output *model.SysAuthLoginWithEverythingOutput, err error) + // LoginOnlyIFrame 只能IFrame登录 + LoginOnlyIFrame(ctx context.Context) (userInfo *entity.V1SysUser, err error) + // LoginOnlyLogin 只能登录 + LoginOnlyLogin(ctx context.Context) (userInfo *entity.V1SysUser, err error) +} +``` + +**本节来源** + +- [sys_auth.go](file://internal/service/sys_auth.go) + #### 认证流程类图 ```mermaid classDiagram @@ -219,6 +247,71 @@ WriteJson --> End **图表来源** - [error_handler.go](file://internal/middleware/error_handler.go#L8-L27) +### JD Cookie模块权限校验更新 + +根据最新的代码变更,JD Cookie模块的权限校验策略已进行调整,具体如下: + +#### 账户创建权限校验 + +账户创建接口现在需要进行iFrame登录权限校验: + +```go +// CreateAccount 创建Cookie账户 +func (c *ControllerV1) CreateAccount(ctx context.Context, req *v1.CreateAccountReq) (res *v1.CreateAccountRes, err error) { + _, err = service.SysAuth().LoginOnlyIFrame(ctx) + if err != nil { + err = errHandler.WrapError(ctx, gcode.CodeNotAuthorized, err, "权限不足") + return + } + // ... 业务逻辑 +} +``` + +**本节来源** + +- [jd_cookie_v1_create_account.go](file://internal/controller/jd_cookie/jd_cookie_v1_create_account.go) + +#### 批量检测权限校验 + +批量检测接口同样需要iFrame登录权限校验: + +```go +// BatchCheck 批量检测Cookie状态 +func (c *ControllerV1) BatchCheck(ctx context.Context, req *v1.BatchCheckReq) (res *v1.BatchCheckRes, err error) { + _, err = service.SysAuth().LoginOnlyIFrame(ctx) + if err != nil { + err = errHandler.WrapError(ctx, gcode.CodeNotAuthorized, err, "权限不足") + return + } + // ... 业务逻辑 +} +``` + +**本节来源** + +- [jd_cookie_v1_batch_check.go](file://internal/controller/jd_cookie/jd_cookie_v1_batch_check.go) + +#### 订单创建权限校验移除 + +订单创建接口不再需要权限校验,已从白名单中移除: + +```go +// CreateOrder 创建订单 +func (c *ControllerV1) CreateOrder(ctx context.Context, req *v1.CreateOrderReq) (res *v1.CreateOrderRes, err error) { + // 无需权限校验 + createOrderReq := &model.CreateOrderReq{ + UserOrderId: req.UserOrderId, + Amount: req.Amount, + Category: req.Category, + } + // ... 业务逻辑 +} +``` + +**本节来源** + +- [jd_cookie_v1_create_order.go](file://internal/controller/jd_cookie/jd_cookie_v1_create_order.go) + ## 依赖分析 kami_backend的中间件系统依赖于多个核心模块,形成了一个紧密耦合但职责分明的架构。认证中间件依赖于token、config和verify模块来实现完整的认证功能,而错误处理中间件则依赖于GoFrame框架的错误处理机制。 @@ -266,6 +359,7 @@ end 2. **认证超时**:检查配置中的Token超时设置,确认Redis缓存是否正常工作。 3. **错误响应格式不一致**:确保所有业务逻辑都使用标准的错误码系统。 4. **iFrame认证失败**:检查前端密钥和IV配置是否正确,确认Token加密方式是否匹配。 +5. **权限不足错误**:确认接口是否需要`LoginOnlyIFrame`或`LoginOnlyLogin`认证,检查认证头是否正确传递。 **本节来源** - [auth.go](file://internal/middleware/auth.go) diff --git a/.qoder/repowiki/zh/content/京东订单导出功能.md b/.qoder/repowiki/zh/content/京东订单导出功能.md new file mode 100644 index 00000000..eff9f162 --- /dev/null +++ b/.qoder/repowiki/zh/content/京东订单导出功能.md @@ -0,0 +1,292 @@ +# 京东订单导出功能 + + +**本文档引用的文件** +- [jd_cookie_v1_export_jd_order.go](file://internal/controller/jd_cookie/jd_cookie_v1_export_jd_order.go) +- [jd_cookie.go](file://internal/service/jd_cookie.go) +- [order_jd.go](file://internal/logic/jd_cookie/order_jd.go) +- [v_1_jd_cookie_jd_order.go](file://internal/model/entity/v_1_jd_cookie_jd_order.go) +- [v_1_jd_cookie_account.go](file://internal/model/entity/v_1_jd_cookie_account.go) +- [jd_cookie.go](file://api/jd_cookie/jd_cookie.go) +- [consts.go](file://internal/consts/jd_cookie.go) + + +## 目录 + +1. [简介](#简介) +2. [项目结构](#项目结构) +3. [核心组件](#核心组件) +4. [架构概述](#架构概述) +5. [详细组件分析](#详细组件分析) +6. [依赖分析](#依赖分析) +7. [性能考虑](#性能考虑) +8. [故障排除指南](#故障排除指南) +9. [结论](#结论) + +## 简介 + +京东订单导出功能是系统中用于将京东订单数据导出为Excel文件的重要功能。该功能允许用户根据订单状态、时间范围和订单ID等条件筛选订单,并将符合条件的订单数据导出为Excel文件,便于后续的数据分析和处理。 + +## 项目结构 + +京东订单导出功能主要分布在以下几个目录中: + +- `internal/controller/jd_cookie/`:包含导出功能的控制器实现 +- `internal/service/jd_cookie.go`:定义导出功能的服务接口 +- `internal/logic/jd_cookie/order_jd.go`:包含导出功能的核心业务逻辑 +- `internal/model/entity/`:包含订单和账户相关的数据模型 + +```mermaid +graph TD +Controller[控制器层] --> Service[服务层] +Service --> Logic[业务逻辑层] +Logic --> DAO[数据访问层] +DAO --> Database[(数据库)] +``` + +**图表来源** + +- [jd_cookie_v1_export_jd_order.go](file://internal/controller/jd_cookie/jd_cookie_v1_export_jd_order.go#L1-L31) +- [jd_cookie.go](file://internal/service/jd_cookie.go#L1-L95) +- [order_jd.go](file://internal/logic/jd_cookie/order_jd.go#L661-L764) + +## 核心组件 + +京东订单导出功能的核心组件包括: + +- **ExportJdOrderReq**:导出请求参数,包含状态、开始时间、结束时间和订单ID等筛选条件 +- **ExportJdOrderRes**:导出响应结果 +- **JdCookieService**:提供导出功能的服务接口 +- **sJdCookie**:实现导出功能的业务逻辑 + +**章节来源** + +- [jd_cookie_v1_export_jd_order.go](file://internal/controller/jd_cookie/jd_cookie_v1_export_jd_order.go#L1-L31) +- [jd_cookie.go](file://internal/service/jd_cookie.go#L85-L90) + +## 架构概述 + +京东订单导出功能采用典型的分层架构,包括控制器层、服务层、业务逻辑层和数据访问层。用户通过API请求触发导出功能,控制器层接收请求并调用服务层,服务层再调用业务逻辑层执行具体的导出操作,最后通过数据访问层从数据库获取订单数据。 + +```mermaid +sequenceDiagram +participant 用户 +participant 控制器 +participant 服务 +participant 业务逻辑 +participant 数据访问 +participant 数据库 +用户->>控制器 : 发送导出请求 +控制器->>服务 : 调用ExportJdOrder +服务->>业务逻辑 : 调用ExportJdOrder +业务逻辑->>数据访问 : 查询订单数据 +数据访问->>数据库 : 执行SQL查询 +数据库-->>数据访问 : 返回订单数据 +数据访问-->>业务逻辑 : 返回查询结果 +业务逻辑->>业务逻辑 : 生成Excel文件 +业务逻辑-->>服务 : 返回文件名和内容 +服务-->>控制器 : 返回导出结果 +控制器->>用户 : 返回文件下载响应 +``` + +**图表来源** + +- [jd_cookie_v1_export_jd_order.go](file://internal/controller/jd_cookie/jd_cookie_v1_export_jd_order.go#L1-L31) +- [order_jd.go](file://internal/logic/jd_cookie/order_jd.go#L661-L764) + +## 详细组件分析 + +### 导出功能分析 + +京东订单导出功能的主要流程如下: + +1. 接收用户请求,解析筛选条件 +2. 根据条件查询数据库中的订单数据 +3. 查询关联的Cookie账户信息 +4. 将数据填充到Excel模板中 +5. 生成Excel文件并返回给用户 + +#### 业务逻辑组件 + +```mermaid +classDiagram +class ExportJdOrderReq { ++string Status ++string StartTime ++string EndTime ++string OrderId +} +class ExportJdOrderRes { ++string FileName ++[]byte Content +} +class JdCookieService { ++ExportJdOrder(ctx, status, startTime, endTime, orderId) (fileName, content, err) +} +class sJdCookie { ++ExportJdOrder(ctx, status, startTime, endTime, orderId) (fileName, content, err) ++createEmptyExcel(ctx) (fileName, content, err) ++getJdOrderStatusText(status) string +} +ExportJdOrderReq --> JdCookieService : "作为参数" +JdCookieService --> sJdCookie : "实现" +sJdCookie --> ExportJdOrderRes : "返回" +``` + +**图表来源** + +- [jd_cookie.go](file://internal/service/jd_cookie.go#L85-L90) +- [order_jd.go](file://internal/logic/jd_cookie/order_jd.go#L661-L764) + +#### 数据模型组件 + +```mermaid +erDiagram +V1JdCookieJdOrder { +string jdOrderId PK +string orderId +string cardNo +string cardPassword +string cookieId FK +int status +datetime createdAt +} +V1JdCookieAccount { +string cookieId PK +string accountName +int status +datetime createdAt +} +V1JdCookieJdOrder ||--o{ V1JdCookieAccount : "使用" +``` + +**图表来源** + +- [v_1_jd_cookie_jd_order.go](file://internal/model/entity/v_1_jd_cookie_jd_order.go#L1-L33) +- [v_1_jd_cookie_account.go](file://internal/model/entity/v_1_jd_cookie_account.go#L1-L25) + +### 筛选条件分析 + +导出功能支持多种筛选条件,用户可以根据需要选择不同的条件组合来导出订单数据。 + +```mermaid +flowchart TD +Start([开始]) --> StatusCheck{状态筛选?} +StatusCheck --> |是| AddStatusCondition["添加状态条件"] +StatusCheck --> |否| TimeCheck +TimeCheck{时间范围筛选?} +TimeCheck --> |是| AddTimeCondition["添加时间条件"] +TimeCheck --> |否| OrderIdCheck +OrderIdCheck{订单ID筛选?} +OrderIdCheck --> |是| AddOrderIdCondition["添加订单ID条件"] +OrderIdCheck --> |否| QueryData +AddStatusCondition --> TimeCheck +AddTimeCondition --> OrderIdCheck +AddOrderIdCondition --> QueryData +QueryData[查询订单数据] --> GetCookieInfo[查询Cookie信息] +GetCookieInfo --> CreateExcel[创建Excel文件] +CreateExcel --> ReturnResult[返回结果] +``` + +**图表来源** + +- [order_jd.go](file://internal/logic/jd_cookie/order_jd.go#L661-L764) + +**章节来源** + +- [order_jd.go](file://internal/logic/jd_cookie/order_jd.go#L661-L764) +- [jd_cookie_v1_export_jd_order.go](file://internal/controller/jd_cookie/jd_cookie_v1_export_jd_order.go#L1-L31) + +## 依赖分析 + +京东订单导出功能依赖于多个组件和外部库: + +```mermaid +graph TD +ExportFeature[导出功能] --> GoFrame[goframe框架] +ExportFeature --> Excelize[excelize库] +ExportFeature --> Database[数据库] +ExportFeature --> Cache[缓存系统] +ExportFeature --> Logger[日志系统] +GoFrame --> HTTP[HTTP服务] +GoFrame --> ORM[ORM框架] +Excelize --> Excel[Excel文件处理] +Database --> MySQL[MySQL数据库] +Cache --> Redis[Redis缓存] +Logger --> File[文件日志] +Logger --> Console[控制台输出] +``` + +**图表来源** + +- [jd_cookie.go](file://internal/service/jd_cookie.go#L1-L95) +- [order_jd.go](file://internal/logic/jd_cookie/order_jd.go#L661-L764) + +**章节来源** + +- [jd_cookie.go](file://internal/service/jd_cookie.go#L1-L95) +- [order_jd.go](file://internal/logic/jd_cookie/order_jd.go#L661-L764) + +## 性能考虑 + +京东订单导出功能在设计时考虑了以下性能因素: + +- 使用分页查询避免一次性加载过多数据 +- 批量查询关联的Cookie账户信息,减少数据库查询次数 +- 使用缓存机制避免重复的卡密提取操作 +- 异步处理回调,避免阻塞主流程 + +## 故障排除指南 + +在使用京东订单导出功能时,可能会遇到以下常见问题: + +**章节来源** + +- [order_jd.go](file://internal/logic/jd_cookie/order_jd.go#L661-L764) +- [jd_cookie_v1_export_jd_order.go](file://internal/controller/jd_cookie/jd_cookie_v1_export_jd_order.go#L1-L31) + +### 问题1:导出文件为空 + +可能原因: + +- 筛选条件过于严格,没有匹配的订单 +- 数据库连接问题导致无法查询数据 +- 权限不足,无法访问订单数据 + +解决方案: + +- 检查筛选条件是否正确 +- 检查数据库连接状态 +- 确认用户权限是否足够 + +### 问题2:导出速度慢 + +可能原因: + +- 订单数据量过大 +- 数据库查询性能问题 +- 网络传输速度慢 + +解决方案: + +- 分批导出数据 +- 优化数据库查询语句 +- 检查网络状况 + +### 问题3:Excel文件损坏 + +可能原因: + +- 文件生成过程中出现异常 +- 内存不足导致文件写入不完整 +- Excelize库版本问题 + +解决方案: + +- 检查日志中的错误信息 +- 增加系统内存 +- 更新Excelize库到最新版本 + +## 结论 + +京东订单导出功能为用户提供了一个便捷的数据导出工具,能够根据多种条件筛选订单并导出为Excel文件。该功能采用分层架构设计,具有良好的可维护性和扩展性。通过合理的性能优化和错误处理机制,确保了功能的稳定性和可靠性。 \ No newline at end of file diff --git a/.qoder/repowiki/zh/content/外部集成/外部集成.md b/.qoder/repowiki/zh/content/外部集成/外部集成.md index 40d3acfe..85129c03 100644 --- a/.qoder/repowiki/zh/content/外部集成/外部集成.md +++ b/.qoder/repowiki/zh/content/外部集成/外部集成.md @@ -18,8 +18,11 @@ ## 更新摘要 **变更内容** -- 更新了京东集成部分,新增了订单创建和支付链接刷新功能 -- 增加了京东订单复用机制的详细说明 + +- 更新了京东集成部分,修复了订单ID字段类型问题,将OrderId类型从json.Number调整为string +- 修正了京东接口字段名,将card_pass字段名更改为card_pwd,保持与上游接口一致 +- 修改了获取卡密接口的JSON字段名,并新增order_status字段 +- 调整了京东订单字段命名,将AppleRechargeCardInfoReq中的OrderNo重命名为OrderId - 更新了相关代码示例和架构图 - 新增了订单状态检查和复用逻辑的实现细节 - 更新了故障排除指南,增加了订单复用相关的常见问题 @@ -90,26 +93,39 @@ InnerClient --> topsdk : "依赖" ```go func (c *Client) AppleRecharge(ctx context.Context, input *AppleRechargeReq) (*AppleRechargeResp, error) { - resp := &AppleRechargeResp{} + var resp = &AppleRechargeResp{} glog.Info(ctx, "苹果权益充值", input) - response, err := c.Client.ContentJson().Post(ctx, "http://jd_babel_channel:8289/jd/app/placeOrder", input) - if err != nil { - return resp, err + + for range 3 { + response, err := c.Client.ContentJson().Post(ctx, "http://jd_babel_channel:8289/jd/app/store", input) + if err != nil { + return resp, err + } + + respData := response.ReadAllString() + clientResp := AppleRechargeClientResp{} + glog.Info(ctx, "获取信息", respData) + err = json.Unmarshal([]byte(respData), &clientResp) + if err != nil { + glog.Error(ctx, "获取信息失败", err) + return resp, err + } + resp = &AppleRechargeResp{ + Code: clientResp.Code.JDOrderStatus(), + Deeplink: clientResp.Data.Deeplink, + OrderId: clientResp.Data.OrderId, + PayId: clientResp.Data.PayId, + Msg: clientResp.Data.Remark, + } + if clientResp.Code == RiskError { + continue + } + if clientResp.Code != Success { + return resp, gerror.New("苹果权益充值失败," + clientResp.Data.Remark) + } + break } - clientResp := &AppleRechargeClientResp{} - err = json.Unmarshal(response.ReadAll(), clientResp) - glog.Info(ctx, "苹果权益充值", response.ReadAllString()) - if err != nil { - return resp, err - } - resp = &AppleRechargeResp{ - Code: clientResp.Code.JDOrderStatus(), - Deeplink: clientResp.Data.Deeplink, - OrderId: clientResp.Data.OrderId, - PayId: clientResp.Data.PayId, - FacePrice: clientResp.Data.FacePrice, - } - if clientResp.Code != Success { + if resp == nil { return resp, gerror.New("苹果权益充值失败") } return resp, nil @@ -122,23 +138,23 @@ func (c *Client) AppleRecharge(ctx context.Context, input *AppleRechargeReq) (*A ```go func (c *Client) RefreshPayment(ctx context.Context, input *RefreshPaymentReq) (*RefreshPaymentRes, error) { resp := &RefreshPaymentRes{} - glog.Info(ctx, "苹果权益充值", input) + glog.Info(ctx, "刷新收银台参数", input) response, err := c.Client.ContentJson().Post(ctx, "http://jd_babel_channel:8289/api/v1/jd/wx/refresh-payment", input) if err != nil { return resp, err } clientResp := &AppleRechargeClientResp{} err = json.Unmarshal(response.ReadAll(), clientResp) - glog.Info(ctx, "苹果权益充值", response.ReadAllString()) + glog.Info(ctx, "刷新收银台返回值", clientResp) if err != nil { return resp, err } resp = &RefreshPaymentRes{ - Code: clientResp.Code.JDOrderStatus(), - Deeplink: clientResp.Data.Deeplink, - OrderId: clientResp.Data.OrderId, - PayId: clientResp.Data.PayId, - FacePrice: clientResp.Data.FacePrice, + Code: clientResp.Code.JDOrderStatus(), + Deeplink: clientResp.Data.Deeplink, + OrderId: clientResp.Data.OrderId, + PayId: clientResp.Data.PayId, + Msg: clientResp.Data.Remark, } if clientResp.Code != Success { return resp, gerror.New("苹果权益充值失败") @@ -155,7 +171,7 @@ func (c *Client) CheckOrderPayment(ctx context.Context, input *CheckOrderPayment resp := &CheckOrderPaymentResp{} glog.Info(ctx, "检查京东订单支付状态", input) - response, err := c.Client.ContentJson().Post(ctx, "http://jd_babel_channel:8289/jd/query/order/payment", input) + response, err := c.Client.ContentJson().Post(ctx, "http://jd_babel_channel:8289/api/jd/query/order/payment", input) if err != nil { return resp, err } @@ -182,6 +198,45 @@ func (c *Client) CheckOrderPayment(ctx context.Context, input *CheckOrderPayment } ``` +#### 获取卡密信息 + +通过`GetCardInfo`方法获取京东订单的卡号和卡密,修正了接口字段名,将card_pass字段名更改为card_pwd,并新增order_status字段。 + +```go +func (c *Client) GetCardInfo(ctx context.Context, input *AppleRechargeCardInfoReq) (resp *AppleRechargeCardInfoResp, err error) { + response, err := c.Client.ContentJson().Post(ctx, "http://jd_babel_channel:8289/jd/query/card", input) + if err != nil { + return + } + clientResp := struct { + Code int `json:"code"` + Msg string `json:"msg"` + Data struct { + Remark string `json:"remark"` + CardPwd string `json:"card_pwd"` + CardNo string `json:"card_num"` + OrderStatus string `json:"order_status"` + } `json:"data,omitempty"` + }{} + err = json.Unmarshal(response.ReadAll(), &clientResp) + glog.Info(ctx, "获取京东订单的卡号和卡密", clientResp, err) + if err != nil { + return + } + resp = &AppleRechargeCardInfoResp{ + OrderStatus: clientResp.Data.OrderStatus, + Remark: clientResp.Data.Remark, + CardNo: clientResp.Data.CardNo, + IsCkFailed: clientResp.Code == int(CkError), + CardPassword: clientResp.Data.CardPwd, + } + if clientResp.Code != int(Success) || clientResp.Data.CardNo == "" { + return resp, gerror.New("状态不正确") + } + return +} +``` + **Section sources** - [client.go](file://utility/integration/originalJd/client.go#L11-L123) - [model.go](file://utility/integration/originalJd/model.go#L1-L144) diff --git a/.qoder/repowiki/zh/content/数据模型与ORM映射/数据模型与ORM映射.md b/.qoder/repowiki/zh/content/数据模型与ORM映射/数据模型与ORM映射.md index d23ea9b0..6dc2cce4 100644 --- a/.qoder/repowiki/zh/content/数据模型与ORM映射/数据模型与ORM映射.md +++ b/.qoder/repowiki/zh/content/数据模型与ORM映射/数据模型与ORM映射.md @@ -28,9 +28,10 @@ ## 更新摘要 **已更新内容** -- 在核心数据模型部分新增了京东Cookie管理模块的三个核心数据表 + +- 在核心数据模型部分更新了京东Cookie管理模块的三个核心数据表,添加了新字段 - 在实体关系与约束部分更新了外键关系说明 -- 在数据验证与业务规则部分新增了京东Cookie模块的业务规则 +- 在数据验证与业务规则部分新增了京东订单复用和风控失败状态的业务规则 - 在GoFrame ORM映射机制部分更新了DO和Entity层说明 - 在DAO层实现部分更新了DAO结构说明 - 更新了文档引用文件列表,包含新模块的相关文件 @@ -153,16 +154,17 @@ **字段定义:** - **id**: 主键,自增,类型为`uint` -- **cookie**: Cookie字符串,类型为`string` -- **status**: 账户状态(正常、暂停、失效等),类型为`string` +- **cookieId**: Cookie唯一标识,类型为`string` +- **cookieValue**: Cookie内容,类型为`string` +- **accountName**: 账户名称,类型为`string` +- **status**: 账户状态(1.正常 2.暂停 3.失效),类型为`int` +- **failureCount**: 连续失败次数,类型为`int` - **lastUsedAt**: 最后使用时间,类型为`*gtime.Time` -- **failureCount**: 失败次数,类型为`int` -- **successCount**: 成功次数,类型为`int` -- **totalAmount**: 累计交易金额,使用`decimal.Decimal`精确存储 -- **lastOrderId**: 最后处理的订单ID,类型为`string` -- **pauseUntil**: 暂停到期时间,用于自动恢复,类型为`*gtime.Time` +- **suspendUntil**: 暂停解除时间,用于自动恢复,类型为`*gtime.Time` +- **remark**: 备注信息,类型为`string` - **createdAt**: 创建时间,类型为`*gtime.Time` - **updatedAt**: 更新时间,类型为`*gtime.Time` +- **deletedAt**: 删除时间,类型为`*gtime.Time` **Section sources** - [v_1_jd_cookie_account.go](file://internal/model/entity/v_1_jd_cookie_account.go#L12-L28) @@ -172,35 +174,48 @@ **字段定义:** - **id**: 主键,自增,类型为`uint` -- **jdOrderId**: 京东订单ID,类型为`string` -- **paymentUrl**: 支付链接,类型为`string` +- **jdOrderId**: 京东订单号,类型为`string` +- **realJdOrderId**: 京东客户端返回的真实订单ID,类型为`string` +- **payId**: 支付ID,类型为`string` - **amount**: 订单金额,使用`decimal.Decimal`精确存储 -- **status**: 订单状态(待支付、已支付、已过期等),类型为`string` -- **accountId**: 关联的Cookie账户ID,类型为`uint` -- **orderId**: 关联的系统订单ID,类型为`string` +- **category**: 商品品类,类型为`string` +- **cookieId**: 使用的Cookie ID,类型为`string` +- **status**: 订单状态(1.待支付 2.已支付 3.已过期 4.已取消),类型为`int` +- **wxPayUrl**: 微信支付链接,类型为`string` +- **wxPayExpireAt**: 微信支付链接过期时间,类型为`*gtime.Time` +- **orderExpireAt**: 订单过期时间(默认24小时),类型为`*gtime.Time` +- **orderId**: 关联的用户订单号,类型为`string` +- **paidAt**: 支付完成时间,类型为`*gtime.Time` +- **cardNo**: 卡号,类型为`string` +- **cardPassword**: 卡密,类型为`string` +- **cardExtractedAt**: 卡密提取时间,类型为`*gtime.Time` - **createdAt**: 创建时间,类型为`*gtime.Time` - **updatedAt**: 更新时间,类型为`*gtime.Time` -- **expiredAt**: 过期时间,类型为`*gtime.Time` -- **lastCheckedAt**: 最后检查时间,类型为`*gtime.Time` +- **deletedAt**: 删除时间,类型为`*gtime.Time` **Section sources** -- [v_1_jd_cookie_jd_order.go](file://internal/model/entity/v_1_jd_cookie_jd_order.go#L12-L27) + +- [v_1_jd_cookie_jd_order.go](file://internal/model/entity/v_1_jd_cookie_jd_order.go#L12-L33) ### v_1_jd_cookie_order(京东Cookie订单表) 该表存储系统订单与京东Cookie的关联信息。 **字段定义:** - **id**: 主键,自增,类型为`uint` -- **orderId**: 系统订单ID,类型为`string` -- **accountId**: 使用的Cookie账户ID,类型为`uint` -- **jdOrderId**: 关联的京东订单ID,类型为`string` -- **status**: 订单处理状态,类型为`string` +- **orderId**: 订单号,类型为`string` +- **userOrderId**: 用户订单号,类型为`string` - **amount**: 订单金额,使用`decimal.Decimal`精确存储 +- **category**: 商品品类,类型为`string` +- **jdOrderId**: 关联的京东订单号,类型为`string` +- **status**: 状态(1.待支付 2.已支付 3.已过期 4.已取消),类型为`int` +- **lastRequestAt**: 最后请求时间,类型为`*gtime.Time` - **createdAt**: 创建时间,类型为`*gtime.Time` - **updatedAt**: 更新时间,类型为`*gtime.Time` +- **deletedAt**: 删除时间,类型为`*gtime.Time` **Section sources** -- [v_1_jd_cookie_order.go](file://internal/model/entity/v_1_jd_cookie_order.go#L12-L22) + +- [v_1_jd_cookie_order.go](file://internal/model/entity/v_1_jd_cookie_order.go#L12-L25) ## 实体关系与约束 @@ -209,39 +224,40 @@ - `v_1_account_info`表的`accountUid`字段是业务主键,确保账户的唯一性。 - `v_1_order_info`表的`bankOrderId`和`merchantOrderId`字段有唯一性约束,用于快速查询订单。 - `v_1_card_apple_recharge_info`表的`orderNo`字段是业务主键,确保订单号的唯一性。 -- `v_1_jd_cookie_account`表的`cookie`字段有唯一性约束,防止重复添加相同的Cookie。 +- `v_1_jd_cookie_account`表的`cookieId`字段有唯一性约束,防止重复添加相同的Cookie。 - `v_1_jd_cookie_jd_order`表的`jdOrderId`字段是业务主键,确保京东订单的唯一性。 - `v_1_jd_cookie_order`表的`orderId`字段是业务主键,确保系统订单与京东订单关联的唯一性。 +- `v_1_jd_cookie_order`表的`userOrderId`字段有索引,用于快速查询用户订单。 ### 外键关系 本系统采用弱外键约束,主要通过业务逻辑来维护数据一致性: - `v_1_order_info.merchantUid` 关联 `v_1_account_info.accountUid`,表示订单所属的商户账户。 - `v_1_card_apple_recharge_info.merchantId` 关联 `v_1_account_info.accountUid`,表示充值订单所属的商户。 - `v_1_card_apple_recharge_info.accountId` 关联 `v_1_card_apple_account_info.id`(未在文档中详述),表示充值所使用的苹果账户。 -- `v_1_jd_cookie_jd_order.accountId` 关联 `v_1_jd_cookie_account.id`,表示京东订单所属的Cookie账户。 -- `v_1_jd_cookie_jd_order.orderId` 关联 `v_1_order_info.bankOrderId`,表示京东订单对应的系统订单。 -- `v_1_jd_cookie_order.accountId` 关联 `v_1_jd_cookie_account.id`,表示订单处理使用的Cookie账户。 +- `v_1_jd_cookie_jd_order.cookieId` 关联 `v_1_jd_cookie_account.cookieId`,表示京东订单所属的Cookie账户。 +- `v_1_jd_cookie_jd_order.orderId` 关联 `v_1_jd_cookie_order.userOrderId`,表示京东订单对应的用户订单。 - `v_1_jd_cookie_order.jdOrderId` 关联 `v_1_jd_cookie_jd_order.jdOrderId`,表示订单关联的京东平台订单。 ### 约束规则 -- **状态约束**:各表的`status`字段有明确的枚举值范围,如`v_1_card_apple_recharge_info.status`只能为0,1,2,3。 + +- **状态约束**:各表的`status`字段有明确的枚举值范围,如`v_1_jd_cookie_account.status`只能为1,2,3。 - **金额约束**:涉及金额的字段(如`balance`, `actualAmount`)使用`decimal.Decimal`或`float64`,确保精度。 - **时间约束**:`createdAt`必须小于等于`updatedAt`,`deletedAt`在软删除时才不为空。 -- **唯一性约束**:关键业务字段如`cookie`、`jdOrderId`等有唯一性约束,防止数据重复。 +- **唯一性约束**:关键业务字段如`cookieId`、`jdOrderId`等有唯一性约束,防止数据重复。 **Section sources** - [v_1_account_info.go](file://internal/model/entity/v_1_account_info.go#L12-L25) - [v_1_order_info.go](file://internal/model/entity/v_1_order_info.go#L12-L63) - [v_1_card_apple_recharge_info.go](file://internal/model/entity/v_1_card_apple_recharge_info.go#L11-L33) - [v_1_jd_cookie_account.go](file://internal/model/entity/v_1_jd_cookie_account.go#L12-L28) -- [v_1_jd_cookie_jd_order.go](file://internal/model/entity/v_1_jd_cookie_jd_order.go#L12-L27) -- [v_1_jd_cookie_order.go](file://internal/model/entity/v_1_jd_cookie_order.go#L12-L22) +- [v_1_jd_cookie_jd_order.go](file://internal/model/entity/v_1_jd_cookie_jd_order.go#L12-L33) +- [v_1_jd_cookie_order.go](file://internal/model/entity/v_1_jd_cookie_order.go#L12-L25) ## 数据验证与业务规则 ### 数据验证规则 - **非空验证**:所有主键、业务主键(如`orderNo`, `accountUid`)、创建时间等字段均不能为空。 -- **格式验证**:`cardPass`(卡密)需符合特定的长度和字符规则;`ip`字段需为有效的IP地址格式;`cookie`字段需为有效的京东Cookie格式。 +- **格式验证**:`cardPass`(卡密)需符合特定的长度和字符规则;`ip`字段需为有效的IP地址格式;`cookieValue`字段需为有效的京东Cookie格式。 - **范围验证**:`status`字段必须在预定义的枚举值范围内;金额字段不能为负数。 ### 核心业务规则 @@ -297,7 +313,7 @@ // 示例:获取可用的Cookie账户 err = dao.V1JdCookieAccount.Ctx(ctx).DB(config.GetDatabaseV1()). Where(dao.V1JdCookieAccount.Columns().Status, consts.JdCookieStatusNormal). - Where(dao.V1JdCookieAccount.Columns().PauseUntil+" IS NULL OR "+dao.V1JdCookieAccount.Columns().PauseUntil+" < ?", gtime.Now()). + Where(dao.V1JdCookieAccount.Columns().SuspendUntil+" IS NULL OR "+dao.V1JdCookieAccount.Columns().SuspendUntil+" < ?", gtime.Now()). OrderAsc(dao.V1JdCookieAccount.Columns().LastUsedAt). OrderAsc(dao.V1JdCookieAccount.Columns().FailureCount). Scan(&accounts) @@ -311,12 +327,20 @@ err = dao.V1JdCookieJdOrder.Ctx(ctx).DB(config.GetDatabaseV1()). Where(dao.V1JdCookieJdOrder.Columns().Status, consts.JdOrderStatusPending). Where(dao.V1JdCookieJdOrder.Columns().Amount, amount). - Where(dao.V1JdCookieJdOrder.Columns().ExpiredAt+" > ?", gtime.Now()). + Where(dao.V1JdCookieJdOrder.Columns().OrderExpireAt+" > ?", gtime.Now()). Scan(&orders) ``` **Section sources** - [order.go](file://internal/logic/jd_cookie/order.go#L45-L60) +7. **风控失败状态规则**:当京东订单因风控失败时,系统会记录失败状态和备注信息,并更新相关订单状态。 + ```go + // 示例:处理风控失败的京东订单 + err = s.UpdateJdOrderStatus(ctx, jdOrderId, consts.JdOrderStatusCkFailed, "", "风控校验失败") + ``` + **Section sources** + - [rotation.go](file://internal/logic/jd_cookie/rotation.go#L250-L265) + ## 数据库模式图 ```mermaid @@ -369,46 +393,57 @@ timestamp deletedAt } v_1_jd_cookie_account { uint id PK -string cookie UK -string status -timestamp lastUsedAt +string cookieId UK +string cookieValue +string accountName +int status int failureCount -int successCount -decimal totalAmount -string lastOrderId -timestamp pauseUntil +timestamp lastUsedAt +timestamp suspendUntil +string remark timestamp createdAt timestamp updatedAt +timestamp deletedAt } v_1_jd_cookie_jd_order { uint id PK string jdOrderId UK -string paymentUrl +string realJdOrderId +string payId decimal amount -string status -uint accountId FK +string category +string cookieId FK +int status +string wxPayUrl +timestamp wxPayExpireAt +timestamp orderExpireAt string orderId FK +timestamp paidAt +string cardNo +string cardPassword +timestamp cardExtractedAt timestamp createdAt timestamp updatedAt -timestamp expiredAt -timestamp lastCheckedAt +timestamp deletedAt } v_1_jd_cookie_order { uint id PK string orderId UK -uint accountId FK -string jdOrderId FK -string status +string userOrderId decimal amount +string category +string jdOrderId FK +int status +timestamp lastRequestAt timestamp createdAt timestamp updatedAt +timestamp deletedAt } v_1_account_info ||--o{ v_1_order_info : "merchantUid" v_1_account_info ||--o{ v_1_card_apple_recharge_info : "merchantId" -v_1_jd_cookie_account ||--o{ v_1_jd_cookie_jd_order : "accountId" -v_1_jd_cookie_account ||--o{ v_1_jd_cookie_order : "accountId" -v_1_order_info ||--o{ v_1_jd_cookie_jd_order : "bankOrderId" -v_1_order_info ||--o{ v_1_jd_cookie_order : "bankOrderId" +v_1_jd_cookie_account ||--o{ v_1_jd_cookie_jd_order : "cookieId" +v_1_jd_cookie_account ||--o{ v_1_jd_cookie_order : "关联" +v_1_jd_cookie_order ||--o{ v_1_jd_cookie_jd_order : "orderId" v_1_jd_cookie_jd_order ||--o{ v_1_jd_cookie_order : "jdOrderId" ``` @@ -417,8 +452,8 @@ v_1_jd_cookie_jd_order ||--o{ v_1_jd_cookie_order : "jdOrderId" - [v_1_order_info.go](file://internal/model/entity/v_1_order_info.go#L12-L63) - [v_1_card_apple_recharge_info.go](file://internal/model/entity/v_1_card_apple_recharge_info.go#L11-L33) - [v_1_jd_cookie_account.go](file://internal/model/entity/v_1_jd_cookie_account.go#L12-L28) -- [v_1_jd_cookie_jd_order.go](file://internal/model/entity/v_1_jd_cookie_jd_order.go#L12-L27) -- [v_1_jd_cookie_order.go](file://internal/model/entity/v_1_jd_cookie_order.go#L12-L22) +- [v_1_jd_cookie_jd_order.go](file://internal/model/entity/v_1_jd_cookie_jd_order.go#L12-L33) +- [v_1_jd_cookie_order.go](file://internal/model/entity/v_1_jd_cookie_order.go#L12-L25) ## 数据访问模式与缓存策略 @@ -478,17 +513,25 @@ DO层是ORM框架与数据库表之间的直接映射,位于`internal/model/do - **作用**:主要用于ORM的查询、插入、更新等操作的参数传递。 ```go -type V1AccountInfo struct { - g.Meta `orm:"table:account_info, do:true"` - Id any // 主键,自增 - Status any // 状态 - AccountUid any // 账户uid - // ... 其他字段 +type V1JdCookieOrder struct { + g.Meta `orm:"table:jd_cookie_order, do:true"` + Id any // 主键ID + OrderId any // 订单号 + UserOrderId any // 用户订单号 + Amount any // 订单金额 + Category any // 商品品类 + JdOrderId any // 关联的京东订单号 + Status any // 状态:1待支付 2已支付 3已过期 4已取消 + LastRequestAt *gtime.Time // 最后请求时间 + CreatedAt *gtime.Time // 创建时间 + UpdatedAt *gtime.Time // 更新时间 + DeletedAt *gtime.Time // 删除时间 } ``` **Section sources** -- [v_1_account_info.go](file://internal/model/do/v_1_account_info.go#L12-L26) + +- [v_1_jd_cookie_order.go](file://internal/model/do/v_1_jd_cookie_order.go#L12-L26) ### Entity 层 Entity层是业务逻辑中使用的数据结构,位于`internal/model/entity`目录下。 @@ -496,17 +539,24 @@ Entity层是业务逻辑中使用的数据结构,位于`internal/model/entity` - **作用**:作为业务逻辑层和DAO层之间的数据传输对象(DTO)。 ```go -type V1AccountInfo struct { - Id uint `json:"id" orm:"id" description:"主键,自增"` - Status string `json:"status" orm:"status" description:"状态"` - AccountUid string `json:"accountUid" orm:"account_uid" description:"账户uid"` - Balance decimal.Decimal `json:"balance" orm:"balance" description:"账户余额"` - // ... 其他字段 +type V1JdCookieOrder struct { + Id int64 `json:"id" orm:"id" description:"主键ID"` + OrderId string `json:"orderId" orm:"order_id" description:"订单号"` + UserOrderId string `json:"userOrderId" orm:"user_order_id" description:"用户订单号"` + Amount decimal.Decimal `json:"amount" orm:"amount" description:"订单金额"` + Category string `json:"category" orm:"category" description:"商品品类"` + JdOrderId string `json:"jdOrderId" orm:"jd_order_id" description:"关联的京东订单号"` + Status int `json:"status" orm:"status" description:"状态:1待支付 2已支付 3已过期 4已取消"` + LastRequestAt *gtime.Time `json:"lastRequestAt" orm:"last_request_at" description:"最后请求时间"` + CreatedAt *gtime.Time `json:"createdAt" orm:"created_at" description:"创建时间"` + UpdatedAt *gtime.Time `json:"updatedAt" orm:"updated_at" description:"更新时间"` + DeletedAt *gtime.Time `json:"deletedAt" orm:"deleted_at" description:"删除时间"` } ``` **Section sources** -- [v_1_account_info.go](file://internal/model/entity/v_1_account_info.go#L12-L25) + +- [v_1_jd_cookie_order.go](file://internal/model/entity/v_1_jd_cookie_order.go#L12-L25) ### 映射关系 - **Entity -> DO**:当DAO层需要执行数据库操作时,会将`Entity`对象转换为`DO`对象。 @@ -520,39 +570,42 @@ DAO层位于`internal/dao`目录下,是数据访问的入口。 - **外部DAO**:`internal/dao`目录下的DAO是对内部DAO的包装,可以添加自定义方法。 ```go -// v1AccountInfoDao 是对内部DAO的包装 -type v1AccountInfoDao struct { - internalV1AccountInfoDao +// v1JdCookieOrderDao 是对内部DAO的包装 +type v1JdCookieOrderDao struct { + internalV1JdCookieOrderDao } -// V1AccountInfo 是全局可访问的DAO对象 -var V1AccountInfo = v1AccountInfoDao{ - internal.NewV1AccountInfoDao(), +// V1JdCookieOrder 是全局可访问的DAO对象 +var V1JdCookieOrder = v1JdCookieOrderDao{ + internal.NewV1JdCookieOrderDao(), } ``` **Section sources** -- [v_1_account_info.go](file://internal/dao/v_1_account_info.go#L1-L27) + +- [v_1_jd_cookie_order.go](file://internal/dao/v_1_jd_cookie_order.go#L1-L27) ### 自定义方法实现 DAO层可以定义自定义方法来实现复杂的查询逻辑。 -- **示例:添加苹果充值订单** + +- **示例:添加京东订单** ```go - func (h *sAppleOrder) AddRechargeOrder(ctx context.Context, input *model.AppleCardRechargeInput) (orderNo string, err error) { - // ... 业务逻辑 - rechargeId, err := dao.V1CardAppleRechargeInfo.Ctx(ctx).DB(config.GetDatabaseV1()). - InsertAndGetId(do.V1CardAppleRechargeInfo{ - OrderNo: orderNo, - AccountId: input.AccountID, - CardPass: input.CardPass, - Status: status, - // ... 其他字段 - }) - return orderNo, err + func (s *sJdCookie) CreateJdOrder(ctx context.Context, jdOrderId, payId, cookieId, category string, amount float64) (err error) { + m := dao.V1JdCookieJdOrder.Ctx(ctx).DB(config.GetDatabaseV1()) + _, err = m.Insert(&do.V1JdCookieJdOrder{ + JdOrderId: jdOrderId, + PayId: payId, + Amount: amount, + Category: category, + CookieId: cookieId, + Status: int(consts.JdOrderStatusPending), + OrderExpireAt: gtime.Now().Add(time.Hour * consts.JdOrderExpireDuration), + }) + return } ``` **Section sources** - - [order.go](file://internal/logic/card_apple_order/order.go#L100-L143) + - [rotation.go](file://internal/logic/jd_cookie/rotation.go#L150-L165) - **示例:修改订单状态** ```go @@ -570,16 +623,21 @@ DAO层可以定义自定义方法来实现复杂的查询逻辑。 - **示例:获取可用的Cookie账户** ```go - func (s *sJdCookie) GetAvailableAccount(ctx context.Context) (*entity.V1JdCookieAccount, error) { - var account *entity.V1JdCookieAccount - err := dao.V1JdCookieAccount.Ctx(ctx).DB(config.GetDatabaseV1()). - Where(dao.V1JdCookieAccount.Columns().Status, consts.JdCookieStatusNormal). - Where(dao.V1JdCookieAccount.Columns().PauseUntil+" IS NULL OR "+dao.V1JdCookieAccount.Columns().PauseUntil+" < ?", gtime.Now()). + func (s *sJdCookie) GetAvailableCookie(ctx context.Context) (cookieId string, err error) { + m := dao.V1JdCookieAccount.Ctx(ctx).DB(config.GetDatabaseV1()) + var availableCookies []*entity.V1JdCookieAccount + err = m.Where(dao.V1JdCookieAccount.Columns().Status, int(consts.JdCookieStatusNormal)). OrderAsc(dao.V1JdCookieAccount.Columns().LastUsedAt). - OrderAsc(dao.V1JdCookieAccount.Columns().FailureCount). - Scan(&account) - return account, err + Scan(&availableCookies) + if err != nil { + return "", gerror.Wrap(err, "查询可用Cookie失败") + } + if len(availableCookies) == 0 { + return "", gerror.New(consts.ErrCodeCookieNotAvailable) + } + selectedCookie := availableCookies[0] + return selectedCookie.CookieId, nil } ``` **Section sources** - - [account.go](file://internal/logic/jd_cookie/account.go#L15-L35) \ No newline at end of file + - [rotation.go](file://internal/logic/jd_cookie/rotation.go#L15-L30) \ No newline at end of file diff --git a/.qoder/repowiki/zh/content/日志与监控.md b/.qoder/repowiki/zh/content/日志与监控.md index 51b6e0d0..a7aef28a 100644 --- a/.qoder/repowiki/zh/content/日志与监控.md +++ b/.qoder/repowiki/zh/content/日志与监控.md @@ -13,6 +13,10 @@ - [handler.go](file://utility/otel/handler.go) - [utils.go](file://utility/otel/utils.go) - [monitor.go](file://utility/monitor/monitor.go) +- [order_create.go](file://internal/logic/jd_cookie/order_create.go) +- [order_utils.go](file://internal/logic/jd_cookie/order_utils.go) +- [client.go](file://utility/integration/originalJd/client.go) +- [order_jd.go](file://internal/logic/jd_cookie/order_jd.go) ## 更新摘要 @@ -22,6 +26,8 @@ - 修正了日志系统配置流程图与代码逻辑的一致性 - 增强了健康检查机制的技术细节说明 - 补充了命令行监控选项的实现原理 +- 新增了京东订单创建、支付状态检查和卡密提取功能的日志记录说明 +- 更新了苹果权益充值接口的日志记录实践 ## 目录 1. [简介](#简介) @@ -36,7 +42,10 @@ 10. [运维诊断指南](#运维诊断指南) ## 简介 -kami_backend系统通过OpenTelemetry实现了全面的分布式追踪、指标收集和日志聚合功能。本系统集成了OpenTelemetry的三大核心组件:追踪(Tracing)、指标(Metrics)和日志(Logging),为系统的可观测性提供了坚实的基础。监控系统不仅提供了实时的健康检查功能,还通过命令行选项实现了灵活的监控任务管理。系统采用结构化日志格式,支持多级别日志记录,并通过配置化的存储策略确保日志数据的可靠性和可访问性。 + +kami_backend系统通过OpenTelemetry实现了全面的分布式追踪、指标收集和日志聚合功能。本系统集成了OpenTelemetry的三大核心组件:追踪( +Tracing)、指标(Metrics)和日志(Logging) +,为系统的可观测性提供了坚实的基础。监控系统不仅提供了实时的健康检查功能,还通过命令行选项实现了灵活的监控任务管理。系统采用结构化日志格式,支持多级别日志记录,并通过配置化的存储策略确保日志数据的可靠性和可访问性。近期更新增强了京东订单处理和苹果权益充值接口的日志记录,确保敏感信息不被泄露,同时完善了错误处理日志格式。 ## OpenTelemetry集成架构 diff --git a/.qoder/repowiki/zh/content/订单回调功能.md b/.qoder/repowiki/zh/content/订单回调功能.md new file mode 100644 index 00000000..aeff5b78 --- /dev/null +++ b/.qoder/repowiki/zh/content/订单回调功能.md @@ -0,0 +1,333 @@ +# 订单回调功能 + + +**本文档引用的文件** +- [card_info_c_trip_v1_order_callback.go](file://internal/controller/card_info_c_trip/card_info_c_trip_v1_order_callback.go) +- [card_info_jd_v1_order_callback.go](file://internal/controller/card_info_jd/card_info_jd_v1_order_callback.go) +- [card_info_walmart_v1_order_callback.go](file://internal/controller/card_info_walmart/card_info_walmart_v1_order_callback.go) +- [card_info_t_mall_game_v1_t_mall_game_agiso_callback.go](file://internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_agiso_callback.go) +- [callback.go](file://internal/logic/card_redeem_order/callback.go) +- [card_redeem_order.go](file://internal/service/card_redeem_order.go) +- [card_redeem.go](file://internal/consts/card_redeem.go) +- [v_1_card_redeem_order_info.go](file://internal/model/entity/v_1_card_redeem_order_info.go) + + +## 目录 + +1. [简介](#简介) +2. [项目结构](#项目结构) +3. [核心组件](#核心组件) +4. [架构概述](#架构概述) +5. [详细组件分析](#详细组件分析) +6. [依赖分析](#依赖分析) +7. [性能考虑](#性能考虑) +8. [故障排除指南](#故障排除指南) +9. [结论](#结论) + +## 简介 + +订单回调功能是系统中用于处理第三方平台订单状态变更通知的核心机制。该功能确保系统能够及时响应外部平台的订单状态更新,如支付成功、确认收货等事件,并根据预设规则执行相应的业务逻辑,包括发货、评价处理和向上游系统回调等操作。本功能支持多个电商平台,包括携程、京东、沃尔玛和天猫游戏等,具备良好的扩展性和稳定性。 + +## 项目结构 + +订单回调功能主要分布在`internal/controller`和`internal/logic` +目录下,涉及多个电商平台的具体实现。控制器层负责接收外部回调请求,进行权限验证和基本校验,然后调用逻辑层处理具体业务。逻辑层封装了核心业务逻辑,包括订单状态更新、发货处理、评价处理和向上游系统回调等。 + +```mermaid +graph TD +subgraph "控制器层" +CtripCallback["card_info_c_trip_v1_order_callback.go"] +JdCallback["card_info_jd_v1_order_callback.go"] +WalmartCallback["card_info_walmart_v1_order_callback.go"] +TMallGameCallback["card_info_t_mall_game_v1_t_mall_game_agiso_callback.go"] +end +subgraph "逻辑层" +LogicCallback["callback.go"] +ConsumeLogic["consume.go"] +end +subgraph "服务层" +Service["card_redeem_order.go"] +end +subgraph "常量定义" +Consts["card_redeem.go"] +end +subgraph "数据模型" +Model["v_1_card_redeem_order_info.go"] +end +CtripCallback --> LogicCallback +JdCallback --> LogicCallback +WalmartCallback --> LogicCallback +TMallGameCallback --> LogicCallback +LogicCallback --> Service +ConsumeLogic --> Service +Service --> Model +Consts --> Service +Consts --> LogicCallback +``` + +**图表来源** + +- [card_info_c_trip_v1_order_callback.go](file://internal/controller/card_info_c_trip/card_info_c_trip_v1_order_callback.go) +- [card_info_jd_v1_order_callback.go](file://internal/controller/card_info_jd/card_info_jd_v1_order_callback.go) +- [card_info_walmart_v1_order_callback.go](file://internal/controller/card_info_walmart/card_info_walmart_v1_order_callback.go) +- [card_info_t_mall_game_v1_t_mall_game_agiso_callback.go](file://internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_agiso_callback.go) +- [callback.go](file://internal/logic/card_redeem_order/callback.go) +- [consume.go](file://internal/logic/card_redeem_order/consume.go) +- [card_redeem_order.go](file://internal/service/card_redeem_order.go) +- [card_redeem.go](file://internal/consts/card_redeem.go) +- [v_1_card_redeem_order_info.go](file://internal/model/entity/v_1_card_redeem_order_info.go) + +**章节来源** + +- [card_info_c_trip_v1_order_callback.go](file://internal/controller/card_info_c_trip/card_info_c_trip_v1_order_callback.go) +- [card_info_jd_v1_order_callback.go](file://internal/controller/card_info_jd/card_info_jd_v1_order_callback.go) +- [card_info_walmart_v1_order_callback.go](file://internal/controller/card_info_walmart/card_info_walmart_v1_order_callback.go) +- [card_info_t_mall_game_v1_t_mall_game_agiso_callback.go](file://internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_agiso_callback.go) + +## 核心组件 + +订单回调功能的核心组件包括控制器、逻辑处理和回调服务。控制器负责接收外部回调请求,进行权限验证和基本校验;逻辑处理组件封装了核心业务逻辑,包括订单状态更新、发货处理和评价处理;回调服务负责向上游系统发送订单状态变更通知。这些组件通过服务接口进行解耦,确保了系统的可维护性和可扩展性。 + +**章节来源** + +- [callback.go](file://internal/logic/card_redeem_order/callback.go) +- [card_redeem_order.go](file://internal/service/card_redeem_order.go) +- [card_redeem.go](file://internal/consts/card_redeem.go) + +## 架构概述 + +订单回调功能采用分层架构设计,分为控制器层、逻辑层和服务层。控制器层负责接收外部回调请求,进行权限验证和基本校验,然后调用逻辑层处理具体业务。逻辑层封装了核心业务逻辑,包括订单状态更新、发货处理、评价处理和向上游系统回调等。服务层提供统一的接口供上层调用,实现了业务逻辑的复用和解耦。 + +```mermaid +sequenceDiagram +participant ThirdParty as "第三方平台" +participant Controller as "控制器" +participant Logic as "逻辑层" +participant Service as "服务层" +participant Database as "数据库" +ThirdParty->>Controller : 发送回调请求 +Controller->>Controller : 验证权限和请求参数 +Controller->>Logic : 调用逻辑处理 +Logic->>Service : 更新订单状态 +Service->>Database : 保存订单状态 +Database-->>Service : 返回结果 +Service->>Logic : 返回处理结果 +Logic->>Service : 触发发货或评价处理 +Service->>ThirdParty : 向上游系统回调 +ThirdParty-->>Service : 返回回调结果 +Service-->>Logic : 返回最终结果 +Logic-->>Controller : 返回处理结果 +Controller-->>ThirdParty : 返回响应 +``` + +**图表来源** + +- [card_info_c_trip_v1_order_callback.go](file://internal/controller/card_info_c_trip/card_info_c_trip_v1_order_callback.go) +- [card_info_jd_v1_order_callback.go](file://internal/controller/card_info_jd/card_info_jd_v1_order_callback.go) +- [card_info_walmart_v1_order_callback.go](file://internal/controller/card_info_walmart/card_info_walmart_v1_order_callback.go) +- [card_info_t_mall_game_v1_t_mall_game_agiso_callback.go](file://internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_agiso_callback.go) +- [callback.go](file://internal/logic/card_redeem_order/callback.go) +- [card_redeem_order.go](file://internal/service/card_redeem_order.go) + +## 详细组件分析 + +### 控制器组件分析 + +控制器组件负责接收外部回调请求,进行权限验证和基本校验,然后调用逻辑层处理具体业务。不同电商平台的控制器实现略有差异,但基本流程一致。 + +#### 携程订单回调 + +```mermaid +sequenceDiagram +participant Client as "携程平台" +participant Controller as "OrderCallback" +participant Service as "CardRedeemOrder" +Client->>Controller : 发送订单回调请求 +Controller->>Controller : 验证用户权限 +Controller->>Service : 查询订单信息 +Service-->>Controller : 返回订单信息 +Controller->>Controller : 验证订单状态 +Controller->>Service : 调用回调服务 +Service-->>Controller : 返回处理结果 +Controller-->>Client : 返回响应 +``` + +**图表来源** + +- [card_info_c_trip_v1_order_callback.go](file://internal/controller/card_info_c_trip/card_info_c_trip_v1_order_callback.go) + +#### 京东订单回调 + +```mermaid +sequenceDiagram +participant Client as "京东平台" +participant Controller as "OrderCallback" +participant Service as "CardRedeemOrder" +Client->>Controller : 发送订单回调请求 +Controller->>Controller : 验证用户权限 +Controller->>Service : 查询订单信息 +Service-->>Controller : 返回订单信息 +Controller->>Controller : 验证订单状态 +Controller->>Service : 调用回调服务 +Service-->>Controller : 返回处理结果 +Controller-->>Client : 返回响应 +``` + +**图表来源** + +- [card_info_jd_v1_order_callback.go](file://internal/controller/card_info_jd/card_info_jd_v1_order_callback.go) + +#### 沃尔玛订单回调 + +```mermaid +sequenceDiagram +participant Client as "沃尔玛平台" +participant Controller as "OrderCallback" +participant Service as "CardRedeemOrder" +Client->>Controller : 发送订单回调请求 +Controller->>Controller : 验证用户权限 +Controller->>Service : 查询订单信息 +Service-->>Controller : 返回订单信息 +Controller->>Controller : 验证订单状态 +Controller->>Service : 调用回调服务 +Service-->>Controller : 返回处理结果 +Controller-->>Client : 返回响应 +``` + +**图表来源** + +- [card_info_walmart_v1_order_callback.go](file://internal/controller/card_info_walmart/card_info_walmart_v1_order_callback.go) + +#### 天猫游戏订单回调 + +```mermaid +sequenceDiagram +participant Client as "阿奇索平台" +participant Controller as "TMallGameAgisoCallback" +participant Logic as "handleCallBackPayment" +participant Service as "RechargeTMallGameOrder" +Client->>Controller : 发送支付成功回调 +Controller->>Controller : 验证签名 +Controller->>Logic : 处理支付成功 +Logic->>Service : 添加订单信息 +Service-->>Logic : 返回订单ID +Logic->>Service : 获取淘宝订单信息 +Service-->>Logic : 返回订单详情 +Logic->>Service : 更新订单信息 +Service-->>Logic : 返回处理结果 +Logic->>Service : 尝试虚拟发货 +Service-->>Logic : 返回发货结果 +Logic-->>Controller : 返回处理结果 +Controller-->>Client : 返回响应 +``` + +**图表来源** + +- [card_info_t_mall_game_v1_t_mall_game_agiso_callback.go](file://internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_agiso_callback.go) + +### 回调逻辑分析 + +回调逻辑组件负责处理订单状态变更后的业务逻辑,包括向上游系统发送回调通知。 + +#### 回调流程 + +```mermaid +flowchart TD +Start([开始]) --> ValidateOrder["验证订单状态"] +ValidateOrder --> OrderValid{"订单有效?"} +OrderValid --> |否| End([结束]) +OrderValid --> |是| CheckCallbackConfig["检查回调配置"] +CheckCallbackConfig --> ShouldCallback{"需要回调?"} +ShouldCallback --> |否| End +ShouldCallback --> |是| PrepareParams["准备回调参数"] +PrepareParams --> SignParams["生成签名"] +SignParams --> SendCallback["发送回调请求"] +SendCallback --> CallbackSuccess{"回调成功?"} +CallbackSuccess --> |是| UpdateStatus["更新回调状态为成功"] +CallbackSuccess --> |否| Retry["重试(最多3次)"] +Retry --> SendCallback +UpdateStatus --> End +``` + +**图表来源** + +- [callback.go](file://internal/logic/card_redeem_order/callback.go) + +**章节来源** + +- [callback.go](file://internal/logic/card_redeem_order/callback.go) +- [card_redeem_order.go](file://internal/service/card_redeem_order.go) +- [card_redeem.go](file://internal/consts/card_redeem.go) + +## 依赖分析 + +订单回调功能依赖于多个内部组件和外部服务。内部依赖包括用户认证服务、数据库访问组件和缓存服务;外部依赖包括各电商平台的API接口和回调验证服务。这些依赖通过接口注入的方式进行管理,确保了组件间的松耦合。 + +```mermaid +graph TD +CallbackController --> SysAuth["SysAuth"] +CallbackController --> CardRedeemOrder["CardRedeemOrder"] +CallbackController --> Cache["Cache"] +CardRedeemOrder --> Database["Database"] +CardRedeemOrder --> ConfigDict["SysConfigDict"] +TMallGameCallback --> Agiso["Agiso"] +TMallGameCallback --> TmallAPI["TmallAPI"] +CallbackLogic --> Pool["Pool"] +CallbackLogic --> Trace["Trace"] +``` + +**图表来源** + +- [card_info_c_trip_v1_order_callback.go](file://internal/controller/card_info_c_trip/card_info_c_trip_v1_order_callback.go) +- [card_info_jd_v1_order_callback.go](file://internal/controller/card_info_jd/card_info_jd_v1_order_callback.go) +- [card_info_walmart_v1_order_callback.go](file://internal/controller/card_info_walmart/card_info_walmart_v1_order_callback.go) +- [card_info_t_mall_game_v1_t_mall_game_agiso_callback.go](file://internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_agiso_callback.go) +- [callback.go](file://internal/logic/card_redeem_order/callback.go) +- [card_redeem_order.go](file://internal/service/card_redeem_order.go) + +**章节来源** + +- [card_info_c_trip_v1_order_callback.go](file://internal/controller/card_info_c_trip/card_info_c_trip_v1_order_callback.go) +- [card_info_jd_v1_order_callback.go](file://internal/controller/card_info_jd/card_info_jd_v1_order_callback.go) +- [card_info_walmart_v1_order_callback.go](file://internal/controller/card_info_walmart/card_info_walmart_v1_order_callback.go) +- [card_info_t_mall_game_v1_t_mall_game_agiso_callback.go](file://internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_agiso_callback.go) +- [callback.go](file://internal/logic/card_redeem_order/callback.go) +- [card_redeem_order.go](file://internal/service/card_redeem_order.go) + +## 性能考虑 + +订单回调功能在设计时充分考虑了性能因素。通过使用连接池和缓存机制,减少了数据库访问的开销;通过异步处理和并发控制,提高了系统的吞吐量;通过签名验证和防重机制,确保了系统的安全性和稳定性。此外,系统还实现了重试机制,确保在临时故障情况下能够自动恢复。 + +## 故障排除指南 + +### 常见问题及解决方案 + +1. **回调失败** + - 检查上游系统的回调地址是否正确 + - 检查网络连接是否正常 + - 检查回调参数是否符合要求 + - 查看日志中的错误信息 + +2. **重复回调** + - 检查系统是否实现了防重机制 + - 查看缓存中的订单状态 + - 检查数据库中的订单记录 + +3. **签名验证失败** + - 检查密钥是否正确 + - 检查时间戳是否在有效范围内 + - 检查参数顺序是否正确 + +4. **发货失败** + - 检查淘宝账号状态 + - 检查商品库存 + - 检查发货规则 + +**章节来源** + +- [card_info_t_mall_game_v1_t_mall_game_agiso_callback.go](file://internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_agiso_callback.go) +- [callback.go](file://internal/logic/card_redeem_order/callback.go) + +## 结论 + +订单回调功能是系统中关键的业务组件,负责处理外部平台的订单状态变更通知。通过分层架构设计和模块化实现,该功能具备良好的可维护性和可扩展性。系统通过权限验证、状态校验、防重机制和重试机制,确保了回调处理的准确性和可靠性。未来可以考虑增加更多的监控指标和告警机制,进一步提升系统的稳定性和可观测性。 \ No newline at end of file diff --git a/.qoder/repowiki/zh/content/部署配置/部署配置.md b/.qoder/repowiki/zh/content/部署配置/部署配置.md index 622693df..1f6fdb74 100644 --- a/.qoder/repowiki/zh/content/部署配置/部署配置.md +++ b/.qoder/repowiki/zh/content/部署配置/部署配置.md @@ -14,8 +14,19 @@ - [configmap.yaml](file://manifest/deploy/kustomize/overlays/develop/configmap.yaml) - [Makefile](file://Makefile) - [hack.mk](file://hack/hack.mk) +- [.drone.yml](file://.drone.yml) +- [cron.go](file://utility/cron/cron.go) +## 更新摘要 + +**变更内容** + +- 更新了Docker镜像仓库地址,从旧地址迁移至 `git.oceanpay.cc` +- 调整了京东支付状态监控任务的执行频率,由每10秒一次改为每30秒一次 +- 新增了每分钟执行的京东订单支付状态检查任务 +- 相应更新了CI/CD配置文件中的Docker登录和推送指令 + ## 目录 1. [配置管理](#配置管理) 2. [Docker容器化部署](#docker容器化部署) @@ -47,7 +58,8 @@ `manifest/docker/Dockerfile` 文件定义了kami_backend服务的容器镜像构建流程,采用多阶段构建策略以减小最终镜像体积。 -构建过程分为两个阶段:**构建阶段**使用 `golang:1.24-alpine` 作为基础镜像,设置Go模块代理,执行依赖整理和二进制编译。**运行阶段**基于轻量级的 `alpine:latest` 镜像,复制编译好的二进制文件和必要的资源文件(如静态资源和配置文件)。 +构建过程分为两个阶段:**构建阶段**使用 `golang:1.25-alpine` 作为基础镜像,设置Go模块代理,执行依赖整理和二进制编译。**运行阶段 +**基于轻量级的 `alpine:latest` 镜像,复制编译好的二进制文件和必要的资源文件(如静态资源和配置文件)。 运行阶段还配置了时区为亚洲/上海,安装了curl工具用于健康检查,并设置了 `HEALTHCHECK` 指令,通过curl命令定期检查服务的健康状态。容器暴露12401端口,通过CMD指令启动主程序。 @@ -61,7 +73,7 @@ ```mermaid graph TD -A[Docker构建阶段] --> B[golang:1.24-alpine] +A[Docker构建阶段] --> B[golang:1.25-alpine] B --> C[复制源码] C --> D[go mod tidy] D --> E[go build] @@ -250,17 +262,20 @@ D_Kustom --> D_Patch - 定期轮换 `secret` 中的加密密钥 - 使用专用的数据库用户,限制权限 - 敏感信息通过环境变量注入,而非硬编码 +- CI/CD流程中使用新的Docker仓库地址 `git.oceanpay.cc` **性能实践** - 根据实际负载调整 `database.maxOpen` 连接池大小 - 合理设置 `redis.maxActive` 避免资源耗尽 - 监控连接池使用情况,及时发现瓶颈 +- 京东支付状态监控任务已调整为每30秒执行一次,减少系统负载 **运维实践** - 使用 `Makefile` 的 `image.push` 目标确保镜像版本可追溯 - 定期清理悬空镜像和停止的容器 - 备份重要配置文件 - 建立部署回滚机制 +- 新增了每分钟执行的京东订单支付状态检查任务,确保订单状态及时更新 **开发实践** - 本地开发使用 `docker-compose-local.yaml` @@ -273,4 +288,6 @@ D_Kustom --> D_Patch - [Dockerfile](file://manifest/docker/Dockerfile#L1-L41) - [docker-compose.yml](file://manifest/docker/docker-compose.yml#L1-L19) - [install.sh](file://manifest/docker/install.sh#L1-L144) -- [kustomization.yaml](file://manifest/deploy/kustomize/base/kustomization.yaml#L1-L9) \ No newline at end of file +- [kustomization.yaml](file://manifest/deploy/kustomize/base/kustomization.yaml#L1-L9) +- [.drone.yml](file://.drone.yml#L1-L46) +- [cron.go](file://utility/cron/cron.go#L1-L65) \ No newline at end of file diff --git a/.qoder/repowiki/zh/meta/repowiki-metadata.json b/.qoder/repowiki/zh/meta/repowiki-metadata.json index 3a361d0d..b2a45ed0 100644 --- a/.qoder/repowiki/zh/meta/repowiki-metadata.json +++ b/.qoder/repowiki/zh/meta/repowiki-metadata.json @@ -1 +1,11707 @@ -{"code_snippets":[{"id":"d018b60f9d48763366246e537520686c","path":"internal/middleware/auth.go","line_range":"22-51","gmt_create":"2025-10-11T17:24:20.6297914+08:00","gmt_modified":"2025-10-11T17:24:20.6297914+08:00"},{"id":"f451dcc5212a1a2b4e0ce80b06f8e185","path":"internal/middleware/error_handler.go","line_range":"8-27","gmt_create":"2025-10-11T17:24:20.6365669+08:00","gmt_modified":"2025-10-11T17:24:20.6365669+08:00"},{"id":"c778028d86a2a65f31627126a2575c0c","path":"/main.go","line_range":"1-50","gmt_create":"2025-10-11T17:24:50.2721304+08:00","gmt_modified":"2025-10-11T17:24:50.2721304+08:00"},{"id":"4bad57683321787594727c10ee94c33b","path":"/internal/logic/logic.go","line_range":"1-37","gmt_create":"2025-10-11T17:24:50.2790888+08:00","gmt_modified":"2025-10-11T17:24:50.2790888+08:00"},{"id":"aee3a2f386eb5a98ddf5ca7cccff0929","path":"/internal/service/sys_user.go","line_range":"1-102","gmt_create":"2025-10-11T17:24:50.286482+08:00","gmt_modified":"2025-10-11T17:24:50.286482+08:00"},{"id":"6fe67e9d805a0a633f90f268ef2ee2f4","path":"/internal/service/card_apple_order.go","line_range":"1-127","gmt_create":"2025-10-11T17:24:50.2932219+08:00","gmt_modified":"2025-10-11T17:24:50.2932219+08:00"},{"id":"32bf22e91c31d6f141bf6b7ef0de7b96","path":"/internal/service/card_redeem_order.go","line_range":"1-80","gmt_create":"2025-10-11T17:24:50.299484+08:00","gmt_modified":"2025-10-11T17:24:50.299484+08:00"},{"id":"7face210770aa4ec553604c6d0931175","path":"/internal/service/merchant_order.go","line_range":"1-44","gmt_create":"2025-10-11T17:24:50.3052361+08:00","gmt_modified":"2025-10-11T17:24:50.3052361+08:00"},{"id":"842d4a8a22707111e666ac492238b5ef","path":"/internal/service/restriction.go","line_range":"1-67","gmt_create":"2025-10-11T17:24:50.3105736+08:00","gmt_modified":"2025-10-11T17:24:50.3105736+08:00"},{"id":"c701edfecf07f4017d7d956624072fde","path":"/internal/logic/sys_user/sys_user.go","line_range":"1-767","gmt_create":"2025-10-11T17:24:50.3180677+08:00","gmt_modified":"2025-10-11T17:24:50.3180677+08:00"},{"id":"4d71ea0833e7a0a8266b6f2e8b05e459","path":"/internal/dao/v_1_sys_user.go","line_range":"1-28","gmt_create":"2025-10-11T17:24:50.3245265+08:00","gmt_modified":"2025-10-11T17:24:50.3245265+08:00"},{"id":"0d5907fd86f99e310c6663b7e705ab7b","path":"/internal/model/sys_user.go","line_range":"1-92","gmt_create":"2025-10-11T17:24:50.3286831+08:00","gmt_modified":"2025-10-11T17:24:50.3286831+08:00"},{"id":"488c440eb23bb1208ec810e0d3738028","path":"/internal/logic/card_apple_order/order.go","line_range":"1-343","gmt_create":"2025-10-11T17:24:50.3350586+08:00","gmt_modified":"2025-10-11T17:24:50.3350586+08:00"},{"id":"badc687590596030499ebead18afabfc","path":"/internal/logic/merchant_order/order.go","line_range":"1-48","gmt_create":"2025-10-11T17:24:50.3414172+08:00","gmt_modified":"2025-10-11T17:24:50.3414172+08:00"},{"id":"cf2c6c7ec0ed0b542c5ad37d11c2ea57","path":"/internal/logic/restriction/restriction.go","line_range":"1-174","gmt_create":"2025-10-11T17:24:50.3488537+08:00","gmt_modified":"2025-10-11T17:24:50.3488537+08:00"},{"id":"f67970ad2e09c5f5a6048ff8ef3cd50c","path":"/manifest/config/config.yaml","line_range":"1-10","gmt_create":"2025-10-11T17:24:50.356256+08:00","gmt_modified":"2025-10-11T17:24:50.356256+08:00"},{"id":"9faa5f2db2ec0340fbf2ecfb0e5a7740","path":"internal/model/entity/v_1_account_info.go","line_range":"12-25","gmt_create":"2025-10-11T17:25:02.8806843+08:00","gmt_modified":"2025-10-11T17:25:02.8806843+08:00"},{"id":"1c004f6c7e82e215a8538bb563de1a80","path":"internal/model/entity/v_1_order_info.go","line_range":"12-63","gmt_create":"2025-10-11T17:25:02.890777+08:00","gmt_modified":"2025-10-11T17:25:02.890777+08:00"},{"id":"9311a5593c3cb84df188d914b5fcb57b","path":"internal/model/entity/v_1_card_apple_recharge_info.go","line_range":"11-33","gmt_create":"2025-10-11T17:25:02.8993265+08:00","gmt_modified":"2025-10-11T17:25:02.8993265+08:00"},{"id":"734fa931bccd869983dd85fd9b7ab371","path":"internal/model/entity/v_1_jd_cookie_account.go","line_range":"12-28","gmt_create":"2025-10-11T17:25:02.9068782+08:00","gmt_modified":"2025-10-11T17:25:02.9068782+08:00"},{"id":"d96edb8b929124b14e6a2f23bb5174d1","path":"internal/model/entity/v_1_jd_cookie_jd_order.go","line_range":"12-27","gmt_create":"2025-10-11T17:25:02.9170502+08:00","gmt_modified":"2025-10-11T17:25:02.9170502+08:00"},{"id":"6b7240b29633b5a3401cf9e8ec69999f","path":"internal/model/entity/v_1_jd_cookie_order.go","line_range":"12-22","gmt_create":"2025-10-11T17:25:02.9284142+08:00","gmt_modified":"2025-10-11T17:25:02.9284142+08:00"},{"id":"c9ced0e12702f2bb3837a96e62c73320","path":"internal/model/do/v_1_account_info.go","line_range":"12-26","gmt_create":"2025-10-11T17:25:02.9508576+08:00","gmt_modified":"2025-10-11T17:25:02.9508576+08:00"},{"id":"338cc7bab8a15d021b6bf4faea030524","path":"internal/dao/v_1_account_info.go","line_range":"1-27","gmt_create":"2025-10-11T17:25:02.9588326+08:00","gmt_modified":"2025-10-11T17:25:02.9588326+08:00"},{"id":"314337c7901e5f608be04c99dbf9dcda","path":"utility/otel/config.go","line_range":"1-67","gmt_create":"2025-10-11T17:25:57.9889511+08:00","gmt_modified":"2025-10-11T17:25:57.9889511+08:00"},{"id":"02b920b240a8a0b5cc76dbdd011bfade","path":"utility/otel/manager.go","line_range":"1-257","gmt_create":"2025-10-11T17:25:57.9970697+08:00","gmt_modified":"2025-10-11T17:25:57.9970697+08:00"},{"id":"a1f8285bc58503a0979846e628322395","path":"utility/otel/utils.go","line_range":"1-230","gmt_create":"2025-10-11T17:25:58.0041638+08:00","gmt_modified":"2025-10-11T17:25:58.0041638+08:00"},{"id":"62d876856f82a4ea1e63b343aa650ddc","path":"utility/otel/handler.go","line_range":"1-164","gmt_create":"2025-10-11T17:25:58.014214+08:00","gmt_modified":"2025-10-11T17:25:58.014214+08:00"},{"id":"0450d2bd60154c9defe18e2dd0db3944","path":"api/monitor/monitor.go","line_range":"1-15","gmt_create":"2025-10-11T17:25:58.0235496+08:00","gmt_modified":"2025-10-11T17:25:58.0235496+08:00"},{"id":"776a898a7e3af295ac0d3f657e027a43","path":"api/monitor/v1/heathcheck.go","line_range":"1-13","gmt_create":"2025-10-11T17:25:58.030442+08:00","gmt_modified":"2025-10-11T17:25:58.030442+08:00"},{"id":"f4357af3bdee1af700d66352486740ac","path":"internal/controller/monitor/monitor_new.go","line_range":"1-15","gmt_create":"2025-10-11T17:25:58.035779+08:00","gmt_modified":"2025-10-11T17:25:58.035779+08:00"},{"id":"1f3f6baf21697865c02621086d9ebce9","path":"internal/controller/monitor/monitor_v1_health_check.go","line_range":"1-13","gmt_create":"2025-10-11T17:25:58.0432208+08:00","gmt_modified":"2025-10-11T17:25:58.0432208+08:00"},{"id":"852c344b512f86e468cc155a007239c3","path":"internal/cmd/cmd.go","line_range":"1-92","gmt_create":"2025-10-11T17:25:58.048902+08:00","gmt_modified":"2025-10-11T17:25:58.048902+08:00"},{"id":"7f41c190fab616ed408fb3470b01e156","path":"utility/monitor/monitor.go","line_range":"1-14","gmt_create":"2025-10-11T17:25:58.0551258+08:00","gmt_modified":"2025-10-11T17:25:58.0551258+08:00"},{"id":"95ef136cd7b635e1a68adacf08cac1d9","path":"utility/integration/redeem/jd/api.go","line_range":"1-5","gmt_create":"2025-10-11T17:26:05.9673928+08:00","gmt_modified":"2025-10-11T17:26:05.9673928+08:00"},{"id":"59dfa0261bb6f0fff79660d43bcbf75b","path":"utility/integration/redeem/ctrip/api.go","line_range":"1-5","gmt_create":"2025-10-11T17:26:05.9742108+08:00","gmt_modified":"2025-10-11T17:26:05.9742108+08:00"},{"id":"587a22c21d9275066f3fe6d44d05bff3","path":"utility/integration/redeem/walmart/api.go","line_range":"1-5","gmt_create":"2025-10-11T17:26:05.9805994+08:00","gmt_modified":"2025-10-11T17:26:05.9805994+08:00"},{"id":"b39d2a779fe4605757ede61608c45123","path":"utility/integration/tmall/api/api.go","line_range":"1-20","gmt_create":"2025-10-11T17:26:05.9873073+08:00","gmt_modified":"2025-10-11T17:26:05.9873073+08:00"},{"id":"8fe8c9081678e20a4b8fa4a4bbddf5e4","path":"utility/integration/originalJd/client.go","line_range":"11-123","gmt_create":"2025-10-11T17:26:05.994888+08:00","gmt_modified":"2025-10-11T17:26:05.994888+08:00"},{"id":"d21bc3b599b7c526e4c859b7f957c9c3","path":"utility/integration/originalJd/model.go","line_range":"1-144","gmt_create":"2025-10-11T17:26:06.0022236+08:00","gmt_modified":"2025-10-11T17:26:06.0022236+08:00"},{"id":"f48ef892510854b251b181c258bcd119","path":"utility/otel/config.go","line_range":"1-68","gmt_create":"2025-10-11T17:26:06.0096722+08:00","gmt_modified":"2025-10-11T17:26:06.0096722+08:00"},{"id":"964e3fe5d6407728afe85f53719ef569","path":"utility/otel/manager.go","line_range":"1-258","gmt_create":"2025-10-11T17:26:06.0148565+08:00","gmt_modified":"2025-10-11T17:26:06.0148565+08:00"},{"id":"332f9fba7c977c370d3ccf2a3aad96ce","path":"main.go","line_range":"1-50","gmt_create":"2025-10-11T17:26:06.0299455+08:00","gmt_modified":"2025-10-11T17:26:06.0299455+08:00"},{"id":"616759a9a4d327984230aefdae310fbb","path":"utility/otel/utils.go","line_range":"22-33","gmt_create":"2025-10-11T17:26:06.0360887+08:00","gmt_modified":"2025-10-11T17:26:06.0360887+08:00"},{"id":"d32ea696977b297ef621a0fb8b5ab306","path":"utility/otel/manager.go","line_range":"35-86","gmt_create":"2025-10-11T17:26:06.0419585+08:00","gmt_modified":"2025-10-11T17:26:06.0419585+08:00"},{"id":"b1f6a58d5a943577f0c54d3666cb8975","path":"utility/otel/utils.go","line_range":"1-50","gmt_create":"2025-10-11T17:26:06.0481929+08:00","gmt_modified":"2025-10-11T17:26:06.0481929+08:00"},{"id":"589fe36265ad27bcea83406c4f9b4f62","path":"resource/casbin/rbac_model.conf","line_range":"1-14","gmt_create":"2025-10-11T17:26:06.055028+08:00","gmt_modified":"2025-10-11T17:26:06.055028+08:00"},{"id":"59b6d508a3e965dc106b1cbeac2570ae","path":"utility/otel/config.go","line_range":"40-52","gmt_create":"2025-10-11T17:26:06.0618563+08:00","gmt_modified":"2025-10-11T17:26:06.0618563+08:00"},{"id":"01f4775a3f4eabe935537909fd08110b","path":"utility/otel/manager.go","line_range":"50-55","gmt_create":"2025-10-11T17:26:06.0689562+08:00","gmt_modified":"2025-10-11T17:26:06.0689562+08:00"},{"id":"6172294c21d9eeef4f7e1cbee7494df4","path":"internal/logic/jd_cookie/order.go","line_range":"500-550","gmt_create":"2025-10-11T17:26:06.0778402+08:00","gmt_modified":"2025-10-11T17:26:06.0778402+08:00"},{"id":"2deccc6412aa3a542406ea4123dbd7e6","path":"internal/consts/jd_cookie.go","line_range":"150-160","gmt_create":"2025-10-11T17:26:06.0909663+08:00","gmt_modified":"2025-10-11T17:26:06.0909663+08:00"},{"id":"ec6f80518cdb41b1cb7ec141e92638a1","path":"internal/middleware/auth.go","line_range":"1-154","gmt_create":"2025-10-11T17:27:31.4925917+08:00","gmt_modified":"2025-10-11T17:27:31.4925917+08:00"},{"id":"972216ab1861cc2715878f10ca1d7e82","path":"internal/model/sys_user.go","line_range":"1-92","gmt_create":"2025-10-11T17:27:31.4994074+08:00","gmt_modified":"2025-10-11T17:27:31.4994074+08:00"},{"id":"43ed130e118ec9a873129314ddcd834d","path":"internal/service/sys_casbin.go","line_range":"1-50","gmt_create":"2025-10-11T17:27:31.5070197+08:00","gmt_modified":"2025-10-11T17:27:31.5070197+08:00"},{"id":"144cff56ec3838a61a926b3ff9a3d25e","path":"internal/middleware/auth.go","line_range":"50-100","gmt_create":"2025-10-11T17:27:31.5126054+08:00","gmt_modified":"2025-10-11T17:27:31.5126054+08:00"},{"id":"4f93cccb25d8c64e73e92615a203e00e","path":"utility/token/user_token.go","line_range":"1-50","gmt_create":"2025-10-11T17:27:31.5191753+08:00","gmt_modified":"2025-10-11T17:27:31.5191753+08:00"},{"id":"a964b09bca4acd49db9824c141108f00","path":"resource/casbin/rbac_model.conf","line_range":"1-15","gmt_create":"2025-10-11T17:27:31.528753+08:00","gmt_modified":"2025-10-11T17:27:31.528753+08:00"},{"id":"5613af50c546b7eeb54ca83263a76c29","path":"internal/dao/v_1_sys_casbin_rule.go","line_range":"1-28","gmt_create":"2025-10-11T17:27:31.5366756+08:00","gmt_modified":"2025-10-11T17:27:31.5366756+08:00"},{"id":"ceaf312dde8910a6de9a4671cd06d559","path":"utility/mfa/mfa.go","line_range":"1-53","gmt_create":"2025-10-11T17:27:31.5413338+08:00","gmt_modified":"2025-10-11T17:27:31.5413338+08:00"},{"id":"7d199570ba96ddc2ca6639d6d726d419","path":"internal/controller/sysUser/sysUser_v1_totp_status_get.go","line_range":"1-37","gmt_create":"2025-10-11T17:27:31.5568949+08:00","gmt_modified":"2025-10-11T17:27:31.5568949+08:00"},{"id":"8c317fe404ce5c22b9feef901431fcc5","path":"internal/controller/sysUser/sysUser_v1_totp_set.go","line_range":"1-34","gmt_create":"2025-10-11T17:27:31.5692121+08:00","gmt_modified":"2025-10-11T17:27:31.5692121+08:00"},{"id":"a5e8020f6c112eb351bfce346cc7e7cd","path":"utility/verify/aes_ecb.go","line_range":"1-91","gmt_create":"2025-10-11T17:27:31.5777541+08:00","gmt_modified":"2025-10-11T17:27:31.5777541+08:00"},{"id":"cce1b31f34a553e7032bfe746d1cd94b","path":"utility/verify/md5.go","line_range":"1-32","gmt_create":"2025-10-11T17:27:31.5841487+08:00","gmt_modified":"2025-10-11T17:27:31.5841487+08:00"},{"id":"a4b14b6b79267d38f599e305591c3273","path":"internal/service/sys_user.go","line_range":"1-102","gmt_create":"2025-10-11T17:27:31.5942703+08:00","gmt_modified":"2025-10-11T17:27:31.5942703+08:00"},{"id":"4eedd1dcf74ca7ed561a2da81f45f3d7","path":"internal/errHandler/handler.go","line_range":"1-50","gmt_create":"2025-10-11T17:27:31.6072876+08:00","gmt_modified":"2025-10-11T17:27:31.6072876+08:00"},{"id":"dd733661014ef5805339ded90facaed0","path":"\\utility\\integration\\originalJd\\client.go","line_range":"5-35","gmt_create":"2025-10-11T17:28:29.8602014+08:00","gmt_modified":"2025-10-11T17:28:29.8602014+08:00"},{"id":"9749731ed765b177a75bbb84edc2c781","path":"\\utility\\integration\\originalJd\\model.go","line_range":"35-50","gmt_create":"2025-10-11T17:28:29.8660164+08:00","gmt_modified":"2025-10-11T17:28:29.8660164+08:00"},{"id":"f415bde86145ca67e63b0a6a7645487a","path":"\\utility\\integration\\originalJd\\client.go","line_range":"65-85","gmt_create":"2025-10-11T17:28:29.8731717+08:00","gmt_modified":"2025-10-11T17:28:29.8731717+08:00"},{"id":"ff9ed734519da40b64bea347532ad39d","path":"\\utility\\integration\\originalJd\\model.go","line_range":"110-125","gmt_create":"2025-10-11T17:28:29.8794512+08:00","gmt_modified":"2025-10-11T17:28:29.8794512+08:00"},{"id":"a0944686e185b8cdc6f06d21d5678c43","path":"\\internal\\consts\\card_redeem_cookie.go","line_range":"25-35","gmt_create":"2025-10-11T17:28:29.8863675+08:00","gmt_modified":"2025-10-11T17:28:29.8863675+08:00"},{"id":"c6ba97566833b54cd4ff516c8ea88f46","path":"\\internal\\consts\\card_jd.go","line_range":"45-65","gmt_create":"2025-10-11T17:28:29.8921443+08:00","gmt_modified":"2025-10-11T17:28:29.8921443+08:00"},{"id":"8a5414d484500ba17e6a788ce484c21b","path":"\\utility\\integration\\originalJd\\client.go","line_range":"10-20","gmt_create":"2025-10-11T17:28:29.8982227+08:00","gmt_modified":"2025-10-11T17:28:29.8982227+08:00"},{"id":"37112fccfc8b194c480bb373d48115f7","path":"\\utility\\integration\\originalJd\\client.go","line_range":"70-80","gmt_create":"2025-10-11T17:28:29.9050845+08:00","gmt_modified":"2025-10-11T17:28:29.9050845+08:00"},{"id":"7edb6bdca57d6bc188cd5b2bbbc4a138","path":"internal/logic/jd_cookie/order.go","line_range":"50-130","gmt_create":"2025-10-11T17:28:54.2240116+08:00","gmt_modified":"2025-10-11T17:28:54.2240116+08:00"},{"id":"5266c40167bf3310e85d510942a06173","path":"internal/logic/jd_cookie/order.go","line_range":"450-490","gmt_create":"2025-10-11T17:28:54.2307842+08:00","gmt_modified":"2025-10-11T17:28:54.2307842+08:00"},{"id":"782300bf902736466e525e642592486f","path":"utility/integration/originalJd/model.go","line_range":"136-143","gmt_create":"2025-10-11T17:28:54.2371369+08:00","gmt_modified":"2025-10-11T17:28:54.2371369+08:00"},{"id":"47824ef49939140f82365cb3d0eb0cc1","path":"utility/verify/aes_ecb.go","line_range":"1-90","gmt_create":"2025-10-11T17:28:55.4152182+08:00","gmt_modified":"2025-10-11T17:28:55.4152182+08:00"},{"id":"cd5e2b6c3c51650146b62ae6dc8f5ad7","path":"utility/verify/md5.go","line_range":"1-31","gmt_create":"2025-10-11T17:28:55.4235726+08:00","gmt_modified":"2025-10-11T17:28:55.4235726+08:00"},{"id":"767b677153edb86515b77286476ce79b","path":"utility/utils/tools.go","line_range":"1-25","gmt_create":"2025-10-11T17:28:55.4328919+08:00","gmt_modified":"2025-10-11T17:28:55.4328919+08:00"},{"id":"fea30ea749579359c4f54de16878cf4f","path":"utility/verify/aes_ecb.go","line_range":"15-85","gmt_create":"2025-10-11T17:28:55.4429978+08:00","gmt_modified":"2025-10-11T17:28:55.4429978+08:00"},{"id":"ef1e0649738859b4447918324f2572d9","path":"utility/utils/tools.go","line_range":"22-24","gmt_create":"2025-10-11T17:28:55.4526426+08:00","gmt_modified":"2025-10-11T17:28:55.4526426+08:00"},{"id":"0383311e02468d4e918e6065aa543159","path":"internal/dao/internal/v_1_sys_user.go","line_range":"37-81","gmt_create":"2025-10-11T17:28:55.462306+08:00","gmt_modified":"2025-10-11T17:28:55.462306+08:00"},{"id":"3b0d083ad6e1e42c3cadee5c77b796a0","path":"internal/model/sys_user.go","line_range":"0-91","gmt_create":"2025-10-11T17:28:55.4705312+08:00","gmt_modified":"2025-10-11T17:28:55.4705312+08:00"},{"id":"35ff891033d9d93c8fa7614ad2fce15d","path":"JD_COOKIE_REFACTOR_REPORT.md","line_range":"1-167","gmt_create":"2025-10-11T17:28:55.4803696+08:00","gmt_modified":"2025-10-11T17:28:55.4803696+08:00"},{"id":"8f77a4f0854077c3774992dffc7b67b7","path":"utility/config/config.go","line_range":"15-35","gmt_create":"2025-10-11T17:28:55.486723+08:00","gmt_modified":"2025-10-11T17:28:55.486723+08:00"}],"commits":[{"id":"77aff4289e7b60617a6b97873721f586af264581","message":"feat(jd-cookie): 实现京东订单创建及支付链接刷新功能","gmt_create":"2025-10-11T17:24:20.7152632+08:00","gmt_modified":"2025-10-11T17:24:20.7152632+08:00"},{"id":"0fdae6a89fef78f6368400b1fe726d987adda7b1","message":"refactor(card_redeem):重构携程卡账户接口和京东cookie逻辑","gmt_create":"2025-10-11T17:24:50.7389067+08:00","gmt_modified":"2025-10-11T17:24:50.7389067+08:00"},{"id":"f029eb7d6cfc4e70657225da8d0f4d90071071e4","message":"docs(jd_cookie): 添加京东Cookie管理模块重构设计文档","gmt_create":"2025-10-11T17:25:03.3513379+08:00","gmt_modified":"2025-10-11T17:25:03.3513379+08:00"}],"knowledge_relations":[{"id":295,"source_id":"056cda49-d96e-49a5-831c-7def9872435e","target_id":"d2e0d8f8-6a5a-4d1d-aa94-30a022535241","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 056cda49-d96e-49a5-831c-7def9872435e -\u003e d2e0d8f8-6a5a-4d1d-aa94-30a022535241","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":296,"source_id":"056cda49-d96e-49a5-831c-7def9872435e","target_id":"33c05b7f-e793-4a3f-bb87-9c6ea22d7e63","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 056cda49-d96e-49a5-831c-7def9872435e -\u003e 33c05b7f-e793-4a3f-bb87-9c6ea22d7e63","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":297,"source_id":"056cda49-d96e-49a5-831c-7def9872435e","target_id":"c2fef000-7272-4553-b8e9-650afd08aef6","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 056cda49-d96e-49a5-831c-7def9872435e -\u003e c2fef000-7272-4553-b8e9-650afd08aef6","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":298,"source_id":"056cda49-d96e-49a5-831c-7def9872435e","target_id":"4708f37c-6c92-4fa9-aba1-fa843c3863f2","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 056cda49-d96e-49a5-831c-7def9872435e -\u003e 4708f37c-6c92-4fa9-aba1-fa843c3863f2","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":299,"source_id":"33150d2c-ac78-4784-a31b-e9d342cc880c","target_id":"4cc7d7ec-1470-45ec-8b91-d43b0285ff1e","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 33150d2c-ac78-4784-a31b-e9d342cc880c -\u003e 4cc7d7ec-1470-45ec-8b91-d43b0285ff1e","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":300,"source_id":"33150d2c-ac78-4784-a31b-e9d342cc880c","target_id":"1efc56f9-e901-4ce4-b98e-e1c793ab2bda","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 33150d2c-ac78-4784-a31b-e9d342cc880c -\u003e 1efc56f9-e901-4ce4-b98e-e1c793ab2bda","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":301,"source_id":"33150d2c-ac78-4784-a31b-e9d342cc880c","target_id":"1d7ddcb1-d8df-40ae-8bcf-ca2bedc292d3","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 33150d2c-ac78-4784-a31b-e9d342cc880c -\u003e 1d7ddcb1-d8df-40ae-8bcf-ca2bedc292d3","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":302,"source_id":"050adf51-c0b8-417b-8e31-5502c8d7ebcc","target_id":"738f052a-42a0-4959-bafb-657eb467d57d","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 050adf51-c0b8-417b-8e31-5502c8d7ebcc -\u003e 738f052a-42a0-4959-bafb-657eb467d57d","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":303,"source_id":"050adf51-c0b8-417b-8e31-5502c8d7ebcc","target_id":"f10ee956-3c2d-488f-a83d-d998dc2c2bd1","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 050adf51-c0b8-417b-8e31-5502c8d7ebcc -\u003e f10ee956-3c2d-488f-a83d-d998dc2c2bd1","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":304,"source_id":"050adf51-c0b8-417b-8e31-5502c8d7ebcc","target_id":"29857cbd-6dcb-4ee9-b121-6312d5a523c9","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 050adf51-c0b8-417b-8e31-5502c8d7ebcc -\u003e 29857cbd-6dcb-4ee9-b121-6312d5a523c9","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":317,"source_id":"33c05b7f-e793-4a3f-bb87-9c6ea22d7e63","target_id":"b2dccb33-ffec-4b07-8759-f7ce71472ecb","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 33c05b7f-e793-4a3f-bb87-9c6ea22d7e63 -\u003e b2dccb33-ffec-4b07-8759-f7ce71472ecb","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":318,"source_id":"33c05b7f-e793-4a3f-bb87-9c6ea22d7e63","target_id":"99d1a050-0313-4c24-90a9-0db3ac835b2c","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 33c05b7f-e793-4a3f-bb87-9c6ea22d7e63 -\u003e 99d1a050-0313-4c24-90a9-0db3ac835b2c","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":322,"source_id":"c2fef000-7272-4553-b8e9-650afd08aef6","target_id":"5d780517-9a6d-4c42-ba58-f5b8ec8393ce","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: c2fef000-7272-4553-b8e9-650afd08aef6 -\u003e 5d780517-9a6d-4c42-ba58-f5b8ec8393ce","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":323,"source_id":"c2fef000-7272-4553-b8e9-650afd08aef6","target_id":"eb1ee078-c356-49ad-827a-9313420c484d","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: c2fef000-7272-4553-b8e9-650afd08aef6 -\u003e eb1ee078-c356-49ad-827a-9313420c484d","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":324,"source_id":"077abc2a-81e5-4e9c-9a72-757f4765021c","target_id":"0f130c1f-7f7b-4517-97a1-2d3646bbd246","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 077abc2a-81e5-4e9c-9a72-757f4765021c -\u003e 0f130c1f-7f7b-4517-97a1-2d3646bbd246","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":325,"source_id":"077abc2a-81e5-4e9c-9a72-757f4765021c","target_id":"6f8ee399-7380-4fee-a2e4-728f269611b1","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 077abc2a-81e5-4e9c-9a72-757f4765021c -\u003e 6f8ee399-7380-4fee-a2e4-728f269611b1","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":326,"source_id":"077abc2a-81e5-4e9c-9a72-757f4765021c","target_id":"2c270c41-0c72-45b9-be8d-a5605ca16e32","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 077abc2a-81e5-4e9c-9a72-757f4765021c -\u003e 2c270c41-0c72-45b9-be8d-a5605ca16e32","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":327,"source_id":"e55523f2-f9d0-4297-b67d-dc4fcbee269b","target_id":"df46fe53-92ca-4da6-826a-b33df0bd242b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: e55523f2-f9d0-4297-b67d-dc4fcbee269b -\u003e df46fe53-92ca-4da6-826a-b33df0bd242b","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":328,"source_id":"e55523f2-f9d0-4297-b67d-dc4fcbee269b","target_id":"c7dcc000-3176-454a-a9df-1ecd2131cc5b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: e55523f2-f9d0-4297-b67d-dc4fcbee269b -\u003e c7dcc000-3176-454a-a9df-1ecd2131cc5b","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":329,"source_id":"e55523f2-f9d0-4297-b67d-dc4fcbee269b","target_id":"824c49c6-ab20-4552-b22a-86d1e9351317","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: e55523f2-f9d0-4297-b67d-dc4fcbee269b -\u003e 824c49c6-ab20-4552-b22a-86d1e9351317","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":330,"source_id":"e65b9b9b-d210-44c8-8f0c-85e0422070d9","target_id":"2c008ded-8f0f-4fae-a0a5-0cfb74c610ea","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: e65b9b9b-d210-44c8-8f0c-85e0422070d9 -\u003e 2c008ded-8f0f-4fae-a0a5-0cfb74c610ea","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":331,"source_id":"e65b9b9b-d210-44c8-8f0c-85e0422070d9","target_id":"17fd343c-4fd0-4124-a801-902c9ecd72ea","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: e65b9b9b-d210-44c8-8f0c-85e0422070d9 -\u003e 17fd343c-4fd0-4124-a801-902c9ecd72ea","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":332,"source_id":"e65b9b9b-d210-44c8-8f0c-85e0422070d9","target_id":"e81e6998-8633-4c13-ae1f-6eb9820aaa79","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: e65b9b9b-d210-44c8-8f0c-85e0422070d9 -\u003e e81e6998-8633-4c13-ae1f-6eb9820aaa79","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"id":333,"source_id":"ab420b44-4f24-4bc3-a44c-bc68b0868ab8","target_id":"8b580d72-5612-4fa0-b850-b3a7d72c1e19","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: ab420b44-4f24-4bc3-a44c-bc68b0868ab8 -\u003e 8b580d72-5612-4fa0-b850-b3a7d72c1e19","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":334,"source_id":"ab420b44-4f24-4bc3-a44c-bc68b0868ab8","target_id":"62cc6fce-b7b6-4a5b-8833-1751d5f0ba4e","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: ab420b44-4f24-4bc3-a44c-bc68b0868ab8 -\u003e 62cc6fce-b7b6-4a5b-8833-1751d5f0ba4e","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":335,"source_id":"51819175-b0b6-4391-899e-6d9466cf804b","target_id":"0aafdca3-5383-41f6-95ae-95c4f6eb2f32","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 51819175-b0b6-4391-899e-6d9466cf804b -\u003e 0aafdca3-5383-41f6-95ae-95c4f6eb2f32","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":336,"source_id":"51819175-b0b6-4391-899e-6d9466cf804b","target_id":"692c0d1b-79e2-466b-bd94-9c041d9bda6b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 51819175-b0b6-4391-899e-6d9466cf804b -\u003e 692c0d1b-79e2-466b-bd94-9c041d9bda6b","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":337,"source_id":"4cc7d7ec-1470-45ec-8b91-d43b0285ff1e","target_id":"5fdf0a72-330a-4ef9-b6f2-56fc3b96a82f","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 4cc7d7ec-1470-45ec-8b91-d43b0285ff1e -\u003e 5fdf0a72-330a-4ef9-b6f2-56fc3b96a82f","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":338,"source_id":"4cc7d7ec-1470-45ec-8b91-d43b0285ff1e","target_id":"1acfa79b-62c0-4874-99e4-6ae09004acc4","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 4cc7d7ec-1470-45ec-8b91-d43b0285ff1e -\u003e 1acfa79b-62c0-4874-99e4-6ae09004acc4","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":339,"source_id":"4cc7d7ec-1470-45ec-8b91-d43b0285ff1e","target_id":"2c96823f-d6db-46ca-a33c-dbfdc28756a1","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 4cc7d7ec-1470-45ec-8b91-d43b0285ff1e -\u003e 2c96823f-d6db-46ca-a33c-dbfdc28756a1","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":340,"source_id":"0f130c1f-7f7b-4517-97a1-2d3646bbd246","target_id":"56080685-56e4-4a91-ba5c-6a25de62ccdf","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 0f130c1f-7f7b-4517-97a1-2d3646bbd246 -\u003e 56080685-56e4-4a91-ba5c-6a25de62ccdf","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":341,"source_id":"0f130c1f-7f7b-4517-97a1-2d3646bbd246","target_id":"bd721dc3-a854-4ab4-af6f-1c1a24c2e660","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 0f130c1f-7f7b-4517-97a1-2d3646bbd246 -\u003e bd721dc3-a854-4ab4-af6f-1c1a24c2e660","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":342,"source_id":"0f130c1f-7f7b-4517-97a1-2d3646bbd246","target_id":"ff38a877-a28e-47d8-b5c9-939b865c97a3","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 0f130c1f-7f7b-4517-97a1-2d3646bbd246 -\u003e ff38a877-a28e-47d8-b5c9-939b865c97a3","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":343,"source_id":"8b580d72-5612-4fa0-b850-b3a7d72c1e19","target_id":"f63d9ee2-939e-4112-8422-b76013d0c37b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 8b580d72-5612-4fa0-b850-b3a7d72c1e19 -\u003e f63d9ee2-939e-4112-8422-b76013d0c37b","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":344,"source_id":"8b580d72-5612-4fa0-b850-b3a7d72c1e19","target_id":"5512c349-309d-4bd7-9e7e-ec7df28c6d32","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 8b580d72-5612-4fa0-b850-b3a7d72c1e19 -\u003e 5512c349-309d-4bd7-9e7e-ec7df28c6d32","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":345,"source_id":"8b580d72-5612-4fa0-b850-b3a7d72c1e19","target_id":"4a89e30e-d877-427e-98c3-0d58a4fba7a8","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 8b580d72-5612-4fa0-b850-b3a7d72c1e19 -\u003e 4a89e30e-d877-427e-98c3-0d58a4fba7a8","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":346,"source_id":"6e73ea9a-6384-4196-b8f0-c31e83783450","target_id":"06a8f4cd-585e-43e5-992a-156951ca77b1","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 6e73ea9a-6384-4196-b8f0-c31e83783450 -\u003e 06a8f4cd-585e-43e5-992a-156951ca77b1","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":347,"source_id":"6e73ea9a-6384-4196-b8f0-c31e83783450","target_id":"e146bc47-a61b-4bec-bc1a-37faa13b372c","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 6e73ea9a-6384-4196-b8f0-c31e83783450 -\u003e e146bc47-a61b-4bec-bc1a-37faa13b372c","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":348,"source_id":"6e73ea9a-6384-4196-b8f0-c31e83783450","target_id":"0ae6bf62-bc86-44bf-b631-7329d2a379ca","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 6e73ea9a-6384-4196-b8f0-c31e83783450 -\u003e 0ae6bf62-bc86-44bf-b631-7329d2a379ca","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":349,"source_id":"b2dccb33-ffec-4b07-8759-f7ce71472ecb","target_id":"4c36e3bc-fa82-4d1b-a78d-e0832adf415b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: b2dccb33-ffec-4b07-8759-f7ce71472ecb -\u003e 4c36e3bc-fa82-4d1b-a78d-e0832adf415b","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":350,"source_id":"b2dccb33-ffec-4b07-8759-f7ce71472ecb","target_id":"e05b2dc7-2335-4c8b-b24c-48a1f98f5361","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: b2dccb33-ffec-4b07-8759-f7ce71472ecb -\u003e e05b2dc7-2335-4c8b-b24c-48a1f98f5361","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":351,"source_id":"1efc56f9-e901-4ce4-b98e-e1c793ab2bda","target_id":"e200c8f1-c37b-41e9-bac1-057445ecb066","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 1efc56f9-e901-4ce4-b98e-e1c793ab2bda -\u003e e200c8f1-c37b-41e9-bac1-057445ecb066","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":352,"source_id":"1efc56f9-e901-4ce4-b98e-e1c793ab2bda","target_id":"6e962549-b111-4d8e-b263-89eafba99a84","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 1efc56f9-e901-4ce4-b98e-e1c793ab2bda -\u003e 6e962549-b111-4d8e-b263-89eafba99a84","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":353,"source_id":"1efc56f9-e901-4ce4-b98e-e1c793ab2bda","target_id":"3a97712d-0f09-4a0a-b365-60d2af7a7fe2","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 1efc56f9-e901-4ce4-b98e-e1c793ab2bda -\u003e 3a97712d-0f09-4a0a-b365-60d2af7a7fe2","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":354,"source_id":"62cc6fce-b7b6-4a5b-8833-1751d5f0ba4e","target_id":"0eb7033e-6cb9-4e9c-8641-e80f88d0203c","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 62cc6fce-b7b6-4a5b-8833-1751d5f0ba4e -\u003e 0eb7033e-6cb9-4e9c-8641-e80f88d0203c","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":355,"source_id":"62cc6fce-b7b6-4a5b-8833-1751d5f0ba4e","target_id":"838ae7a4-15cd-489b-b25d-f4af8946b45b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 62cc6fce-b7b6-4a5b-8833-1751d5f0ba4e -\u003e 838ae7a4-15cd-489b-b25d-f4af8946b45b","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":356,"source_id":"62cc6fce-b7b6-4a5b-8833-1751d5f0ba4e","target_id":"6d1d4be2-a13f-4897-bcc9-362da9158d9b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 62cc6fce-b7b6-4a5b-8833-1751d5f0ba4e -\u003e 6d1d4be2-a13f-4897-bcc9-362da9158d9b","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":357,"source_id":"a4cd3134-13ac-4d33-a867-4d225a7f89c3","target_id":"0eb68661-00bd-4d95-809e-54d87927a654","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: a4cd3134-13ac-4d33-a867-4d225a7f89c3 -\u003e 0eb68661-00bd-4d95-809e-54d87927a654","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":358,"source_id":"a4cd3134-13ac-4d33-a867-4d225a7f89c3","target_id":"8a159a71-a6ed-4138-93a9-e7c1be49368b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: a4cd3134-13ac-4d33-a867-4d225a7f89c3 -\u003e 8a159a71-a6ed-4138-93a9-e7c1be49368b","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":359,"source_id":"a4cd3134-13ac-4d33-a867-4d225a7f89c3","target_id":"4bf6885a-1224-4cca-8789-3f3def1f0343","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: a4cd3134-13ac-4d33-a867-4d225a7f89c3 -\u003e 4bf6885a-1224-4cca-8789-3f3def1f0343","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":360,"source_id":"99d1a050-0313-4c24-90a9-0db3ac835b2c","target_id":"3aade0ca-f25c-404f-a8ac-3b3d5d3619c1","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 99d1a050-0313-4c24-90a9-0db3ac835b2c -\u003e 3aade0ca-f25c-404f-a8ac-3b3d5d3619c1","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":361,"source_id":"99d1a050-0313-4c24-90a9-0db3ac835b2c","target_id":"34d853c3-140d-40d8-80fa-e7f32e322305","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 99d1a050-0313-4c24-90a9-0db3ac835b2c -\u003e 34d853c3-140d-40d8-80fa-e7f32e322305","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":362,"source_id":"99d1a050-0313-4c24-90a9-0db3ac835b2c","target_id":"30b6ff79-67a8-4a39-9112-e0af3e9e7f7d","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 99d1a050-0313-4c24-90a9-0db3ac835b2c -\u003e 30b6ff79-67a8-4a39-9112-e0af3e9e7f7d","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":363,"source_id":"99d1a050-0313-4c24-90a9-0db3ac835b2c","target_id":"324bc16b-185c-4af1-8202-3d9b7a9e6e6f","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 99d1a050-0313-4c24-90a9-0db3ac835b2c -\u003e 324bc16b-185c-4af1-8202-3d9b7a9e6e6f","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":364,"source_id":"2c270c41-0c72-45b9-be8d-a5605ca16e32","target_id":"cfbdb9d5-b4d5-420d-9ee1-c9570f5c31f9","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 2c270c41-0c72-45b9-be8d-a5605ca16e32 -\u003e cfbdb9d5-b4d5-420d-9ee1-c9570f5c31f9","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":365,"source_id":"2c270c41-0c72-45b9-be8d-a5605ca16e32","target_id":"53947e3e-89de-416d-857e-54a84330a7ae","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 2c270c41-0c72-45b9-be8d-a5605ca16e32 -\u003e 53947e3e-89de-416d-857e-54a84330a7ae","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":366,"source_id":"2c270c41-0c72-45b9-be8d-a5605ca16e32","target_id":"17fa72bc-2bc8-478c-9b6a-9d6cae53f588","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 2c270c41-0c72-45b9-be8d-a5605ca16e32 -\u003e 17fa72bc-2bc8-478c-9b6a-9d6cae53f588","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":367,"source_id":"2c270c41-0c72-45b9-be8d-a5605ca16e32","target_id":"a3c9a66f-dcd6-40fb-89b8-abb130e7744a","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 2c270c41-0c72-45b9-be8d-a5605ca16e32 -\u003e a3c9a66f-dcd6-40fb-89b8-abb130e7744a","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":368,"source_id":"1d7ddcb1-d8df-40ae-8bcf-ca2bedc292d3","target_id":"fc236117-4117-4af0-8d3d-0c3fbecab71a","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 1d7ddcb1-d8df-40ae-8bcf-ca2bedc292d3 -\u003e fc236117-4117-4af0-8d3d-0c3fbecab71a","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":369,"source_id":"1d7ddcb1-d8df-40ae-8bcf-ca2bedc292d3","target_id":"4d1ec235-b735-4351-abdb-3721a223dd51","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 1d7ddcb1-d8df-40ae-8bcf-ca2bedc292d3 -\u003e 4d1ec235-b735-4351-abdb-3721a223dd51","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":370,"source_id":"1d7ddcb1-d8df-40ae-8bcf-ca2bedc292d3","target_id":"7aca7e2a-1e25-4628-a4ba-3f97fdeb9279","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 1d7ddcb1-d8df-40ae-8bcf-ca2bedc292d3 -\u003e 7aca7e2a-1e25-4628-a4ba-3f97fdeb9279","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":371,"source_id":"ae7b131d-110f-4347-a2db-f9ee1bb2568a","target_id":"a75ff292-fb3f-42ba-84d8-189105b57626","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: ae7b131d-110f-4347-a2db-f9ee1bb2568a -\u003e a75ff292-fb3f-42ba-84d8-189105b57626","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":372,"source_id":"ae7b131d-110f-4347-a2db-f9ee1bb2568a","target_id":"e8e1b906-cdb1-41b2-a03b-8450dfec49e1","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: ae7b131d-110f-4347-a2db-f9ee1bb2568a -\u003e e8e1b906-cdb1-41b2-a03b-8450dfec49e1","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":373,"source_id":"ae7b131d-110f-4347-a2db-f9ee1bb2568a","target_id":"0cfb0e8f-47c2-4030-a2e1-3993fb770b8d","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: ae7b131d-110f-4347-a2db-f9ee1bb2568a -\u003e 0cfb0e8f-47c2-4030-a2e1-3993fb770b8d","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":374,"source_id":"ae7b131d-110f-4347-a2db-f9ee1bb2568a","target_id":"24431815-8687-4b29-b798-214916920f7f","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: ae7b131d-110f-4347-a2db-f9ee1bb2568a -\u003e 24431815-8687-4b29-b798-214916920f7f","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":375,"source_id":"ae7b131d-110f-4347-a2db-f9ee1bb2568a","target_id":"eee4b669-1eb7-45b9-a835-ffebfee1f682","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: ae7b131d-110f-4347-a2db-f9ee1bb2568a -\u003e eee4b669-1eb7-45b9-a835-ffebfee1f682","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":376,"source_id":"817fc86a-b662-454b-83ed-09be950b1bdc","target_id":"d7798344-7bd7-4d4b-b7af-12e478898534","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 817fc86a-b662-454b-83ed-09be950b1bdc -\u003e d7798344-7bd7-4d4b-b7af-12e478898534","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":377,"source_id":"817fc86a-b662-454b-83ed-09be950b1bdc","target_id":"f696338b-1dae-45bc-b4e4-f7aab1a66b0d","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 817fc86a-b662-454b-83ed-09be950b1bdc -\u003e f696338b-1dae-45bc-b4e4-f7aab1a66b0d","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":378,"source_id":"817fc86a-b662-454b-83ed-09be950b1bdc","target_id":"1d532660-5e04-421b-a2b4-3e542c48a890","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 817fc86a-b662-454b-83ed-09be950b1bdc -\u003e 1d532660-5e04-421b-a2b4-3e542c48a890","gmt_create":"2025-10-08T19:06:56+08:00","gmt_modified":"2025-10-08T19:06:56+08:00"},{"id":379,"source_id":"6d5ebff3-909f-4c98-92c8-8c0d636415bc","target_id":"a3b7521789787cc4db7608d02c5e95f4","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/middleware/auth.go","gmt_create":"2025-10-11T17:24:20.6440682+08:00","gmt_modified":"2025-10-11T17:24:20.6440682+08:00"},{"id":380,"source_id":"6d5ebff3-909f-4c98-92c8-8c0d636415bc","target_id":"eb8338fb24a00daa3a4838bbc0ab1393","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/middleware/error_handler.go","gmt_create":"2025-10-11T17:24:20.6517587+08:00","gmt_modified":"2025-10-11T17:24:20.6517587+08:00"},{"id":381,"source_id":"6d5ebff3-909f-4c98-92c8-8c0d636415bc","target_id":"c23df18489eaaeec8a340de242b77b44","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/token/user_token.go","gmt_create":"2025-10-11T17:24:20.6601767+08:00","gmt_modified":"2025-10-11T17:24:20.6601767+08:00"},{"id":382,"source_id":"6d5ebff3-909f-4c98-92c8-8c0d636415bc","target_id":"91b0ce4e15bd2ec12a8c8f87efd69254","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/config/config.go","gmt_create":"2025-10-11T17:24:20.668056+08:00","gmt_modified":"2025-10-11T17:24:20.668056+08:00"},{"id":383,"source_id":"6d5ebff3-909f-4c98-92c8-8c0d636415bc","target_id":"a2cc9e42068f81d57e6658912bec50c7","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/errHandler/code.go","gmt_create":"2025-10-11T17:24:20.6759867+08:00","gmt_modified":"2025-10-11T17:24:20.6759867+08:00"},{"id":384,"source_id":"6d5ebff3-909f-4c98-92c8-8c0d636415bc","target_id":"d018b60f9d48763366246e537520686c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/middleware/auth.go#22-51","gmt_create":"2025-10-11T17:24:20.6841296+08:00","gmt_modified":"2025-10-11T17:24:20.6841296+08:00"},{"id":385,"source_id":"a3b7521789787cc4db7608d02c5e95f4","target_id":"d018b60f9d48763366246e537520686c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 22-51","gmt_create":"2025-10-11T17:24:20.6920288+08:00","gmt_modified":"2025-10-11T17:24:20.6920288+08:00"},{"id":386,"source_id":"6d5ebff3-909f-4c98-92c8-8c0d636415bc","target_id":"f451dcc5212a1a2b4e0ce80b06f8e185","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/middleware/error_handler.go#8-27","gmt_create":"2025-10-11T17:24:20.6993228+08:00","gmt_modified":"2025-10-11T17:24:20.6993228+08:00"},{"id":387,"source_id":"eb8338fb24a00daa3a4838bbc0ab1393","target_id":"f451dcc5212a1a2b4e0ce80b06f8e185","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 8-27","gmt_create":"2025-10-11T17:24:20.706695+08:00","gmt_modified":"2025-10-11T17:24:20.706695+08:00"},{"id":388,"source_id":"6d5ebff3-909f-4c98-92c8-8c0d636415bc","target_id":"77aff4289e7b60617a6b97873721f586af264581","source_type":"WIKI_ITEM","target_type":"COMMIT","relationship_type":"GENERATED_IN","extra":"Wiki generated in commit: 77aff4289e7b60617a6b97873721f586af264581","gmt_create":"2025-10-11T17:24:20.720472+08:00","gmt_modified":"2025-10-11T17:24:20.720472+08:00"},{"id":389,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"0f583231f0ca6eb6bdc0cd3104f97d42","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/main.go","gmt_create":"2025-10-11T17:24:50.3625081+08:00","gmt_modified":"2025-10-11T17:24:50.3625081+08:00"},{"id":390,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"b6012388f040de469b7ec2244cf9d3bf","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/logic.go","gmt_create":"2025-10-11T17:24:50.3698953+08:00","gmt_modified":"2025-10-11T17:24:50.3698953+08:00"},{"id":391,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"40a0c2b01b15ceae41bdd421874c199e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/internal/service/sys_user.go","gmt_create":"2025-10-11T17:24:50.3776484+08:00","gmt_modified":"2025-10-11T17:24:50.3776484+08:00"},{"id":392,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"9592a0fc953a2595f709cd0c67c70a06","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/internal/dao/v_1_sys_user.go","gmt_create":"2025-10-11T17:24:50.3859944+08:00","gmt_modified":"2025-10-11T17:24:50.3859944+08:00"},{"id":393,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"56c658d00971d4697ee90a4fd6912832","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/internal/model/sys_user.go","gmt_create":"2025-10-11T17:24:50.3928768+08:00","gmt_modified":"2025-10-11T17:24:50.3928768+08:00"},{"id":394,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"219fe92fb80e3fa8bd7e4080d15e457a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/sys_user/sys_user.go","gmt_create":"2025-10-11T17:24:50.4008187+08:00","gmt_modified":"2025-10-11T17:24:50.4008187+08:00"},{"id":395,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"0f0ab37127003f1af1d234709f1d3198","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/card_apple_order/order.go","gmt_create":"2025-10-11T17:24:50.4080602+08:00","gmt_modified":"2025-10-11T17:24:50.4080602+08:00"},{"id":396,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"0de0fc73ea1c0c78e2d71d04a0a94411","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/card_redeem_order/order.go","gmt_create":"2025-10-11T17:24:50.4158639+08:00","gmt_modified":"2025-10-11T17:24:50.4158639+08:00"},{"id":397,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"1ffd22848808f089677c2ddc482a954a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/merchant_order/order.go","gmt_create":"2025-10-11T17:24:50.4241123+08:00","gmt_modified":"2025-10-11T17:24:50.4241123+08:00"},{"id":398,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"e5ef83e4ccff2f66a4eb56f3b2096bf0","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/restriction/restriction.go","gmt_create":"2025-10-11T17:24:50.431594+08:00","gmt_modified":"2025-10-11T17:24:50.431594+08:00"},{"id":399,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"d341b69869e9863f8bd7ed7614572d1c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/card_t_mall_order/order.go","gmt_create":"2025-10-11T17:24:50.4380462+08:00","gmt_modified":"2025-10-11T17:24:50.4380462+08:00"},{"id":400,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"fb94b419b6c25749805b970980a051ae","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/internal/service/card_apple_order.go","gmt_create":"2025-10-11T17:24:50.4460761+08:00","gmt_modified":"2025-10-11T17:24:50.4460761+08:00"},{"id":401,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"fa2076592876f7f4387e9050085ba9b5","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/internal/service/card_redeem_order.go","gmt_create":"2025-10-11T17:24:50.4540555+08:00","gmt_modified":"2025-10-11T17:24:50.4540555+08:00"},{"id":402,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"ce93596b3c315be9ad061ed78b9b4a16","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/internal/service/merchant_order.go","gmt_create":"2025-10-11T17:24:50.4617825+08:00","gmt_modified":"2025-10-11T17:24:50.4617825+08:00"},{"id":403,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"1ede9ed0ed4e2fea117f1f0ee3228874","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/internal/service/restriction.go","gmt_create":"2025-10-11T17:24:50.4686226+08:00","gmt_modified":"2025-10-11T17:24:50.4686226+08:00"},{"id":404,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"c22d8bb47932b7530c368ff1de72e79a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/internal/service/card_t_mall_order.go","gmt_create":"2025-10-11T17:24:50.4767933+08:00","gmt_modified":"2025-10-11T17:24:50.4767933+08:00"},{"id":405,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"79ad87595e6f3cccf7d1df8561c8667d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/manifest/config/config.yaml","gmt_create":"2025-10-11T17:24:50.485041+08:00","gmt_modified":"2025-10-11T17:24:50.485041+08:00"},{"id":406,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"348a584cbaee62585af0b8f576760382","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/jd_cookie/order.go","gmt_create":"2025-10-11T17:24:50.4927979+08:00","gmt_modified":"2025-10-11T17:24:50.4927979+08:00"},{"id":407,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"9fbcfcc5b312f6ea4b7a2f526f4fc0c4","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/internal/service/jd_cookie.go","gmt_create":"2025-10-11T17:24:50.4995025+08:00","gmt_modified":"2025-10-11T17:24:50.4995025+08:00"},{"id":408,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"c778028d86a2a65f31627126a2575c0c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend/main.go#1-50","gmt_create":"2025-10-11T17:24:50.5071768+08:00","gmt_modified":"2025-10-11T17:24:50.5071768+08:00"},{"id":409,"source_id":"0f583231f0ca6eb6bdc0cd3104f97d42","target_id":"c778028d86a2a65f31627126a2575c0c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-50","gmt_create":"2025-10-11T17:24:50.514726+08:00","gmt_modified":"2025-10-11T17:24:50.514726+08:00"},{"id":410,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"4bad57683321787594727c10ee94c33b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/logic/logic.go#1-37","gmt_create":"2025-10-11T17:24:50.5238199+08:00","gmt_modified":"2025-10-11T17:24:50.5238199+08:00"},{"id":411,"source_id":"b6012388f040de469b7ec2244cf9d3bf","target_id":"4bad57683321787594727c10ee94c33b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-37","gmt_create":"2025-10-11T17:24:50.5308261+08:00","gmt_modified":"2025-10-11T17:24:50.5308261+08:00"},{"id":412,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"aee3a2f386eb5a98ddf5ca7cccff0929","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/service/sys_user.go#1-102","gmt_create":"2025-10-11T17:24:50.5392382+08:00","gmt_modified":"2025-10-11T17:24:50.5392382+08:00"},{"id":413,"source_id":"40a0c2b01b15ceae41bdd421874c199e","target_id":"aee3a2f386eb5a98ddf5ca7cccff0929","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-102","gmt_create":"2025-10-11T17:24:50.5469349+08:00","gmt_modified":"2025-10-11T17:24:50.5469349+08:00"},{"id":414,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"6fe67e9d805a0a633f90f268ef2ee2f4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/service/card_apple_order.go#1-127","gmt_create":"2025-10-11T17:24:50.5536443+08:00","gmt_modified":"2025-10-11T17:24:50.5536443+08:00"},{"id":415,"source_id":"fb94b419b6c25749805b970980a051ae","target_id":"6fe67e9d805a0a633f90f268ef2ee2f4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-127","gmt_create":"2025-10-11T17:24:50.5643655+08:00","gmt_modified":"2025-10-11T17:24:50.5643655+08:00"},{"id":416,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"32bf22e91c31d6f141bf6b7ef0de7b96","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/service/card_redeem_order.go#1-80","gmt_create":"2025-10-11T17:24:50.5719959+08:00","gmt_modified":"2025-10-11T17:24:50.5719959+08:00"},{"id":417,"source_id":"fa2076592876f7f4387e9050085ba9b5","target_id":"32bf22e91c31d6f141bf6b7ef0de7b96","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-80","gmt_create":"2025-10-11T17:24:50.5809557+08:00","gmt_modified":"2025-10-11T17:24:50.5809557+08:00"},{"id":418,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"7face210770aa4ec553604c6d0931175","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/service/merchant_order.go#1-44","gmt_create":"2025-10-11T17:24:50.5873089+08:00","gmt_modified":"2025-10-11T17:24:50.5873089+08:00"},{"id":419,"source_id":"ce93596b3c315be9ad061ed78b9b4a16","target_id":"7face210770aa4ec553604c6d0931175","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-44","gmt_create":"2025-10-11T17:24:50.5948858+08:00","gmt_modified":"2025-10-11T17:24:50.5948858+08:00"},{"id":420,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"842d4a8a22707111e666ac492238b5ef","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/service/restriction.go#1-67","gmt_create":"2025-10-11T17:24:50.6032949+08:00","gmt_modified":"2025-10-11T17:24:50.6032949+08:00"},{"id":421,"source_id":"1ede9ed0ed4e2fea117f1f0ee3228874","target_id":"842d4a8a22707111e666ac492238b5ef","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-67","gmt_create":"2025-10-11T17:24:50.6110469+08:00","gmt_modified":"2025-10-11T17:24:50.6110469+08:00"},{"id":422,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"c701edfecf07f4017d7d956624072fde","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/logic/sys_user/sys_user.go#1-767","gmt_create":"2025-10-11T17:24:50.6199029+08:00","gmt_modified":"2025-10-11T17:24:50.6199029+08:00"},{"id":423,"source_id":"219fe92fb80e3fa8bd7e4080d15e457a","target_id":"c701edfecf07f4017d7d956624072fde","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-767","gmt_create":"2025-10-11T17:24:50.6271898+08:00","gmt_modified":"2025-10-11T17:24:50.6271898+08:00"},{"id":424,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"4d71ea0833e7a0a8266b6f2e8b05e459","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/dao/v_1_sys_user.go#1-28","gmt_create":"2025-10-11T17:24:50.6350393+08:00","gmt_modified":"2025-10-11T17:24:50.6350393+08:00"},{"id":425,"source_id":"9592a0fc953a2595f709cd0c67c70a06","target_id":"4d71ea0833e7a0a8266b6f2e8b05e459","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-28","gmt_create":"2025-10-11T17:24:50.6428468+08:00","gmt_modified":"2025-10-11T17:24:50.6428468+08:00"},{"id":426,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"0d5907fd86f99e310c6663b7e705ab7b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/model/sys_user.go#1-92","gmt_create":"2025-10-11T17:24:50.6512593+08:00","gmt_modified":"2025-10-11T17:24:50.6512593+08:00"},{"id":427,"source_id":"56c658d00971d4697ee90a4fd6912832","target_id":"0d5907fd86f99e310c6663b7e705ab7b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-92","gmt_create":"2025-10-11T17:24:50.6589626+08:00","gmt_modified":"2025-10-11T17:24:50.6589626+08:00"},{"id":428,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"488c440eb23bb1208ec810e0d3738028","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/logic/card_apple_order/order.go#1-343","gmt_create":"2025-10-11T17:24:50.6673418+08:00","gmt_modified":"2025-10-11T17:24:50.6673418+08:00"},{"id":429,"source_id":"0f0ab37127003f1af1d234709f1d3198","target_id":"488c440eb23bb1208ec810e0d3738028","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-343","gmt_create":"2025-10-11T17:24:50.6741379+08:00","gmt_modified":"2025-10-11T17:24:50.6741379+08:00"},{"id":430,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"badc687590596030499ebead18afabfc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/logic/merchant_order/order.go#1-48","gmt_create":"2025-10-11T17:24:50.6824512+08:00","gmt_modified":"2025-10-11T17:24:50.6824512+08:00"},{"id":431,"source_id":"1ffd22848808f089677c2ddc482a954a","target_id":"badc687590596030499ebead18afabfc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-48","gmt_create":"2025-10-11T17:24:50.6908282+08:00","gmt_modified":"2025-10-11T17:24:50.6908282+08:00"},{"id":432,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"cf2c6c7ec0ed0b542c5ad37d11c2ea57","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/logic/restriction/restriction.go#1-174","gmt_create":"2025-10-11T17:24:50.7001986+08:00","gmt_modified":"2025-10-11T17:24:50.7001986+08:00"},{"id":433,"source_id":"e5ef83e4ccff2f66a4eb56f3b2096bf0","target_id":"cf2c6c7ec0ed0b542c5ad37d11c2ea57","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-174","gmt_create":"2025-10-11T17:24:50.7079976+08:00","gmt_modified":"2025-10-11T17:24:50.7079976+08:00"},{"id":434,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"f67970ad2e09c5f5a6048ff8ef3cd50c","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend/manifest/config/config.yaml#1-10","gmt_create":"2025-10-11T17:24:50.7161361+08:00","gmt_modified":"2025-10-11T17:24:50.7161361+08:00"},{"id":435,"source_id":"79ad87595e6f3cccf7d1df8561c8667d","target_id":"f67970ad2e09c5f5a6048ff8ef3cd50c","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-10","gmt_create":"2025-10-11T17:24:50.723998+08:00","gmt_modified":"2025-10-11T17:24:50.723998+08:00"},{"id":436,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"77aff4289e7b60617a6b97873721f586af264581","source_type":"WIKI_ITEM","target_type":"COMMIT","relationship_type":"GENERATED_IN","extra":"Wiki generated in commit: 77aff4289e7b60617a6b97873721f586af264581","gmt_create":"2025-10-11T17:24:50.7336569+08:00","gmt_modified":"2025-10-11T17:24:50.7336569+08:00"},{"id":437,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"0fdae6a89fef78f6368400b1fe726d987adda7b1","source_type":"WIKI_ITEM","target_type":"COMMIT","relationship_type":"GENERATED_IN","extra":"Wiki generated in commit: 0fdae6a89fef78f6368400b1fe726d987adda7b1","gmt_create":"2025-10-11T17:24:50.7446762+08:00","gmt_modified":"2025-10-11T17:24:50.7446762+08:00"},{"id":438,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"94aa282e4a22f85674f3004894e95b12","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/model/entity/v_1_account_info.go","gmt_create":"2025-10-11T17:25:02.9651662+08:00","gmt_modified":"2025-10-11T17:25:02.9651662+08:00"},{"id":439,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"3695f0446f58c552ec036968b720c585","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/model/entity/v_1_order_info.go","gmt_create":"2025-10-11T17:25:02.9736397+08:00","gmt_modified":"2025-10-11T17:25:02.9736397+08:00"},{"id":440,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"297412eae542d50411094ce29ff6e9b3","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/model/entity/v_1_card_apple_recharge_info.go","gmt_create":"2025-10-11T17:25:02.9819618+08:00","gmt_modified":"2025-10-11T17:25:02.9819618+08:00"},{"id":441,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"4f2117fd41858c8f1f05e73af0c4d045","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/model/entity/v_1_jd_cookie_account.go","gmt_create":"2025-10-11T17:25:02.9920724+08:00","gmt_modified":"2025-10-11T17:25:02.9920724+08:00"},{"id":442,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"10b4b7e7bda705f2473233626534db93","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/model/entity/v_1_jd_cookie_jd_order.go","gmt_create":"2025-10-11T17:25:03.0073216+08:00","gmt_modified":"2025-10-11T17:25:03.0073216+08:00"},{"id":443,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"251c480af7207ec9635af57c9bc50f04","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/model/entity/v_1_jd_cookie_order.go","gmt_create":"2025-10-11T17:25:03.0163287+08:00","gmt_modified":"2025-10-11T17:25:03.0163287+08:00"},{"id":444,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"24b833965d28e1470eacd7df237acdb4","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/dao/v_1_account_info.go","gmt_create":"2025-10-11T17:25:03.0253018+08:00","gmt_modified":"2025-10-11T17:25:03.0253018+08:00"},{"id":445,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"035d413d594bd8cd49b625ad3200b11c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/dao/v_1_order_info.go","gmt_create":"2025-10-11T17:25:03.0331948+08:00","gmt_modified":"2025-10-11T17:25:03.0331948+08:00"},{"id":446,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"9ea71fe3dd3d7290fd60892723bb7ee8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/dao/v_1_card_apple_recharge_info.go","gmt_create":"2025-10-11T17:25:03.0418294+08:00","gmt_modified":"2025-10-11T17:25:03.0418294+08:00"},{"id":447,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"8d29c379353db1d02b0dbd096eb8a47d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/dao/v_1_jd_cookie_account.go","gmt_create":"2025-10-11T17:25:03.0528166+08:00","gmt_modified":"2025-10-11T17:25:03.0528166+08:00"},{"id":448,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"319d5ee6b3c76bed0110a972df7470d8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/dao/v_1_jd_cookie_jd_order.go","gmt_create":"2025-10-11T17:25:03.0623314+08:00","gmt_modified":"2025-10-11T17:25:03.0623314+08:00"},{"id":449,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"81cfcd51a2f0449da14f3d4052765c08","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/dao/v_1_jd_cookie_order.go","gmt_create":"2025-10-11T17:25:03.0739482+08:00","gmt_modified":"2025-10-11T17:25:03.0739482+08:00"},{"id":450,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"48b3a3cd9e9db7485c82648a8f9c69dc","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/merchant/merchant_v1_merchant_config_add.go","gmt_create":"2025-10-11T17:25:03.0820998+08:00","gmt_modified":"2025-10-11T17:25:03.0820998+08:00"},{"id":451,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"9909bbb8255b96a053563e9f3afd6e52","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/account/account.go","gmt_create":"2025-10-11T17:25:03.0902437+08:00","gmt_modified":"2025-10-11T17:25:03.0902437+08:00"},{"id":452,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"c80482f4470a8e3dd050e61ff9bd3738","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/merchant_order/order.go","gmt_create":"2025-10-11T17:25:03.0992561+08:00","gmt_modified":"2025-10-11T17:25:03.0992561+08:00"},{"id":453,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"92c36754f0dbd99fed9aa1523374158d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/card_apple_order/order.go","gmt_create":"2025-10-11T17:25:03.1079584+08:00","gmt_modified":"2025-10-11T17:25:03.1079584+08:00"},{"id":454,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"cbe32a6c2d1cadcc72019566cad819b6","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/card_apple_order/status.go","gmt_create":"2025-10-11T17:25:03.1158729+08:00","gmt_modified":"2025-10-11T17:25:03.1158729+08:00"},{"id":455,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"987fc36e572014bb0a7c02bc015c9fa2","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/card_apple_order/recharge_history.go","gmt_create":"2025-10-11T17:25:03.1238991+08:00","gmt_modified":"2025-10-11T17:25:03.1238991+08:00"},{"id":456,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"39c6a811a6208e20dc5b28becf3a2cbe","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/card_apple_order/steal_relation.go","gmt_create":"2025-10-11T17:25:03.1318146+08:00","gmt_modified":"2025-10-11T17:25:03.1318146+08:00"},{"id":457,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"fe83d023754ae2aedb7c68ac0f3dcf31","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/jd_cookie/account.go","gmt_create":"2025-10-11T17:25:03.1402805+08:00","gmt_modified":"2025-10-11T17:25:03.1402805+08:00"},{"id":458,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"edd8bea5c8f9373cd0b4de186914479e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/jd_cookie/order.go","gmt_create":"2025-10-11T17:25:03.1477622+08:00","gmt_modified":"2025-10-11T17:25:03.1477622+08:00"},{"id":459,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"961047bec51802fc7855502acf4bbc07","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/jd_cookie/rotation.go","gmt_create":"2025-10-11T17:25:03.1562112+08:00","gmt_modified":"2025-10-11T17:25:03.1562112+08:00"},{"id":460,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"9faa5f2db2ec0340fbf2ecfb0e5a7740","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/model/entity/v_1_account_info.go#12-25","gmt_create":"2025-10-11T17:25:03.1646183+08:00","gmt_modified":"2025-10-11T17:25:03.1646183+08:00"},{"id":461,"source_id":"94aa282e4a22f85674f3004894e95b12","target_id":"9faa5f2db2ec0340fbf2ecfb0e5a7740","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 12-25","gmt_create":"2025-10-11T17:25:03.1720618+08:00","gmt_modified":"2025-10-11T17:25:03.1720618+08:00"},{"id":462,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"1c004f6c7e82e215a8538bb563de1a80","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/model/entity/v_1_order_info.go#12-63","gmt_create":"2025-10-11T17:25:03.1825735+08:00","gmt_modified":"2025-10-11T17:25:03.1825735+08:00"},{"id":463,"source_id":"3695f0446f58c552ec036968b720c585","target_id":"1c004f6c7e82e215a8538bb563de1a80","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 12-63","gmt_create":"2025-10-11T17:25:03.1907716+08:00","gmt_modified":"2025-10-11T17:25:03.1907716+08:00"},{"id":464,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"9311a5593c3cb84df188d914b5fcb57b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/model/entity/v_1_card_apple_recharge_info.go#11-33","gmt_create":"2025-10-11T17:25:03.1996483+08:00","gmt_modified":"2025-10-11T17:25:03.1996483+08:00"},{"id":465,"source_id":"297412eae542d50411094ce29ff6e9b3","target_id":"9311a5593c3cb84df188d914b5fcb57b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 11-33","gmt_create":"2025-10-11T17:25:03.2086045+08:00","gmt_modified":"2025-10-11T17:25:03.2086045+08:00"},{"id":466,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"734fa931bccd869983dd85fd9b7ab371","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/model/entity/v_1_jd_cookie_account.go#12-28","gmt_create":"2025-10-11T17:25:03.2179827+08:00","gmt_modified":"2025-10-11T17:25:03.2179827+08:00"},{"id":467,"source_id":"4f2117fd41858c8f1f05e73af0c4d045","target_id":"734fa931bccd869983dd85fd9b7ab371","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 12-28","gmt_create":"2025-10-11T17:25:03.2261334+08:00","gmt_modified":"2025-10-11T17:25:03.2261334+08:00"},{"id":468,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"d96edb8b929124b14e6a2f23bb5174d1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/model/entity/v_1_jd_cookie_jd_order.go#12-27","gmt_create":"2025-10-11T17:25:03.2352539+08:00","gmt_modified":"2025-10-11T17:25:03.2352539+08:00"},{"id":469,"source_id":"10b4b7e7bda705f2473233626534db93","target_id":"d96edb8b929124b14e6a2f23bb5174d1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 12-27","gmt_create":"2025-10-11T17:25:03.2427813+08:00","gmt_modified":"2025-10-11T17:25:03.2427813+08:00"},{"id":470,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"6b7240b29633b5a3401cf9e8ec69999f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/model/entity/v_1_jd_cookie_order.go#12-22","gmt_create":"2025-10-11T17:25:03.2608243+08:00","gmt_modified":"2025-10-11T17:25:03.2608243+08:00"},{"id":471,"source_id":"251c480af7207ec9635af57c9bc50f04","target_id":"6b7240b29633b5a3401cf9e8ec69999f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 12-22","gmt_create":"2025-10-11T17:25:03.271943+08:00","gmt_modified":"2025-10-11T17:25:03.271943+08:00"},{"id":472,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"2038419d1bd760f2988ff05f35af3e92","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/model/do/v_1_account_info.go","gmt_create":"2025-10-11T17:25:03.294286+08:00","gmt_modified":"2025-10-11T17:25:03.294286+08:00"},{"id":473,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"c9ced0e12702f2bb3837a96e62c73320","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/model/do/v_1_account_info.go#12-26","gmt_create":"2025-10-11T17:25:03.3063385+08:00","gmt_modified":"2025-10-11T17:25:03.3063385+08:00"},{"id":474,"source_id":"2038419d1bd760f2988ff05f35af3e92","target_id":"c9ced0e12702f2bb3837a96e62c73320","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 12-26","gmt_create":"2025-10-11T17:25:03.3139794+08:00","gmt_modified":"2025-10-11T17:25:03.3139794+08:00"},{"id":475,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"338cc7bab8a15d021b6bf4faea030524","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/dao/v_1_account_info.go#1-27","gmt_create":"2025-10-11T17:25:03.3294392+08:00","gmt_modified":"2025-10-11T17:25:03.3294392+08:00"},{"id":476,"source_id":"24b833965d28e1470eacd7df237acdb4","target_id":"338cc7bab8a15d021b6bf4faea030524","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-27","gmt_create":"2025-10-11T17:25:03.3418784+08:00","gmt_modified":"2025-10-11T17:25:03.3418784+08:00"},{"id":477,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"f029eb7d6cfc4e70657225da8d0f4d90071071e4","source_type":"WIKI_ITEM","target_type":"COMMIT","relationship_type":"GENERATED_IN","extra":"Wiki generated in commit: f029eb7d6cfc4e70657225da8d0f4d90071071e4","gmt_create":"2025-10-11T17:25:03.3603306+08:00","gmt_modified":"2025-10-11T17:25:03.3603306+08:00"},{"id":478,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"6949b603968e204a80d7e6e337496f12","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/cmd/cmd.go","gmt_create":"2025-10-11T17:25:58.0668187+08:00","gmt_modified":"2025-10-11T17:25:58.0668187+08:00"},{"id":479,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"cd47a7c1fd3185ff279cca4dd4a1cd9d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: api/monitor/monitor.go","gmt_create":"2025-10-11T17:25:58.0747467+08:00","gmt_modified":"2025-10-11T17:25:58.0747467+08:00"},{"id":480,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"2a00f83021031103c438a59751eee183","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: api/monitor/v1/heathcheck.go","gmt_create":"2025-10-11T17:25:58.0829488+08:00","gmt_modified":"2025-10-11T17:25:58.0829488+08:00"},{"id":481,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"d9ed9131ddb364556f43b561d041ddd5","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/monitor/monitor.go","gmt_create":"2025-10-11T17:25:58.0912714+08:00","gmt_modified":"2025-10-11T17:25:58.0912714+08:00"},{"id":482,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"eddf871859d423ace01da9a74db6db86","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/monitor/monitor_new.go","gmt_create":"2025-10-11T17:25:58.0991438+08:00","gmt_modified":"2025-10-11T17:25:58.0991438+08:00"},{"id":483,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"50111ae80e6ac600d65fbd7b34df3d03","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/monitor/monitor_v1_health_check.go","gmt_create":"2025-10-11T17:25:58.1069353+08:00","gmt_modified":"2025-10-11T17:25:58.1069353+08:00"},{"id":484,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"5824f93b650d7a0b6fb8c1a016077461","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/otel/config.go","gmt_create":"2025-10-11T17:25:58.1151783+08:00","gmt_modified":"2025-10-11T17:25:58.1151783+08:00"},{"id":485,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"11df2c532cb96a0d8e041af4ea176204","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/otel/manager.go","gmt_create":"2025-10-11T17:25:58.1229937+08:00","gmt_modified":"2025-10-11T17:25:58.1229937+08:00"},{"id":486,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"b0dcfa2b0067be5ec2e3f00ad722ed85","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/otel/handler.go","gmt_create":"2025-10-11T17:25:58.130905+08:00","gmt_modified":"2025-10-11T17:25:58.130905+08:00"},{"id":487,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"70f39d04b38fd3c3c76da74b7b0ed20b","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/otel/utils.go","gmt_create":"2025-10-11T17:25:58.1389669+08:00","gmt_modified":"2025-10-11T17:25:58.1389669+08:00"},{"id":488,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"b896e4b9529b9c35c2662cf25560c5cd","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/monitor/monitor.go","gmt_create":"2025-10-11T17:25:58.1469013+08:00","gmt_modified":"2025-10-11T17:25:58.1469013+08:00"},{"id":489,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"314337c7901e5f608be04c99dbf9dcda","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/otel/config.go#1-67","gmt_create":"2025-10-11T17:25:58.1541476+08:00","gmt_modified":"2025-10-11T17:25:58.1541476+08:00"},{"id":490,"source_id":"5824f93b650d7a0b6fb8c1a016077461","target_id":"314337c7901e5f608be04c99dbf9dcda","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-67","gmt_create":"2025-10-11T17:25:58.1629286+08:00","gmt_modified":"2025-10-11T17:25:58.1629286+08:00"},{"id":491,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"02b920b240a8a0b5cc76dbdd011bfade","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/otel/manager.go#1-257","gmt_create":"2025-10-11T17:25:58.171207+08:00","gmt_modified":"2025-10-11T17:25:58.171207+08:00"},{"id":492,"source_id":"11df2c532cb96a0d8e041af4ea176204","target_id":"02b920b240a8a0b5cc76dbdd011bfade","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-257","gmt_create":"2025-10-11T17:25:58.1758338+08:00","gmt_modified":"2025-10-11T17:25:58.1758338+08:00"},{"id":493,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"a1f8285bc58503a0979846e628322395","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/otel/utils.go#1-230","gmt_create":"2025-10-11T17:25:58.1871775+08:00","gmt_modified":"2025-10-11T17:25:58.1871775+08:00"},{"id":494,"source_id":"70f39d04b38fd3c3c76da74b7b0ed20b","target_id":"a1f8285bc58503a0979846e628322395","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-230","gmt_create":"2025-10-11T17:25:58.1961075+08:00","gmt_modified":"2025-10-11T17:25:58.1961075+08:00"},{"id":495,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"62d876856f82a4ea1e63b343aa650ddc","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/otel/handler.go#1-164","gmt_create":"2025-10-11T17:25:58.2078072+08:00","gmt_modified":"2025-10-11T17:25:58.2078072+08:00"},{"id":496,"source_id":"b0dcfa2b0067be5ec2e3f00ad722ed85","target_id":"62d876856f82a4ea1e63b343aa650ddc","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-164","gmt_create":"2025-10-11T17:25:58.2150716+08:00","gmt_modified":"2025-10-11T17:25:58.2150716+08:00"},{"id":497,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"0450d2bd60154c9defe18e2dd0db3944","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: api/monitor/monitor.go#1-15","gmt_create":"2025-10-11T17:25:58.2255695+08:00","gmt_modified":"2025-10-11T17:25:58.2255695+08:00"},{"id":498,"source_id":"cd47a7c1fd3185ff279cca4dd4a1cd9d","target_id":"0450d2bd60154c9defe18e2dd0db3944","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-15","gmt_create":"2025-10-11T17:25:58.23277+08:00","gmt_modified":"2025-10-11T17:25:58.23277+08:00"},{"id":499,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"776a898a7e3af295ac0d3f657e027a43","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: api/monitor/v1/heathcheck.go#1-13","gmt_create":"2025-10-11T17:25:58.2402711+08:00","gmt_modified":"2025-10-11T17:25:58.2402711+08:00"},{"id":500,"source_id":"2a00f83021031103c438a59751eee183","target_id":"776a898a7e3af295ac0d3f657e027a43","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-13","gmt_create":"2025-10-11T17:25:58.2482256+08:00","gmt_modified":"2025-10-11T17:25:58.2482256+08:00"},{"id":501,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"f4357af3bdee1af700d66352486740ac","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/controller/monitor/monitor_new.go#1-15","gmt_create":"2025-10-11T17:25:58.2570843+08:00","gmt_modified":"2025-10-11T17:25:58.2570843+08:00"},{"id":502,"source_id":"eddf871859d423ace01da9a74db6db86","target_id":"f4357af3bdee1af700d66352486740ac","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-15","gmt_create":"2025-10-11T17:25:58.2649557+08:00","gmt_modified":"2025-10-11T17:25:58.2649557+08:00"},{"id":503,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"1f3f6baf21697865c02621086d9ebce9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/controller/monitor/monitor_v1_health_check.go#1-13","gmt_create":"2025-10-11T17:25:58.2735475+08:00","gmt_modified":"2025-10-11T17:25:58.2735475+08:00"},{"id":504,"source_id":"50111ae80e6ac600d65fbd7b34df3d03","target_id":"1f3f6baf21697865c02621086d9ebce9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-13","gmt_create":"2025-10-11T17:25:58.2834344+08:00","gmt_modified":"2025-10-11T17:25:58.2834344+08:00"},{"id":505,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"852c344b512f86e468cc155a007239c3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/cmd/cmd.go#1-92","gmt_create":"2025-10-11T17:25:58.2931355+08:00","gmt_modified":"2025-10-11T17:25:58.2931355+08:00"},{"id":506,"source_id":"6949b603968e204a80d7e6e337496f12","target_id":"852c344b512f86e468cc155a007239c3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-92","gmt_create":"2025-10-11T17:25:58.3008093+08:00","gmt_modified":"2025-10-11T17:25:58.3008093+08:00"},{"id":507,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"7f41c190fab616ed408fb3470b01e156","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/monitor/monitor.go#1-14","gmt_create":"2025-10-11T17:25:58.309376+08:00","gmt_modified":"2025-10-11T17:25:58.309376+08:00"},{"id":508,"source_id":"b896e4b9529b9c35c2662cf25560c5cd","target_id":"7f41c190fab616ed408fb3470b01e156","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-14","gmt_create":"2025-10-11T17:25:58.3167119+08:00","gmt_modified":"2025-10-11T17:25:58.3167119+08:00"},{"id":509,"source_id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","target_id":"f029eb7d6cfc4e70657225da8d0f4d90071071e4","source_type":"WIKI_ITEM","target_type":"COMMIT","relationship_type":"GENERATED_IN","extra":"Wiki generated in commit: f029eb7d6cfc4e70657225da8d0f4d90071071e4","gmt_create":"2025-10-11T17:25:58.3329837+08:00","gmt_modified":"2025-10-11T17:25:58.3329837+08:00"},{"id":510,"source_id":"26c0da0b-10e1-46fd-ae3c-e0e7b23135ba","target_id":"ce051f6cc8a25a53dcd349ccf066f90b","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/card_info_apple/apple_card_info_v1_recharge_list_download_test.go","gmt_create":"2025-10-11T17:26:03.8692187+08:00","gmt_modified":"2025-10-11T17:26:03.8692187+08:00"},{"id":511,"source_id":"26c0da0b-10e1-46fd-ae3c-e0e7b23135ba","target_id":"315cb5ac67c46c359e9c8f8aecd320da","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/restriction/restriction_v1_user_info_collection_test.go","gmt_create":"2025-10-11T17:26:03.8789404+08:00","gmt_modified":"2025-10-11T17:26:03.8789404+08:00"},{"id":512,"source_id":"26c0da0b-10e1-46fd-ae3c-e0e7b23135ba","target_id":"69602f92dc2983d638407af34ffc3699","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/cron/t_mall_game_data_sync_test.go","gmt_create":"2025-10-11T17:26:03.8868376+08:00","gmt_modified":"2025-10-11T17:26:03.8868376+08:00"},{"id":513,"source_id":"26c0da0b-10e1-46fd-ae3c-e0e7b23135ba","target_id":"a4390b2a5bd3345ca09b4f120a912bf6","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/token/user_token_test.go","gmt_create":"2025-10-11T17:26:03.8935716+08:00","gmt_modified":"2025-10-11T17:26:03.8935716+08:00"},{"id":514,"source_id":"26c0da0b-10e1-46fd-ae3c-e0e7b23135ba","target_id":"8d5d9b9151c15db5b80bdccfa4ad9e4f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/card_apple_account/account_test.go","gmt_create":"2025-10-11T17:26:03.901125+08:00","gmt_modified":"2025-10-11T17:26:03.901125+08:00"},{"id":515,"source_id":"26c0da0b-10e1-46fd-ae3c-e0e7b23135ba","target_id":"3676af4fc53a7e056b34c4afcae6f032","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/card_apple_account/wallet_test.go","gmt_create":"2025-10-11T17:26:03.909527+08:00","gmt_modified":"2025-10-11T17:26:03.909527+08:00"},{"id":516,"source_id":"26c0da0b-10e1-46fd-ae3c-e0e7b23135ba","target_id":"1339d4fd004425708306ffba6c2dd7f9","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/card_apple_order/order_test.go","gmt_create":"2025-10-11T17:26:03.9169338+08:00","gmt_modified":"2025-10-11T17:26:03.9169338+08:00"},{"id":517,"source_id":"26c0da0b-10e1-46fd-ae3c-e0e7b23135ba","target_id":"12223cc24bc431745a711c09cde5b50c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/card_redeem_cookie/place_test.go","gmt_create":"2025-10-11T17:26:03.9248358+08:00","gmt_modified":"2025-10-11T17:26:03.9248358+08:00"},{"id":518,"source_id":"26c0da0b-10e1-46fd-ae3c-e0e7b23135ba","target_id":"2081083be98975ed163a65fade66d84a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/card_redeem_account/summary_test.go","gmt_create":"2025-10-11T17:26:03.9329066+08:00","gmt_modified":"2025-10-11T17:26:03.9329066+08:00"},{"id":519,"source_id":"26c0da0b-10e1-46fd-ae3c-e0e7b23135ba","target_id":"d68b895f71aba40116241dab68952308","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/steal_rule/stats_test.go","gmt_create":"2025-10-11T17:26:03.9411614+08:00","gmt_modified":"2025-10-11T17:26:03.9411614+08:00"},{"id":520,"source_id":"26c0da0b-10e1-46fd-ae3c-e0e7b23135ba","target_id":"c87e75096c95a73029618add8b2030a6","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/limiter/rate_test.go","gmt_create":"2025-10-11T17:26:03.9489257+08:00","gmt_modified":"2025-10-11T17:26:03.9489257+08:00"},{"id":521,"source_id":"26c0da0b-10e1-46fd-ae3c-e0e7b23135ba","target_id":"54791cda92ceb80fb0fd1d394b3c7786","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: go.mod","gmt_create":"2025-10-11T17:26:03.955784+08:00","gmt_modified":"2025-10-11T17:26:03.955784+08:00"},{"id":522,"source_id":"26c0da0b-10e1-46fd-ae3c-e0e7b23135ba","target_id":"6f6df715215e91eb3286c71371bf331d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: hack/config.yaml","gmt_create":"2025-10-11T17:26:03.9650408+08:00","gmt_modified":"2025-10-11T17:26:03.9650408+08:00"},{"id":523,"source_id":"26c0da0b-10e1-46fd-ae3c-e0e7b23135ba","target_id":"c240c13752c53bbb87d71a8654be71ea","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: JD_COOKIE_REFACTOR_REPORT.md","gmt_create":"2025-10-11T17:26:03.9737644+08:00","gmt_modified":"2025-10-11T17:26:03.9737644+08:00"},{"id":524,"source_id":"26c0da0b-10e1-46fd-ae3c-e0e7b23135ba","target_id":"f029eb7d6cfc4e70657225da8d0f4d90071071e4","source_type":"WIKI_ITEM","target_type":"COMMIT","relationship_type":"GENERATED_IN","extra":"Wiki generated in commit: f029eb7d6cfc4e70657225da8d0f4d90071071e4","gmt_create":"2025-10-11T17:26:03.9824664+08:00","gmt_modified":"2025-10-11T17:26:03.9824664+08:00"},{"id":525,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"0f583231f0ca6eb6bdc0cd3104f97d42","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend/main.go","gmt_create":"2025-10-11T17:26:06.0954921+08:00","gmt_modified":"2025-10-11T17:26:06.0954921+08:00"},{"id":526,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"5824f93b650d7a0b6fb8c1a016077461","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/otel/config.go","gmt_create":"2025-10-11T17:26:06.1022036+08:00","gmt_modified":"2025-10-11T17:26:06.1022036+08:00"},{"id":527,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"11df2c532cb96a0d8e041af4ea176204","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/otel/manager.go","gmt_create":"2025-10-11T17:26:06.1121308+08:00","gmt_modified":"2025-10-11T17:26:06.1121308+08:00"},{"id":528,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"70f39d04b38fd3c3c76da74b7b0ed20b","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/otel/utils.go","gmt_create":"2025-10-11T17:26:06.1195338+08:00","gmt_modified":"2025-10-11T17:26:06.1195338+08:00"},{"id":529,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"b100fafa43450f0fdfd71975218cd99c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: resource/casbin/rbac_model.conf","gmt_create":"2025-10-11T17:26:06.1280637+08:00","gmt_modified":"2025-10-11T17:26:06.1280637+08:00"},{"id":530,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"ed4ebcc4f0df8de88464eb41188917fe","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/integration/redeem/jd/api.go","gmt_create":"2025-10-11T17:26:06.1359818+08:00","gmt_modified":"2025-10-11T17:26:06.1359818+08:00"},{"id":531,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"a1e50bb39a48243490d529b7722e5c4a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/integration/redeem/ctrip/api.go","gmt_create":"2025-10-11T17:26:06.1439918+08:00","gmt_modified":"2025-10-11T17:26:06.1439918+08:00"},{"id":532,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"f7979711e6010b2ce5b4d4c1de5d453c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/integration/redeem/walmart/api.go","gmt_create":"2025-10-11T17:26:06.1508346+08:00","gmt_modified":"2025-10-11T17:26:06.1508346+08:00"},{"id":533,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"579b87223a7534fe16db6bc3dae6de6a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/integration/tmall/api/api.go","gmt_create":"2025-10-11T17:26:06.1573346+08:00","gmt_modified":"2025-10-11T17:26:06.1573346+08:00"},{"id":534,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"f72071e80cb61857e0d4b22414fa6ea4","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/integration/originalJd/client.go","gmt_create":"2025-10-11T17:26:06.1657838+08:00","gmt_modified":"2025-10-11T17:26:06.1657838+08:00"},{"id":535,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"03c5c54ee07952069215a22a208842f4","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/integration/originalJd/model.go","gmt_create":"2025-10-11T17:26:06.1741579+08:00","gmt_modified":"2025-10-11T17:26:06.1741579+08:00"},{"id":536,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"edd8bea5c8f9373cd0b4de186914479e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/jd_cookie/order.go","gmt_create":"2025-10-11T17:26:06.1811267+08:00","gmt_modified":"2025-10-11T17:26:06.1811267+08:00"},{"id":537,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"95ef136cd7b635e1a68adacf08cac1d9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/integration/redeem/jd/api.go#1-5","gmt_create":"2025-10-11T17:26:06.189619+08:00","gmt_modified":"2025-10-11T17:26:06.189619+08:00"},{"id":538,"source_id":"ed4ebcc4f0df8de88464eb41188917fe","target_id":"95ef136cd7b635e1a68adacf08cac1d9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-5","gmt_create":"2025-10-11T17:26:06.1981276+08:00","gmt_modified":"2025-10-11T17:26:06.1981276+08:00"},{"id":539,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"59dfa0261bb6f0fff79660d43bcbf75b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/integration/redeem/ctrip/api.go#1-5","gmt_create":"2025-10-11T17:26:06.2063546+08:00","gmt_modified":"2025-10-11T17:26:06.2063546+08:00"},{"id":540,"source_id":"a1e50bb39a48243490d529b7722e5c4a","target_id":"59dfa0261bb6f0fff79660d43bcbf75b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-5","gmt_create":"2025-10-11T17:26:06.2141428+08:00","gmt_modified":"2025-10-11T17:26:06.2141428+08:00"},{"id":541,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"587a22c21d9275066f3fe6d44d05bff3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/integration/redeem/walmart/api.go#1-5","gmt_create":"2025-10-11T17:26:06.2219612+08:00","gmt_modified":"2025-10-11T17:26:06.2219612+08:00"},{"id":542,"source_id":"f7979711e6010b2ce5b4d4c1de5d453c","target_id":"587a22c21d9275066f3fe6d44d05bff3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-5","gmt_create":"2025-10-11T17:26:06.2297121+08:00","gmt_modified":"2025-10-11T17:26:06.2297121+08:00"},{"id":543,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"b39d2a779fe4605757ede61608c45123","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/integration/tmall/api/api.go#1-20","gmt_create":"2025-10-11T17:26:06.2382735+08:00","gmt_modified":"2025-10-11T17:26:06.2382735+08:00"},{"id":544,"source_id":"579b87223a7534fe16db6bc3dae6de6a","target_id":"b39d2a779fe4605757ede61608c45123","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-20","gmt_create":"2025-10-11T17:26:06.2458294+08:00","gmt_modified":"2025-10-11T17:26:06.2458294+08:00"},{"id":545,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"8fe8c9081678e20a4b8fa4a4bbddf5e4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/integration/originalJd/client.go#11-123","gmt_create":"2025-10-11T17:26:06.254008+08:00","gmt_modified":"2025-10-11T17:26:06.254008+08:00"},{"id":546,"source_id":"f72071e80cb61857e0d4b22414fa6ea4","target_id":"8fe8c9081678e20a4b8fa4a4bbddf5e4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 11-123","gmt_create":"2025-10-11T17:26:06.2630396+08:00","gmt_modified":"2025-10-11T17:26:06.2630396+08:00"},{"id":547,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"d21bc3b599b7c526e4c859b7f957c9c3","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/integration/originalJd/model.go#1-144","gmt_create":"2025-10-11T17:26:06.2711366+08:00","gmt_modified":"2025-10-11T17:26:06.2711366+08:00"},{"id":548,"source_id":"03c5c54ee07952069215a22a208842f4","target_id":"d21bc3b599b7c526e4c859b7f957c9c3","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-144","gmt_create":"2025-10-11T17:26:06.2798205+08:00","gmt_modified":"2025-10-11T17:26:06.2798205+08:00"},{"id":549,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"f48ef892510854b251b181c258bcd119","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/otel/config.go#1-68","gmt_create":"2025-10-11T17:26:06.2882778+08:00","gmt_modified":"2025-10-11T17:26:06.2882778+08:00"},{"id":550,"source_id":"5824f93b650d7a0b6fb8c1a016077461","target_id":"f48ef892510854b251b181c258bcd119","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-68","gmt_create":"2025-10-11T17:26:06.295961+08:00","gmt_modified":"2025-10-11T17:26:06.295961+08:00"},{"id":551,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"964e3fe5d6407728afe85f53719ef569","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/otel/manager.go#1-258","gmt_create":"2025-10-11T17:26:06.3042985+08:00","gmt_modified":"2025-10-11T17:26:06.3042985+08:00"},{"id":552,"source_id":"11df2c532cb96a0d8e041af4ea176204","target_id":"964e3fe5d6407728afe85f53719ef569","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-258","gmt_create":"2025-10-11T17:26:06.3121605+08:00","gmt_modified":"2025-10-11T17:26:06.3121605+08:00"},{"id":553,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"17d489f98524dd0832db9b2e189341a8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: main.go","gmt_create":"2025-10-11T17:26:06.3215812+08:00","gmt_modified":"2025-10-11T17:26:06.3215812+08:00"},{"id":554,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"332f9fba7c977c370d3ccf2a3aad96ce","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: main.go#1-50","gmt_create":"2025-10-11T17:26:06.3288994+08:00","gmt_modified":"2025-10-11T17:26:06.3288994+08:00"},{"id":555,"source_id":"17d489f98524dd0832db9b2e189341a8","target_id":"332f9fba7c977c370d3ccf2a3aad96ce","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-50","gmt_create":"2025-10-11T17:26:06.3371265+08:00","gmt_modified":"2025-10-11T17:26:06.3371265+08:00"},{"id":556,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"616759a9a4d327984230aefdae310fbb","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/otel/utils.go#22-33","gmt_create":"2025-10-11T17:26:06.3449519+08:00","gmt_modified":"2025-10-11T17:26:06.3449519+08:00"},{"id":557,"source_id":"70f39d04b38fd3c3c76da74b7b0ed20b","target_id":"616759a9a4d327984230aefdae310fbb","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 22-33","gmt_create":"2025-10-11T17:26:06.3530947+08:00","gmt_modified":"2025-10-11T17:26:06.3530947+08:00"},{"id":558,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"d32ea696977b297ef621a0fb8b5ab306","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/otel/manager.go#35-86","gmt_create":"2025-10-11T17:26:06.3600859+08:00","gmt_modified":"2025-10-11T17:26:06.3600859+08:00"},{"id":559,"source_id":"11df2c532cb96a0d8e041af4ea176204","target_id":"d32ea696977b297ef621a0fb8b5ab306","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 35-86","gmt_create":"2025-10-11T17:26:06.367829+08:00","gmt_modified":"2025-10-11T17:26:06.367829+08:00"},{"id":560,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"b1f6a58d5a943577f0c54d3666cb8975","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/otel/utils.go#1-50","gmt_create":"2025-10-11T17:26:06.3771883+08:00","gmt_modified":"2025-10-11T17:26:06.3771883+08:00"},{"id":561,"source_id":"70f39d04b38fd3c3c76da74b7b0ed20b","target_id":"b1f6a58d5a943577f0c54d3666cb8975","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-50","gmt_create":"2025-10-11T17:26:06.384998+08:00","gmt_modified":"2025-10-11T17:26:06.384998+08:00"},{"id":562,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"589fe36265ad27bcea83406c4f9b4f62","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: resource/casbin/rbac_model.conf#1-14","gmt_create":"2025-10-11T17:26:06.3929451+08:00","gmt_modified":"2025-10-11T17:26:06.3929451+08:00"},{"id":563,"source_id":"b100fafa43450f0fdfd71975218cd99c","target_id":"589fe36265ad27bcea83406c4f9b4f62","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-14","gmt_create":"2025-10-11T17:26:06.4009171+08:00","gmt_modified":"2025-10-11T17:26:06.4009171+08:00"},{"id":564,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"59b6d508a3e965dc106b1cbeac2570ae","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/otel/config.go#40-52","gmt_create":"2025-10-11T17:26:06.4103406+08:00","gmt_modified":"2025-10-11T17:26:06.4103406+08:00"},{"id":565,"source_id":"5824f93b650d7a0b6fb8c1a016077461","target_id":"59b6d508a3e965dc106b1cbeac2570ae","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 40-52","gmt_create":"2025-10-11T17:26:06.4179699+08:00","gmt_modified":"2025-10-11T17:26:06.4179699+08:00"},{"id":566,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"01f4775a3f4eabe935537909fd08110b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/otel/manager.go#50-55","gmt_create":"2025-10-11T17:26:06.4259649+08:00","gmt_modified":"2025-10-11T17:26:06.4259649+08:00"},{"id":567,"source_id":"11df2c532cb96a0d8e041af4ea176204","target_id":"01f4775a3f4eabe935537909fd08110b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 50-55","gmt_create":"2025-10-11T17:26:06.433796+08:00","gmt_modified":"2025-10-11T17:26:06.433796+08:00"},{"id":568,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"6172294c21d9eeef4f7e1cbee7494df4","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/logic/jd_cookie/order.go#500-550","gmt_create":"2025-10-11T17:26:06.4447731+08:00","gmt_modified":"2025-10-11T17:26:06.4447731+08:00"},{"id":569,"source_id":"edd8bea5c8f9373cd0b4de186914479e","target_id":"6172294c21d9eeef4f7e1cbee7494df4","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 500-550","gmt_create":"2025-10-11T17:26:06.452062+08:00","gmt_modified":"2025-10-11T17:26:06.452062+08:00"},{"id":570,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"eec37ad3c15d2c25f166711fa52e741b","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/consts/jd_cookie.go","gmt_create":"2025-10-11T17:26:06.4588626+08:00","gmt_modified":"2025-10-11T17:26:06.4588626+08:00"},{"id":571,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"2deccc6412aa3a542406ea4123dbd7e6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/consts/jd_cookie.go#150-160","gmt_create":"2025-10-11T17:26:06.4636081+08:00","gmt_modified":"2025-10-11T17:26:06.4636081+08:00"},{"id":572,"source_id":"eec37ad3c15d2c25f166711fa52e741b","target_id":"2deccc6412aa3a542406ea4123dbd7e6","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 150-160","gmt_create":"2025-10-11T17:26:06.4762171+08:00","gmt_modified":"2025-10-11T17:26:06.4762171+08:00"},{"id":573,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"77aff4289e7b60617a6b97873721f586af264581","source_type":"WIKI_ITEM","target_type":"COMMIT","relationship_type":"GENERATED_IN","extra":"Wiki generated in commit: 77aff4289e7b60617a6b97873721f586af264581","gmt_create":"2025-10-11T17:26:06.4841609+08:00","gmt_modified":"2025-10-11T17:26:06.4841609+08:00"},{"id":574,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"d002a301044bef263b2a95b977c75925","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/verify/aes_ecb.go","gmt_create":"2025-10-11T17:27:31.6151522+08:00","gmt_modified":"2025-10-11T17:27:31.6151522+08:00"},{"id":575,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"72755b8cc621f2d563a4a5ee5222529b","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/verify/md5.go","gmt_create":"2025-10-11T17:27:31.6231543+08:00","gmt_modified":"2025-10-11T17:27:31.6231543+08:00"},{"id":576,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"b279f7393bb4b20c60e4a58537fad6f5","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/mfa/mfa.go","gmt_create":"2025-10-11T17:27:31.6309867+08:00","gmt_modified":"2025-10-11T17:27:31.6309867+08:00"},{"id":577,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"a3b7521789787cc4db7608d02c5e95f4","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/middleware/auth.go","gmt_create":"2025-10-11T17:27:31.6392254+08:00","gmt_modified":"2025-10-11T17:27:31.6392254+08:00"},{"id":578,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"674428c72460e01521574ca280c115f4","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/model/sys_user.go","gmt_create":"2025-10-11T17:27:31.6460327+08:00","gmt_modified":"2025-10-11T17:27:31.6460327+08:00"},{"id":579,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"ee654b1f5fb098fe9e7aeb85bd452349","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/service/sys_user.go","gmt_create":"2025-10-11T17:27:31.6539736+08:00","gmt_modified":"2025-10-11T17:27:31.6539736+08:00"},{"id":580,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"8193684ba57063beec7b646d4b1b54e0","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/service/sys_auth.go","gmt_create":"2025-10-11T17:27:31.6618307+08:00","gmt_modified":"2025-10-11T17:27:31.6618307+08:00"},{"id":581,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"55835e5aa0b4632d7c3ab1cb90645f23","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/service/sys_casbin.go","gmt_create":"2025-10-11T17:27:31.6682885+08:00","gmt_modified":"2025-10-11T17:27:31.6682885+08:00"},{"id":582,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"c08fb0c498d0fab1d988a77466050227","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/dao/v_1_sys_user.go","gmt_create":"2025-10-11T17:27:31.6772881+08:00","gmt_modified":"2025-10-11T17:27:31.6772881+08:00"},{"id":583,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"9cd3a5d90f9aa905b7855847b1300d50","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/dao/v_1_sys_casbin_rule.go","gmt_create":"2025-10-11T17:27:31.6850524+08:00","gmt_modified":"2025-10-11T17:27:31.6850524+08:00"},{"id":584,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"b100fafa43450f0fdfd71975218cd99c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: resource/casbin/rbac_model.conf","gmt_create":"2025-10-11T17:27:31.6929534+08:00","gmt_modified":"2025-10-11T17:27:31.6929534+08:00"},{"id":585,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"c240c13752c53bbb87d71a8654be71ea","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: JD_COOKIE_REFACTOR_REPORT.md","gmt_create":"2025-10-11T17:27:31.7013684+08:00","gmt_modified":"2025-10-11T17:27:31.7013684+08:00"},{"id":586,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"ec6f80518cdb41b1cb7ec141e92638a1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/middleware/auth.go#1-154","gmt_create":"2025-10-11T17:27:31.7092617+08:00","gmt_modified":"2025-10-11T17:27:31.7092617+08:00"},{"id":587,"source_id":"a3b7521789787cc4db7608d02c5e95f4","target_id":"ec6f80518cdb41b1cb7ec141e92638a1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-154","gmt_create":"2025-10-11T17:27:31.7165892+08:00","gmt_modified":"2025-10-11T17:27:31.7165892+08:00"},{"id":588,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"972216ab1861cc2715878f10ca1d7e82","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/model/sys_user.go#1-92","gmt_create":"2025-10-11T17:27:31.7243991+08:00","gmt_modified":"2025-10-11T17:27:31.7243991+08:00"},{"id":589,"source_id":"674428c72460e01521574ca280c115f4","target_id":"972216ab1861cc2715878f10ca1d7e82","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-92","gmt_create":"2025-10-11T17:27:31.731711+08:00","gmt_modified":"2025-10-11T17:27:31.731711+08:00"},{"id":590,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"43ed130e118ec9a873129314ddcd834d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/service/sys_casbin.go#1-50","gmt_create":"2025-10-11T17:27:31.7403179+08:00","gmt_modified":"2025-10-11T17:27:31.7403179+08:00"},{"id":591,"source_id":"55835e5aa0b4632d7c3ab1cb90645f23","target_id":"43ed130e118ec9a873129314ddcd834d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-50","gmt_create":"2025-10-11T17:27:31.7476406+08:00","gmt_modified":"2025-10-11T17:27:31.7476406+08:00"},{"id":592,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"144cff56ec3838a61a926b3ff9a3d25e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/middleware/auth.go#50-100","gmt_create":"2025-10-11T17:27:31.7549747+08:00","gmt_modified":"2025-10-11T17:27:31.7549747+08:00"},{"id":593,"source_id":"a3b7521789787cc4db7608d02c5e95f4","target_id":"144cff56ec3838a61a926b3ff9a3d25e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 50-100","gmt_create":"2025-10-11T17:27:31.7621944+08:00","gmt_modified":"2025-10-11T17:27:31.7621944+08:00"},{"id":594,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"c23df18489eaaeec8a340de242b77b44","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/token/user_token.go","gmt_create":"2025-10-11T17:27:31.7710333+08:00","gmt_modified":"2025-10-11T17:27:31.7710333+08:00"},{"id":595,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"4f93cccb25d8c64e73e92615a203e00e","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/token/user_token.go#1-50","gmt_create":"2025-10-11T17:27:31.7789151+08:00","gmt_modified":"2025-10-11T17:27:31.7789151+08:00"},{"id":596,"source_id":"c23df18489eaaeec8a340de242b77b44","target_id":"4f93cccb25d8c64e73e92615a203e00e","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-50","gmt_create":"2025-10-11T17:27:31.7868314+08:00","gmt_modified":"2025-10-11T17:27:31.7868314+08:00"},{"id":597,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"a964b09bca4acd49db9824c141108f00","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: resource/casbin/rbac_model.conf#1-15","gmt_create":"2025-10-11T17:27:31.799995+08:00","gmt_modified":"2025-10-11T17:27:31.799995+08:00"},{"id":598,"source_id":"b100fafa43450f0fdfd71975218cd99c","target_id":"a964b09bca4acd49db9824c141108f00","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-15","gmt_create":"2025-10-11T17:27:31.8076644+08:00","gmt_modified":"2025-10-11T17:27:31.8076644+08:00"},{"id":599,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"5613af50c546b7eeb54ca83263a76c29","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/dao/v_1_sys_casbin_rule.go#1-28","gmt_create":"2025-10-11T17:27:31.8174284+08:00","gmt_modified":"2025-10-11T17:27:31.8174284+08:00"},{"id":600,"source_id":"9cd3a5d90f9aa905b7855847b1300d50","target_id":"5613af50c546b7eeb54ca83263a76c29","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-28","gmt_create":"2025-10-11T17:27:31.8247278+08:00","gmt_modified":"2025-10-11T17:27:31.8247278+08:00"},{"id":601,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"ceaf312dde8910a6de9a4671cd06d559","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/mfa/mfa.go#1-53","gmt_create":"2025-10-11T17:27:31.8352814+08:00","gmt_modified":"2025-10-11T17:27:31.8352814+08:00"},{"id":602,"source_id":"b279f7393bb4b20c60e4a58537fad6f5","target_id":"ceaf312dde8910a6de9a4671cd06d559","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-53","gmt_create":"2025-10-11T17:27:31.8414344+08:00","gmt_modified":"2025-10-11T17:27:31.8414344+08:00"},{"id":603,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"ed43772f3487059e03a475d29e64c140","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/sysUser/sysUser_v1_totp_status_get.go","gmt_create":"2025-10-11T17:27:31.8511742+08:00","gmt_modified":"2025-10-11T17:27:31.8511742+08:00"},{"id":604,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"7d199570ba96ddc2ca6639d6d726d419","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/controller/sysUser/sysUser_v1_totp_status_get.go#1-37","gmt_create":"2025-10-11T17:27:31.8558589+08:00","gmt_modified":"2025-10-11T17:27:31.8558589+08:00"},{"id":605,"source_id":"ed43772f3487059e03a475d29e64c140","target_id":"7d199570ba96ddc2ca6639d6d726d419","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-37","gmt_create":"2025-10-11T17:27:31.8632542+08:00","gmt_modified":"2025-10-11T17:27:31.8632542+08:00"},{"id":606,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"ed385c7e637955c644231fb8b9437600","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/sysUser/sysUser_v1_totp_set.go","gmt_create":"2025-10-11T17:27:31.8698306+08:00","gmt_modified":"2025-10-11T17:27:31.8698306+08:00"},{"id":607,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"8c317fe404ce5c22b9feef901431fcc5","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/controller/sysUser/sysUser_v1_totp_set.go#1-34","gmt_create":"2025-10-11T17:27:31.8771596+08:00","gmt_modified":"2025-10-11T17:27:31.8771596+08:00"},{"id":608,"source_id":"ed385c7e637955c644231fb8b9437600","target_id":"8c317fe404ce5c22b9feef901431fcc5","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-34","gmt_create":"2025-10-11T17:27:31.8851169+08:00","gmt_modified":"2025-10-11T17:27:31.8851169+08:00"},{"id":609,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"a5e8020f6c112eb351bfce346cc7e7cd","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/verify/aes_ecb.go#1-91","gmt_create":"2025-10-11T17:27:31.8962218+08:00","gmt_modified":"2025-10-11T17:27:31.8962218+08:00"},{"id":610,"source_id":"d002a301044bef263b2a95b977c75925","target_id":"a5e8020f6c112eb351bfce346cc7e7cd","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-91","gmt_create":"2025-10-11T17:27:31.9040918+08:00","gmt_modified":"2025-10-11T17:27:31.9040918+08:00"},{"id":611,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"cce1b31f34a553e7032bfe746d1cd94b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/verify/md5.go#1-32","gmt_create":"2025-10-11T17:27:31.9114816+08:00","gmt_modified":"2025-10-11T17:27:31.9114816+08:00"},{"id":612,"source_id":"72755b8cc621f2d563a4a5ee5222529b","target_id":"cce1b31f34a553e7032bfe746d1cd94b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-32","gmt_create":"2025-10-11T17:27:31.9187143+08:00","gmt_modified":"2025-10-11T17:27:31.9187143+08:00"},{"id":613,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"a4b14b6b79267d38f599e305591c3273","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/service/sys_user.go#1-102","gmt_create":"2025-10-11T17:27:31.9308089+08:00","gmt_modified":"2025-10-11T17:27:31.9308089+08:00"},{"id":614,"source_id":"ee654b1f5fb098fe9e7aeb85bd452349","target_id":"a4b14b6b79267d38f599e305591c3273","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-102","gmt_create":"2025-10-11T17:27:31.9393032+08:00","gmt_modified":"2025-10-11T17:27:31.9393032+08:00"},{"id":615,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"00d464ab1568b59906f97ec8146e8af4","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/errHandler/handler.go","gmt_create":"2025-10-11T17:27:31.9509299+08:00","gmt_modified":"2025-10-11T17:27:31.9509299+08:00"},{"id":616,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"4eedd1dcf74ca7ed561a2da81f45f3d7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/errHandler/handler.go#1-50","gmt_create":"2025-10-11T17:27:31.9582505+08:00","gmt_modified":"2025-10-11T17:27:31.9582505+08:00"},{"id":617,"source_id":"00d464ab1568b59906f97ec8146e8af4","target_id":"4eedd1dcf74ca7ed561a2da81f45f3d7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-50","gmt_create":"2025-10-11T17:27:31.9660558+08:00","gmt_modified":"2025-10-11T17:27:31.9660558+08:00"},{"id":618,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"f029eb7d6cfc4e70657225da8d0f4d90071071e4","source_type":"WIKI_ITEM","target_type":"COMMIT","relationship_type":"GENERATED_IN","extra":"Wiki generated in commit: f029eb7d6cfc4e70657225da8d0f4d90071071e4","gmt_create":"2025-10-11T17:27:31.9768219+08:00","gmt_modified":"2025-10-11T17:27:31.9768219+08:00"},{"id":619,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"276c0639f90dcf2a34f4f4fbde119792","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: api/order/v1/form.go","gmt_create":"2025-10-11T17:27:33.0151935+08:00","gmt_modified":"2025-10-11T17:27:33.0151935+08:00"},{"id":620,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"b68f5340d85dff7e7356a47028249bea","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: api/order/v1/log.go","gmt_create":"2025-10-11T17:27:33.0230794+08:00","gmt_modified":"2025-10-11T17:27:33.0230794+08:00"},{"id":621,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"d004861257e62752cfed1f1a3dee4f6e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: api/order/v1/order_summary.go","gmt_create":"2025-10-11T17:27:33.0299499+08:00","gmt_modified":"2025-10-11T17:27:33.0299499+08:00"},{"id":622,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"117de4e77295f9440aa08bf4b60bb54e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: api/order/order.go","gmt_create":"2025-10-11T17:27:33.0367316+08:00","gmt_modified":"2025-10-11T17:27:33.0367316+08:00"},{"id":623,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"fb972da6475be273c156b3d340c60b4d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/order/order_new.go","gmt_create":"2025-10-11T17:27:33.0439577+08:00","gmt_modified":"2025-10-11T17:27:33.0439577+08:00"},{"id":624,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"1b43f5469efafba6f30e2a9bf228e4d0","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/order/order_v1_order_form_create.go","gmt_create":"2025-10-11T17:27:33.0507598+08:00","gmt_modified":"2025-10-11T17:27:33.0507598+08:00"},{"id":625,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"6d0148a632b80d69ab9cb23b7b7c1177","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/order/order_v1_order_form_update.go","gmt_create":"2025-10-11T17:27:33.0576933+08:00","gmt_modified":"2025-10-11T17:27:33.0576933+08:00"},{"id":626,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"493b77f6804c0cb6c2b773567f9a98a5","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/order/order_v1_order_form_delete.go","gmt_create":"2025-10-11T17:27:33.064988+08:00","gmt_modified":"2025-10-11T17:27:33.064988+08:00"},{"id":627,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"16690b403f75ad7364b91d742d4e0ec2","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/order/order_v1_order_form_list.go","gmt_create":"2025-10-11T17:27:33.0731212+08:00","gmt_modified":"2025-10-11T17:27:33.0731212+08:00"},{"id":628,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"23d82c1c91bfb481851d2302868008b1","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/order/order_v1_order_log_list.go","gmt_create":"2025-10-11T17:27:33.0802706+08:00","gmt_modified":"2025-10-11T17:27:33.0802706+08:00"},{"id":629,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"58a47489aee9a8f906d1d2120d982105","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/order/order_v1_order_log_delete.go","gmt_create":"2025-10-11T17:27:33.0882175+08:00","gmt_modified":"2025-10-11T17:27:33.0882175+08:00"},{"id":630,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"b477f7365d4c6efa2c1cbcd88d2e7db9","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/order/order_v1_order_summary_get_list.go","gmt_create":"2025-10-11T17:27:33.0962128+08:00","gmt_modified":"2025-10-11T17:27:33.0962128+08:00"},{"id":631,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"3a8478b750f71d410904fb39aa1e55bc","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/order/order_v1_order_summary_daily_get_list.go","gmt_create":"2025-10-11T17:27:33.1031589+08:00","gmt_modified":"2025-10-11T17:27:33.1031589+08:00"},{"id":632,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"07658a06e2cd29c67a415fcae7cad0cd","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/model/order_info.go","gmt_create":"2025-10-11T17:27:33.111069+08:00","gmt_modified":"2025-10-11T17:27:33.111069+08:00"},{"id":633,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"ea969bf93403e59ca22028be70fc6c3a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/merchant_order/order-summary.go","gmt_create":"2025-10-11T17:27:33.1189114+08:00","gmt_modified":"2025-10-11T17:27:33.1189114+08:00"},{"id":634,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"77aff4289e7b60617a6b97873721f586af264581","source_type":"WIKI_ITEM","target_type":"COMMIT","relationship_type":"GENERATED_IN","extra":"Wiki generated in commit: 77aff4289e7b60617a6b97873721f586af264581","gmt_create":"2025-10-11T17:27:33.1278476+08:00","gmt_modified":"2025-10-11T17:27:33.1278476+08:00"},{"id":635,"source_id":"b64a6df1-5797-4877-8b53-29fc0fdad59d","target_id":"498fdff361f9c01e54357a315e9f7d11","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend\\utility\\integration\\originalJd\\client.go","gmt_create":"2025-10-11T17:28:29.9108508+08:00","gmt_modified":"2025-10-11T17:28:29.9108508+08:00"},{"id":636,"source_id":"b64a6df1-5797-4877-8b53-29fc0fdad59d","target_id":"eb65af27cb143cabfacf4e397cb494ca","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend\\utility\\integration\\originalJd\\model.go","gmt_create":"2025-10-11T17:28:29.9187816+08:00","gmt_modified":"2025-10-11T17:28:29.9187816+08:00"},{"id":637,"source_id":"b64a6df1-5797-4877-8b53-29fc0fdad59d","target_id":"f94f261c1cc667bd73b5e2d9fc8b4c0f","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend\\internal\\consts\\card_redeem_cookie.go","gmt_create":"2025-10-11T17:28:29.9203675+08:00","gmt_modified":"2025-10-11T17:28:29.9203675+08:00"},{"id":638,"source_id":"b64a6df1-5797-4877-8b53-29fc0fdad59d","target_id":"ef7aefce9f83002d91de28b146a92720","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: e:\\projects\\kami\\kami_backend\\internal\\consts\\card_jd.go","gmt_create":"2025-10-11T17:28:29.9203675+08:00","gmt_modified":"2025-10-11T17:28:29.9203675+08:00"},{"id":639,"source_id":"b64a6df1-5797-4877-8b53-29fc0fdad59d","target_id":"dd733661014ef5805339ded90facaed0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend\\utility\\integration\\originalJd\\client.go#5-35","gmt_create":"2025-10-11T17:28:29.9412062+08:00","gmt_modified":"2025-10-11T17:28:29.9412062+08:00"},{"id":640,"source_id":"498fdff361f9c01e54357a315e9f7d11","target_id":"dd733661014ef5805339ded90facaed0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 5-35","gmt_create":"2025-10-11T17:28:29.9485741+08:00","gmt_modified":"2025-10-11T17:28:29.9485741+08:00"},{"id":641,"source_id":"b64a6df1-5797-4877-8b53-29fc0fdad59d","target_id":"9749731ed765b177a75bbb84edc2c781","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend\\utility\\integration\\originalJd\\model.go#35-50","gmt_create":"2025-10-11T17:28:29.9576086+08:00","gmt_modified":"2025-10-11T17:28:29.9576086+08:00"},{"id":642,"source_id":"eb65af27cb143cabfacf4e397cb494ca","target_id":"9749731ed765b177a75bbb84edc2c781","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 35-50","gmt_create":"2025-10-11T17:28:29.9649156+08:00","gmt_modified":"2025-10-11T17:28:29.9649156+08:00"},{"id":643,"source_id":"b64a6df1-5797-4877-8b53-29fc0fdad59d","target_id":"f415bde86145ca67e63b0a6a7645487a","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend\\utility\\integration\\originalJd\\client.go#65-85","gmt_create":"2025-10-11T17:28:29.9705697+08:00","gmt_modified":"2025-10-11T17:28:29.9705697+08:00"},{"id":644,"source_id":"498fdff361f9c01e54357a315e9f7d11","target_id":"f415bde86145ca67e63b0a6a7645487a","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 65-85","gmt_create":"2025-10-11T17:28:29.9782463+08:00","gmt_modified":"2025-10-11T17:28:29.9782463+08:00"},{"id":645,"source_id":"b64a6df1-5797-4877-8b53-29fc0fdad59d","target_id":"ff9ed734519da40b64bea347532ad39d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend\\utility\\integration\\originalJd\\model.go#110-125","gmt_create":"2025-10-11T17:28:29.9857853+08:00","gmt_modified":"2025-10-11T17:28:29.9857853+08:00"},{"id":646,"source_id":"eb65af27cb143cabfacf4e397cb494ca","target_id":"ff9ed734519da40b64bea347532ad39d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 110-125","gmt_create":"2025-10-11T17:28:29.993167+08:00","gmt_modified":"2025-10-11T17:28:29.993167+08:00"},{"id":647,"source_id":"b64a6df1-5797-4877-8b53-29fc0fdad59d","target_id":"a0944686e185b8cdc6f06d21d5678c43","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend\\internal\\consts\\card_redeem_cookie.go#25-35","gmt_create":"2025-10-11T17:28:30.0010653+08:00","gmt_modified":"2025-10-11T17:28:30.0010653+08:00"},{"id":648,"source_id":"f94f261c1cc667bd73b5e2d9fc8b4c0f","target_id":"a0944686e185b8cdc6f06d21d5678c43","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 25-35","gmt_create":"2025-10-11T17:28:30.0089607+08:00","gmt_modified":"2025-10-11T17:28:30.0089607+08:00"},{"id":649,"source_id":"b64a6df1-5797-4877-8b53-29fc0fdad59d","target_id":"c6ba97566833b54cd4ff516c8ea88f46","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend\\internal\\consts\\card_jd.go#45-65","gmt_create":"2025-10-11T17:28:30.0174725+08:00","gmt_modified":"2025-10-11T17:28:30.0174725+08:00"},{"id":650,"source_id":"ef7aefce9f83002d91de28b146a92720","target_id":"c6ba97566833b54cd4ff516c8ea88f46","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 45-65","gmt_create":"2025-10-11T17:28:30.0235256+08:00","gmt_modified":"2025-10-11T17:28:30.0235256+08:00"},{"id":651,"source_id":"b64a6df1-5797-4877-8b53-29fc0fdad59d","target_id":"8a5414d484500ba17e6a788ce484c21b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend\\utility\\integration\\originalJd\\client.go#10-20","gmt_create":"2025-10-11T17:28:30.0313993+08:00","gmt_modified":"2025-10-11T17:28:30.0313993+08:00"},{"id":652,"source_id":"498fdff361f9c01e54357a315e9f7d11","target_id":"8a5414d484500ba17e6a788ce484c21b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 10-20","gmt_create":"2025-10-11T17:28:30.0387262+08:00","gmt_modified":"2025-10-11T17:28:30.0387262+08:00"},{"id":653,"source_id":"b64a6df1-5797-4877-8b53-29fc0fdad59d","target_id":"37112fccfc8b194c480bb373d48115f7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: e:\\projects\\kami\\kami_backend\\utility\\integration\\originalJd\\client.go#70-80","gmt_create":"2025-10-11T17:28:30.0460906+08:00","gmt_modified":"2025-10-11T17:28:30.0460906+08:00"},{"id":654,"source_id":"498fdff361f9c01e54357a315e9f7d11","target_id":"37112fccfc8b194c480bb373d48115f7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 70-80","gmt_create":"2025-10-11T17:28:30.0541762+08:00","gmt_modified":"2025-10-11T17:28:30.0541762+08:00"},{"id":655,"source_id":"b64a6df1-5797-4877-8b53-29fc0fdad59d","target_id":"77aff4289e7b60617a6b97873721f586af264581","source_type":"WIKI_ITEM","target_type":"COMMIT","relationship_type":"GENERATED_IN","extra":"Wiki generated in commit: 77aff4289e7b60617a6b97873721f586af264581","gmt_create":"2025-10-11T17:28:30.0623727+08:00","gmt_modified":"2025-10-11T17:28:30.0623727+08:00"},{"id":656,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"5b63b16fce716e9c574c9fcdb6fb533b","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: api/order/v1/order.go","gmt_create":"2025-10-11T17:28:54.2428715+08:00","gmt_modified":"2025-10-11T17:28:54.2428715+08:00"},{"id":657,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"c0b5e0a48e881e774316a237bd41edcf","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/card_info_apple/card_info_apple_v1_recharge_submit.go","gmt_create":"2025-10-11T17:28:54.2507236+08:00","gmt_modified":"2025-10-11T17:28:54.2507236+08:00"},{"id":658,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"1c27101b67ffcdf02489a331ce98d3dd","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/card_redeem_jd/card_redeem_jd_v1_place_order.go","gmt_create":"2025-10-11T17:28:54.2589694+08:00","gmt_modified":"2025-10-11T17:28:54.2589694+08:00"},{"id":659,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"a2750efa03ae7599bd56314495a2da56","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/card_info_jd/card_info_jd_v1_order_callback.go","gmt_create":"2025-10-11T17:28:54.2668121+08:00","gmt_modified":"2025-10-11T17:28:54.2668121+08:00"},{"id":660,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"711773636c036a042ce625f30229a418","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_submit.go","gmt_create":"2025-10-11T17:28:54.2747734+08:00","gmt_modified":"2025-10-11T17:28:54.2747734+08:00"},{"id":661,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"1b7d72f7f4a9bb0f3f8a8dc432a433f6","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/model/do/order_info.go","gmt_create":"2025-10-11T17:28:54.2821913+08:00","gmt_modified":"2025-10-11T17:28:54.2821913+08:00"},{"id":662,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"035d413d594bd8cd49b625ad3200b11c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/dao/v_1_order_info.go","gmt_create":"2025-10-11T17:28:54.2900754+08:00","gmt_modified":"2025-10-11T17:28:54.2900754+08:00"},{"id":663,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"449f4de7045f7b39ec1c6aa4ecb4b840","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/service/card_apple_order.go","gmt_create":"2025-10-11T17:28:54.2979687+08:00","gmt_modified":"2025-10-11T17:28:54.2979687+08:00"},{"id":664,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"a2623d6811b08468df51c167eaf9b774","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/service/card_redeem_order.go","gmt_create":"2025-10-11T17:28:54.3047454+08:00","gmt_modified":"2025-10-11T17:28:54.3047454+08:00"},{"id":665,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"8ac69700098158e9e90a9a8f1a247a9a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/consts/sys_user_payment_record.go","gmt_create":"2025-10-11T17:28:54.3132035+08:00","gmt_modified":"2025-10-11T17:28:54.3132035+08:00"},{"id":666,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"1b43f5469efafba6f30e2a9bf228e4d0","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/order/order_v1_order_form_create.go","gmt_create":"2025-10-11T17:28:54.3199997+08:00","gmt_modified":"2025-10-11T17:28:54.3199997+08:00"},{"id":667,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"23d82c1c91bfb481851d2302868008b1","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/order/order_v1_order_log_list.go","gmt_create":"2025-10-11T17:28:54.3268559+08:00","gmt_modified":"2025-10-11T17:28:54.3268559+08:00"},{"id":668,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"b477f7365d4c6efa2c1cbcd88d2e7db9","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/order/order_v1_order_summary_get_list.go","gmt_create":"2025-10-11T17:28:54.3347663+08:00","gmt_modified":"2025-10-11T17:28:54.3347663+08:00"},{"id":669,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"70e0b28642444d37c06db48c6c61307d","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/card_info_jd/card_info_jd_v1_order_summary_list.go","gmt_create":"2025-10-11T17:28:54.342086+08:00","gmt_modified":"2025-10-11T17:28:54.342086+08:00"},{"id":670,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"3c6298484df164a1e5fe7fc2efa9712c","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/controller/card_info_walmart/card_info_walmart_v1_order_summary_list.go","gmt_create":"2025-10-11T17:28:54.3499254+08:00","gmt_modified":"2025-10-11T17:28:54.3499254+08:00"},{"id":671,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"fec40ef00c4cd2e564af5cea15277c85","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/card_apple_order/card_apple_order.go","gmt_create":"2025-10-11T17:28:54.3568871+08:00","gmt_modified":"2025-10-11T17:28:54.3568871+08:00"},{"id":672,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"f18bd86f1dafe9eae88b4f4b00db9bcd","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/card_redeem_order/card_redeem_order.go","gmt_create":"2025-10-11T17:28:54.3649706+08:00","gmt_modified":"2025-10-11T17:28:54.3649706+08:00"},{"id":673,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"c6ee44f200688a3a1f009e9a166d6481","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/utils/tools.go","gmt_create":"2025-10-11T17:28:54.3732105+08:00","gmt_modified":"2025-10-11T17:28:54.3732105+08:00"},{"id":674,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"bd83967e8844a9df33a6def66ff88bf8","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/cache/cache.go","gmt_create":"2025-10-11T17:28:54.3802439+08:00","gmt_modified":"2025-10-11T17:28:54.3802439+08:00"},{"id":675,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"eec37ad3c15d2c25f166711fa52e741b","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/consts/jd_cookie.go","gmt_create":"2025-10-11T17:28:54.3870023+08:00","gmt_modified":"2025-10-11T17:28:54.3870023+08:00"},{"id":676,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"edd8bea5c8f9373cd0b4de186914479e","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/logic/jd_cookie/order.go","gmt_create":"2025-10-11T17:28:54.3949263+08:00","gmt_modified":"2025-10-11T17:28:54.3949263+08:00"},{"id":677,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"d6ab1f208fb77fbc9859cad2aa6bb1ed","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/service/jd_cookie.go","gmt_create":"2025-10-11T17:28:54.4010325+08:00","gmt_modified":"2025-10-11T17:28:54.4010325+08:00"},{"id":678,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"7edb6bdca57d6bc188cd5b2bbbc4a138","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/logic/jd_cookie/order.go#50-130","gmt_create":"2025-10-11T17:28:54.4114199+08:00","gmt_modified":"2025-10-11T17:28:54.4114199+08:00"},{"id":679,"source_id":"edd8bea5c8f9373cd0b4de186914479e","target_id":"7edb6bdca57d6bc188cd5b2bbbc4a138","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 50-130","gmt_create":"2025-10-11T17:28:54.418733+08:00","gmt_modified":"2025-10-11T17:28:54.418733+08:00"},{"id":680,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"2deccc6412aa3a542406ea4123dbd7e6","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/consts/jd_cookie.go#150-160","gmt_create":"2025-10-11T17:28:54.4272672+08:00","gmt_modified":"2025-10-11T17:28:54.4272672+08:00"},{"id":681,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"5266c40167bf3310e85d510942a06173","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/logic/jd_cookie/order.go#450-490","gmt_create":"2025-10-11T17:28:54.435675+08:00","gmt_modified":"2025-10-11T17:28:54.435675+08:00"},{"id":682,"source_id":"edd8bea5c8f9373cd0b4de186914479e","target_id":"5266c40167bf3310e85d510942a06173","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 450-490","gmt_create":"2025-10-11T17:28:54.4407818+08:00","gmt_modified":"2025-10-11T17:28:54.4407818+08:00"},{"id":683,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"03c5c54ee07952069215a22a208842f4","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/integration/originalJd/model.go","gmt_create":"2025-10-11T17:28:54.4510873+08:00","gmt_modified":"2025-10-11T17:28:54.4510873+08:00"},{"id":684,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"782300bf902736466e525e642592486f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/integration/originalJd/model.go#136-143","gmt_create":"2025-10-11T17:28:54.4573714+08:00","gmt_modified":"2025-10-11T17:28:54.4573714+08:00"},{"id":685,"source_id":"03c5c54ee07952069215a22a208842f4","target_id":"782300bf902736466e525e642592486f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 136-143","gmt_create":"2025-10-11T17:28:54.4668131+08:00","gmt_modified":"2025-10-11T17:28:54.4668131+08:00"},{"id":686,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"77aff4289e7b60617a6b97873721f586af264581","source_type":"WIKI_ITEM","target_type":"COMMIT","relationship_type":"GENERATED_IN","extra":"Wiki generated in commit: 77aff4289e7b60617a6b97873721f586af264581","gmt_create":"2025-10-11T17:28:54.4748462+08:00","gmt_modified":"2025-10-11T17:28:54.4748462+08:00"},{"id":687,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"0fdae6a89fef78f6368400b1fe726d987adda7b1","source_type":"WIKI_ITEM","target_type":"COMMIT","relationship_type":"GENERATED_IN","extra":"Wiki generated in commit: 0fdae6a89fef78f6368400b1fe726d987adda7b1","gmt_create":"2025-10-11T17:28:54.483156+08:00","gmt_modified":"2025-10-11T17:28:54.483156+08:00"},{"id":688,"source_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","target_id":"d002a301044bef263b2a95b977c75925","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/verify/aes_ecb.go","gmt_create":"2025-10-11T17:28:55.4950525+08:00","gmt_modified":"2025-10-11T17:28:55.4950525+08:00"},{"id":689,"source_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","target_id":"72755b8cc621f2d563a4a5ee5222529b","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/verify/md5.go","gmt_create":"2025-10-11T17:28:55.5030168+08:00","gmt_modified":"2025-10-11T17:28:55.5030168+08:00"},{"id":690,"source_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","target_id":"91b0ce4e15bd2ec12a8c8f87efd69254","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/config/config.go","gmt_create":"2025-10-11T17:28:55.5111764+08:00","gmt_modified":"2025-10-11T17:28:55.5111764+08:00"},{"id":691,"source_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","target_id":"c6ee44f200688a3a1f009e9a166d6481","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: utility/utils/tools.go","gmt_create":"2025-10-11T17:28:55.5190493+08:00","gmt_modified":"2025-10-11T17:28:55.5190493+08:00"},{"id":692,"source_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","target_id":"674428c72460e01521574ca280c115f4","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/model/sys_user.go","gmt_create":"2025-10-11T17:28:55.5260133+08:00","gmt_modified":"2025-10-11T17:28:55.5260133+08:00"},{"id":693,"source_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","target_id":"7fa23727ee8e479ba4e92dc3eed84908","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/systemV2/logic/user_center/user_center.go","gmt_create":"2025-10-11T17:28:55.5354088+08:00","gmt_modified":"2025-10-11T17:28:55.5354088+08:00"},{"id":694,"source_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","target_id":"469f62d9db11e2c4fb3697ae2e85f81a","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: internal/dao/internal/v_1_sys_user.go","gmt_create":"2025-10-11T17:28:55.5425168+08:00","gmt_modified":"2025-10-11T17:28:55.5425168+08:00"},{"id":695,"source_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","target_id":"c240c13752c53bbb87d71a8654be71ea","source_type":"WIKI_ITEM","target_type":"SOURCE_FILE","relationship_type":"REFERENCED_BY","extra":"Wiki references source file: JD_COOKIE_REFACTOR_REPORT.md","gmt_create":"2025-10-11T17:28:55.5505664+08:00","gmt_modified":"2025-10-11T17:28:55.5505664+08:00"},{"id":696,"source_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","target_id":"47824ef49939140f82365cb3d0eb0cc1","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/verify/aes_ecb.go#1-90","gmt_create":"2025-10-11T17:28:55.559542+08:00","gmt_modified":"2025-10-11T17:28:55.559542+08:00"},{"id":697,"source_id":"d002a301044bef263b2a95b977c75925","target_id":"47824ef49939140f82365cb3d0eb0cc1","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-90","gmt_create":"2025-10-11T17:28:55.5669485+08:00","gmt_modified":"2025-10-11T17:28:55.5669485+08:00"},{"id":698,"source_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","target_id":"cd5e2b6c3c51650146b62ae6dc8f5ad7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/verify/md5.go#1-31","gmt_create":"2025-10-11T17:28:55.5753468+08:00","gmt_modified":"2025-10-11T17:28:55.5753468+08:00"},{"id":699,"source_id":"72755b8cc621f2d563a4a5ee5222529b","target_id":"cd5e2b6c3c51650146b62ae6dc8f5ad7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-31","gmt_create":"2025-10-11T17:28:55.5846287+08:00","gmt_modified":"2025-10-11T17:28:55.5846287+08:00"},{"id":700,"source_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","target_id":"767b677153edb86515b77286476ce79b","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/utils/tools.go#1-25","gmt_create":"2025-10-11T17:28:55.5937583+08:00","gmt_modified":"2025-10-11T17:28:55.5937583+08:00"},{"id":701,"source_id":"c6ee44f200688a3a1f009e9a166d6481","target_id":"767b677153edb86515b77286476ce79b","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-25","gmt_create":"2025-10-11T17:28:55.6030341+08:00","gmt_modified":"2025-10-11T17:28:55.6030341+08:00"},{"id":702,"source_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","target_id":"fea30ea749579359c4f54de16878cf4f","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/verify/aes_ecb.go#15-85","gmt_create":"2025-10-11T17:28:55.6128942+08:00","gmt_modified":"2025-10-11T17:28:55.6128942+08:00"},{"id":703,"source_id":"d002a301044bef263b2a95b977c75925","target_id":"fea30ea749579359c4f54de16878cf4f","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 15-85","gmt_create":"2025-10-11T17:28:55.6199052+08:00","gmt_modified":"2025-10-11T17:28:55.6199052+08:00"},{"id":704,"source_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","target_id":"ef1e0649738859b4447918324f2572d9","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/utils/tools.go#22-24","gmt_create":"2025-10-11T17:28:55.6294848+08:00","gmt_modified":"2025-10-11T17:28:55.6294848+08:00"},{"id":705,"source_id":"c6ee44f200688a3a1f009e9a166d6481","target_id":"ef1e0649738859b4447918324f2572d9","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 22-24","gmt_create":"2025-10-11T17:28:55.6368984+08:00","gmt_modified":"2025-10-11T17:28:55.6368984+08:00"},{"id":706,"source_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","target_id":"0383311e02468d4e918e6065aa543159","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/dao/internal/v_1_sys_user.go#37-81","gmt_create":"2025-10-11T17:28:55.6463924+08:00","gmt_modified":"2025-10-11T17:28:55.6463924+08:00"},{"id":707,"source_id":"469f62d9db11e2c4fb3697ae2e85f81a","target_id":"0383311e02468d4e918e6065aa543159","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 37-81","gmt_create":"2025-10-11T17:28:55.6543348+08:00","gmt_modified":"2025-10-11T17:28:55.6543348+08:00"},{"id":708,"source_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","target_id":"3b0d083ad6e1e42c3cadee5c77b796a0","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: internal/model/sys_user.go#0-91","gmt_create":"2025-10-11T17:28:55.6635188+08:00","gmt_modified":"2025-10-11T17:28:55.6635188+08:00"},{"id":709,"source_id":"674428c72460e01521574ca280c115f4","target_id":"3b0d083ad6e1e42c3cadee5c77b796a0","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 0-91","gmt_create":"2025-10-11T17:28:55.6716525+08:00","gmt_modified":"2025-10-11T17:28:55.6716525+08:00"},{"id":710,"source_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","target_id":"35ff891033d9d93c8fa7614ad2fce15d","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: JD_COOKIE_REFACTOR_REPORT.md#1-167","gmt_create":"2025-10-11T17:28:55.6841255+08:00","gmt_modified":"2025-10-11T17:28:55.6841255+08:00"},{"id":711,"source_id":"c240c13752c53bbb87d71a8654be71ea","target_id":"35ff891033d9d93c8fa7614ad2fce15d","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 1-167","gmt_create":"2025-10-11T17:28:55.6906229+08:00","gmt_modified":"2025-10-11T17:28:55.6906229+08:00"},{"id":712,"source_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","target_id":"8f77a4f0854077c3774992dffc7b67b7","source_type":"WIKI_ITEM","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Wiki contains code snippet: utility/config/config.go#15-35","gmt_create":"2025-10-11T17:28:55.6980033+08:00","gmt_modified":"2025-10-11T17:28:55.6980033+08:00"},{"id":713,"source_id":"91b0ce4e15bd2ec12a8c8f87efd69254","target_id":"8f77a4f0854077c3774992dffc7b67b7","source_type":"SOURCE_FILE","target_type":"CODE_SNIPPET","relationship_type":"CONTAINS","extra":"Source file contains code snippet: 15-35","gmt_create":"2025-10-11T17:28:55.7062337+08:00","gmt_modified":"2025-10-11T17:28:55.7062337+08:00"},{"id":714,"source_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","target_id":"f029eb7d6cfc4e70657225da8d0f4d90071071e4","source_type":"WIKI_ITEM","target_type":"COMMIT","relationship_type":"GENERATED_IN","extra":"Wiki generated in commit: f029eb7d6cfc4e70657225da8d0f4d90071071e4","gmt_create":"2025-10-11T17:28:55.7151922+08:00","gmt_modified":"2025-10-11T17:28:55.7151922+08:00"},{"id":715,"source_id":"743dffa6-cd2e-413c-8747-415bb3c039fc","target_id":"77aff4289e7b60617a6b97873721f586af264581","source_type":"WIKI_ITEM","target_type":"COMMIT","relationship_type":"GENERATED_IN","extra":"Wiki generated in commit: 77aff4289e7b60617a6b97873721f586af264581","gmt_create":"2025-10-11T17:31:20.5415956+08:00","gmt_modified":"2025-10-11T17:31:20.5415956+08:00"},{"id":716,"source_id":"743dffa6-cd2e-413c-8747-415bb3c039fc","target_id":"0fdae6a89fef78f6368400b1fe726d987adda7b1","source_type":"WIKI_ITEM","target_type":"COMMIT","relationship_type":"GENERATED_IN","extra":"Wiki generated in commit: 0fdae6a89fef78f6368400b1fe726d987adda7b1","gmt_create":"2025-10-11T17:31:20.5491323+08:00","gmt_modified":"2025-10-11T17:31:20.5491323+08:00"},{"id":717,"source_id":"743dffa6-cd2e-413c-8747-415bb3c039fc","target_id":"f029eb7d6cfc4e70657225da8d0f4d90071071e4","source_type":"WIKI_ITEM","target_type":"COMMIT","relationship_type":"GENERATED_IN","extra":"Wiki generated in commit: f029eb7d6cfc4e70657225da8d0f4d90071071e4","gmt_create":"2025-10-11T17:31:20.5575336+08:00","gmt_modified":"2025-10-11T17:31:20.5575336+08:00"},{"id":718,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"e4fe353d-cefc-4899-9e57-39fc9f112127","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 5ff3fb8f-241e-4d7b-a9f7-3f265eda053f -\u003e e4fe353d-cefc-4899-9e57-39fc9f112127","gmt_create":"2025-10-11T17:31:20.6973995+08:00","gmt_modified":"2025-10-11T17:31:20.6973995+08:00"},{"id":719,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"f42a4fa0-61ee-471d-b8f0-9dfa22159b7c","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 5ff3fb8f-241e-4d7b-a9f7-3f265eda053f -\u003e f42a4fa0-61ee-471d-b8f0-9dfa22159b7c","gmt_create":"2025-10-11T17:31:20.7055047+08:00","gmt_modified":"2025-10-11T17:31:20.7055047+08:00"},{"id":720,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"06c4893c-d2e9-4b61-a99e-f66a1d2cdfc9","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 5ff3fb8f-241e-4d7b-a9f7-3f265eda053f -\u003e 06c4893c-d2e9-4b61-a99e-f66a1d2cdfc9","gmt_create":"2025-10-11T17:31:20.7133031+08:00","gmt_modified":"2025-10-11T17:31:20.7133031+08:00"},{"id":721,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"399f12e9-6620-446c-9e02-808c39c61bba","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 5ff3fb8f-241e-4d7b-a9f7-3f265eda053f -\u003e 399f12e9-6620-446c-9e02-808c39c61bba","gmt_create":"2025-10-11T17:31:20.7215006+08:00","gmt_modified":"2025-10-11T17:31:20.7215006+08:00"},{"id":722,"source_id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","target_id":"d106423b-19ad-4e22-8a4a-567e2ff27e36","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 5ff3fb8f-241e-4d7b-a9f7-3f265eda053f -\u003e d106423b-19ad-4e22-8a4a-567e2ff27e36","gmt_create":"2025-10-11T17:31:20.7294069+08:00","gmt_modified":"2025-10-11T17:31:20.7294069+08:00"},{"id":723,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"33150d2c-ac78-4784-a31b-e9d342cc880c","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: caeb482b-4671-4692-98b5-948f768bcf2d -\u003e 33150d2c-ac78-4784-a31b-e9d342cc880c","gmt_create":"2025-10-11T17:31:20.7373522+08:00","gmt_modified":"2025-10-11T17:31:20.7373522+08:00"},{"id":724,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: caeb482b-4671-4692-98b5-948f768bcf2d -\u003e 2ab1acd9-0488-4f69-a292-63359e8a485a","gmt_create":"2025-10-11T17:31:20.7431444+08:00","gmt_modified":"2025-10-11T17:31:20.7431444+08:00"},{"id":725,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"c46f3f6b-d36e-48a1-84b7-1e14cb598119","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: caeb482b-4671-4692-98b5-948f768bcf2d -\u003e c46f3f6b-d36e-48a1-84b7-1e14cb598119","gmt_create":"2025-10-11T17:31:20.7514305+08:00","gmt_modified":"2025-10-11T17:31:20.7514305+08:00"},{"id":726,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"077abc2a-81e5-4e9c-9a72-757f4765021c","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: caeb482b-4671-4692-98b5-948f768bcf2d -\u003e 077abc2a-81e5-4e9c-9a72-757f4765021c","gmt_create":"2025-10-11T17:31:20.7593351+08:00","gmt_modified":"2025-10-11T17:31:20.7593351+08:00"},{"id":727,"source_id":"caeb482b-4671-4692-98b5-948f768bcf2d","target_id":"ab420b44-4f24-4bc3-a44c-bc68b0868ab8","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: caeb482b-4671-4692-98b5-948f768bcf2d -\u003e ab420b44-4f24-4bc3-a44c-bc68b0868ab8","gmt_create":"2025-10-11T17:31:20.7673162+08:00","gmt_modified":"2025-10-11T17:31:20.7673162+08:00"},{"id":728,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"b64a6df1-5797-4877-8b53-29fc0fdad59d","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 32329179-a4a2-47e2-83dd-1a93c046af96 -\u003e b64a6df1-5797-4877-8b53-29fc0fdad59d","gmt_create":"2025-10-11T17:31:20.7752126+08:00","gmt_modified":"2025-10-11T17:31:20.7752126+08:00"},{"id":729,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"f071af41-6de4-4751-8a76-5e5d5d0c02df","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 32329179-a4a2-47e2-83dd-1a93c046af96 -\u003e f071af41-6de4-4751-8a76-5e5d5d0c02df","gmt_create":"2025-10-11T17:31:20.7830952+08:00","gmt_modified":"2025-10-11T17:31:20.7830952+08:00"},{"id":730,"source_id":"32329179-a4a2-47e2-83dd-1a93c046af96","target_id":"d5e98815-ab00-4c12-8402-2fbc852d8dbd","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 32329179-a4a2-47e2-83dd-1a93c046af96 -\u003e d5e98815-ab00-4c12-8402-2fbc852d8dbd","gmt_create":"2025-10-11T17:31:20.7895452+08:00","gmt_modified":"2025-10-11T17:31:20.7895452+08:00"},{"id":731,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"bb84a187-9957-4c61-82b0-b8997f3b306a","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 8987b1d6-99e5-4387-8d3c-60e739a30e20 -\u003e bb84a187-9957-4c61-82b0-b8997f3b306a","gmt_create":"2025-10-11T17:31:20.7969847+08:00","gmt_modified":"2025-10-11T17:31:20.7969847+08:00"},{"id":732,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"b52b76ee-90db-4464-bb9d-431b10755e6e","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 8987b1d6-99e5-4387-8d3c-60e739a30e20 -\u003e b52b76ee-90db-4464-bb9d-431b10755e6e","gmt_create":"2025-10-11T17:31:20.8054098+08:00","gmt_modified":"2025-10-11T17:31:20.8054098+08:00"},{"id":733,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 8987b1d6-99e5-4387-8d3c-60e739a30e20 -\u003e 9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","gmt_create":"2025-10-11T17:31:20.8133722+08:00","gmt_modified":"2025-10-11T17:31:20.8133722+08:00"},{"id":734,"source_id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","target_id":"d15e79da-d03f-46a7-9939-d486c82bdd9e","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 8987b1d6-99e5-4387-8d3c-60e739a30e20 -\u003e d15e79da-d03f-46a7-9939-d486c82bdd9e","gmt_create":"2025-10-11T17:31:20.8212966+08:00","gmt_modified":"2025-10-11T17:31:20.8212966+08:00"},{"id":735,"source_id":"b64a6df1-5797-4877-8b53-29fc0fdad59d","target_id":"477c9fd9-139a-43fe-87ae-8d64529bbf2c","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: b64a6df1-5797-4877-8b53-29fc0fdad59d -\u003e 477c9fd9-139a-43fe-87ae-8d64529bbf2c","gmt_create":"2025-10-11T17:31:20.8328231+08:00","gmt_modified":"2025-10-11T17:31:20.8328231+08:00"},{"id":736,"source_id":"b64a6df1-5797-4877-8b53-29fc0fdad59d","target_id":"4c9682c6-1065-4e84-8b74-f2fdd80c62f4","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: b64a6df1-5797-4877-8b53-29fc0fdad59d -\u003e 4c9682c6-1065-4e84-8b74-f2fdd80c62f4","gmt_create":"2025-10-11T17:31:20.8433361+08:00","gmt_modified":"2025-10-11T17:31:20.8433361+08:00"},{"id":737,"source_id":"b64a6df1-5797-4877-8b53-29fc0fdad59d","target_id":"a6a1a0f2-4a40-46ed-a2fa-abeaf60eea55","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: b64a6df1-5797-4877-8b53-29fc0fdad59d -\u003e a6a1a0f2-4a40-46ed-a2fa-abeaf60eea55","gmt_create":"2025-10-11T17:31:20.8512845+08:00","gmt_modified":"2025-10-11T17:31:20.8512845+08:00"},{"id":738,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"753b0096-e6c4-42d1-aba0-93c8df17fdc9","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 2ab1acd9-0488-4f69-a292-63359e8a485a -\u003e 753b0096-e6c4-42d1-aba0-93c8df17fdc9","gmt_create":"2025-10-11T17:31:20.8602036+08:00","gmt_modified":"2025-10-11T17:31:20.8602036+08:00"},{"id":739,"source_id":"2ab1acd9-0488-4f69-a292-63359e8a485a","target_id":"080fba3c-3cca-40b8-b913-c5cf213a36f9","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: 2ab1acd9-0488-4f69-a292-63359e8a485a -\u003e 080fba3c-3cca-40b8-b913-c5cf213a36f9","gmt_create":"2025-10-11T17:31:20.8681502+08:00","gmt_modified":"2025-10-11T17:31:20.8681502+08:00"},{"id":740,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"61e64814-3402-4560-ac80-de2897628585","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: ba1c4880-8600-4564-afa6-175208ea101b -\u003e 61e64814-3402-4560-ac80-de2897628585","gmt_create":"2025-10-11T17:31:20.8786583+08:00","gmt_modified":"2025-10-11T17:31:20.8786583+08:00"},{"id":741,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"353ff7c7-0ce0-4cc3-a0aa-1d724d7c2190","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: ba1c4880-8600-4564-afa6-175208ea101b -\u003e 353ff7c7-0ce0-4cc3-a0aa-1d724d7c2190","gmt_create":"2025-10-11T17:31:20.888694+08:00","gmt_modified":"2025-10-11T17:31:20.888694+08:00"},{"id":742,"source_id":"ba1c4880-8600-4564-afa6-175208ea101b","target_id":"04861c55-7eb4-4fb8-9367-ea7653e898c2","source_type":"WIKI_ITEM","target_type":"WIKI_ITEM","relationship_type":"PARENT_CHILD","extra":"Wiki parent-child relationship: ba1c4880-8600-4564-afa6-175208ea101b -\u003e 04861c55-7eb4-4fb8-9367-ea7653e898c2","gmt_create":"2025-10-11T17:31:20.8963274+08:00","gmt_modified":"2025-10-11T17:31:20.8963274+08:00"}],"source_files":[{"id":"a3b7521789787cc4db7608d02c5e95f4","path":"internal/middleware/auth.go","filename":"auth.go","gmt_create":"2025-10-11T17:24:20.5987703+08:00","gmt_modified":"2025-10-11T17:24:20.5987703+08:00"},{"id":"eb8338fb24a00daa3a4838bbc0ab1393","path":"internal/middleware/error_handler.go","filename":"error_handler.go","gmt_create":"2025-10-11T17:24:20.6050039+08:00","gmt_modified":"2025-10-11T17:24:20.6050039+08:00"},{"id":"c23df18489eaaeec8a340de242b77b44","path":"utility/token/user_token.go","filename":"user_token.go","gmt_create":"2025-10-11T17:24:20.6104246+08:00","gmt_modified":"2025-10-11T17:24:20.6104246+08:00"},{"id":"91b0ce4e15bd2ec12a8c8f87efd69254","path":"utility/config/config.go","filename":"config.go","gmt_create":"2025-10-11T17:24:20.6167875+08:00","gmt_modified":"2025-10-11T17:24:20.6167875+08:00"},{"id":"a2cc9e42068f81d57e6658912bec50c7","path":"internal/errHandler/code.go","filename":"code.go","gmt_create":"2025-10-11T17:24:20.623178+08:00","gmt_modified":"2025-10-11T17:24:20.623178+08:00"},{"id":"0f583231f0ca6eb6bdc0cd3104f97d42","path":"/main.go","filename":"main.go","gmt_create":"2025-10-11T17:24:50.1586215+08:00","gmt_modified":"2025-10-11T17:24:50.1586215+08:00"},{"id":"b6012388f040de469b7ec2244cf9d3bf","path":"/internal/logic/logic.go","filename":"logic.go","gmt_create":"2025-10-11T17:24:50.1648577+08:00","gmt_modified":"2025-10-11T17:24:50.1648577+08:00"},{"id":"40a0c2b01b15ceae41bdd421874c199e","path":"/internal/service/sys_user.go","filename":"sys_user.go","gmt_create":"2025-10-11T17:24:50.1710768+08:00","gmt_modified":"2025-10-11T17:24:50.1710768+08:00"},{"id":"9592a0fc953a2595f709cd0c67c70a06","path":"/internal/dao/v_1_sys_user.go","filename":"v_1_sys_user.go","gmt_create":"2025-10-11T17:24:50.1767003+08:00","gmt_modified":"2025-10-11T17:24:50.1767003+08:00"},{"id":"56c658d00971d4697ee90a4fd6912832","path":"/internal/model/sys_user.go","filename":"sys_user.go","gmt_create":"2025-10-11T17:24:50.1830158+08:00","gmt_modified":"2025-10-11T17:24:50.1830158+08:00"},{"id":"219fe92fb80e3fa8bd7e4080d15e457a","path":"/internal/logic/sys_user/sys_user.go","filename":"sys_user.go","gmt_create":"2025-10-11T17:24:50.1888847+08:00","gmt_modified":"2025-10-11T17:24:50.1888847+08:00"},{"id":"0f0ab37127003f1af1d234709f1d3198","path":"/internal/logic/card_apple_order/order.go","filename":"order.go","gmt_create":"2025-10-11T17:24:50.194657+08:00","gmt_modified":"2025-10-11T17:24:50.194657+08:00"},{"id":"0de0fc73ea1c0c78e2d71d04a0a94411","path":"/internal/logic/card_redeem_order/order.go","filename":"order.go","gmt_create":"2025-10-11T17:24:50.1998821+08:00","gmt_modified":"2025-10-11T17:24:50.1998821+08:00"},{"id":"1ffd22848808f089677c2ddc482a954a","path":"/internal/logic/merchant_order/order.go","filename":"order.go","gmt_create":"2025-10-11T17:24:50.2056612+08:00","gmt_modified":"2025-10-11T17:24:50.2056612+08:00"},{"id":"e5ef83e4ccff2f66a4eb56f3b2096bf0","path":"/internal/logic/restriction/restriction.go","filename":"restriction.go","gmt_create":"2025-10-11T17:24:50.2119468+08:00","gmt_modified":"2025-10-11T17:24:50.2119468+08:00"},{"id":"d341b69869e9863f8bd7ed7614572d1c","path":"/internal/logic/card_t_mall_order/order.go","filename":"order.go","gmt_create":"2025-10-11T17:24:50.217652+08:00","gmt_modified":"2025-10-11T17:24:50.217652+08:00"},{"id":"fb94b419b6c25749805b970980a051ae","path":"/internal/service/card_apple_order.go","filename":"card_apple_order.go","gmt_create":"2025-10-11T17:24:50.2235751+08:00","gmt_modified":"2025-10-11T17:24:50.2235751+08:00"},{"id":"fa2076592876f7f4387e9050085ba9b5","path":"/internal/service/card_redeem_order.go","filename":"card_redeem_order.go","gmt_create":"2025-10-11T17:24:50.229744+08:00","gmt_modified":"2025-10-11T17:24:50.229744+08:00"},{"id":"ce93596b3c315be9ad061ed78b9b4a16","path":"/internal/service/merchant_order.go","filename":"merchant_order.go","gmt_create":"2025-10-11T17:24:50.2355852+08:00","gmt_modified":"2025-10-11T17:24:50.2355852+08:00"},{"id":"1ede9ed0ed4e2fea117f1f0ee3228874","path":"/internal/service/restriction.go","filename":"restriction.go","gmt_create":"2025-10-11T17:24:50.2415871+08:00","gmt_modified":"2025-10-11T17:24:50.2415871+08:00"},{"id":"c22d8bb47932b7530c368ff1de72e79a","path":"/internal/service/card_t_mall_order.go","filename":"card_t_mall_order.go","gmt_create":"2025-10-11T17:24:50.2469537+08:00","gmt_modified":"2025-10-11T17:24:50.2469537+08:00"},{"id":"79ad87595e6f3cccf7d1df8561c8667d","path":"/manifest/config/config.yaml","filename":"config.yaml","gmt_create":"2025-10-11T17:24:50.2527729+08:00","gmt_modified":"2025-10-11T17:24:50.2527729+08:00"},{"id":"348a584cbaee62585af0b8f576760382","path":"/internal/logic/jd_cookie/order.go","filename":"order.go","gmt_create":"2025-10-11T17:24:50.2597967+08:00","gmt_modified":"2025-10-11T17:24:50.2597967+08:00"},{"id":"9fbcfcc5b312f6ea4b7a2f526f4fc0c4","path":"/internal/service/jd_cookie.go","filename":"jd_cookie.go","gmt_create":"2025-10-11T17:24:50.2655952+08:00","gmt_modified":"2025-10-11T17:24:50.2655952+08:00"},{"id":"94aa282e4a22f85674f3004894e95b12","path":"internal/model/entity/v_1_account_info.go","filename":"v_1_account_info.go","gmt_create":"2025-10-11T17:25:02.7041215+08:00","gmt_modified":"2025-10-11T17:25:02.7041215+08:00"},{"id":"3695f0446f58c552ec036968b720c585","path":"internal/model/entity/v_1_order_info.go","filename":"v_1_order_info.go","gmt_create":"2025-10-11T17:25:02.711851+08:00","gmt_modified":"2025-10-11T17:25:02.711851+08:00"},{"id":"297412eae542d50411094ce29ff6e9b3","path":"internal/model/entity/v_1_card_apple_recharge_info.go","filename":"v_1_card_apple_recharge_info.go","gmt_create":"2025-10-11T17:25:02.7192375+08:00","gmt_modified":"2025-10-11T17:25:02.7192375+08:00"},{"id":"4f2117fd41858c8f1f05e73af0c4d045","path":"internal/model/entity/v_1_jd_cookie_account.go","filename":"v_1_jd_cookie_account.go","gmt_create":"2025-10-11T17:25:02.7254801+08:00","gmt_modified":"2025-10-11T17:25:02.7254801+08:00"},{"id":"10b4b7e7bda705f2473233626534db93","path":"internal/model/entity/v_1_jd_cookie_jd_order.go","filename":"v_1_jd_cookie_jd_order.go","gmt_create":"2025-10-11T17:25:02.7330903+08:00","gmt_modified":"2025-10-11T17:25:02.7330903+08:00"},{"id":"251c480af7207ec9635af57c9bc50f04","path":"internal/model/entity/v_1_jd_cookie_order.go","filename":"v_1_jd_cookie_order.go","gmt_create":"2025-10-11T17:25:02.7402961+08:00","gmt_modified":"2025-10-11T17:25:02.7402961+08:00"},{"id":"24b833965d28e1470eacd7df237acdb4","path":"internal/dao/v_1_account_info.go","filename":"v_1_account_info.go","gmt_create":"2025-10-11T17:25:02.7479083+08:00","gmt_modified":"2025-10-11T17:25:02.7479083+08:00"},{"id":"035d413d594bd8cd49b625ad3200b11c","path":"internal/dao/v_1_order_info.go","filename":"v_1_order_info.go","gmt_create":"2025-10-11T17:25:02.7563919+08:00","gmt_modified":"2025-10-11T17:25:02.7563919+08:00"},{"id":"9ea71fe3dd3d7290fd60892723bb7ee8","path":"internal/dao/v_1_card_apple_recharge_info.go","filename":"v_1_card_apple_recharge_info.go","gmt_create":"2025-10-11T17:25:02.764186+08:00","gmt_modified":"2025-10-11T17:25:02.764186+08:00"},{"id":"8d29c379353db1d02b0dbd096eb8a47d","path":"internal/dao/v_1_jd_cookie_account.go","filename":"v_1_jd_cookie_account.go","gmt_create":"2025-10-11T17:25:02.771116+08:00","gmt_modified":"2025-10-11T17:25:02.771116+08:00"},{"id":"319d5ee6b3c76bed0110a972df7470d8","path":"internal/dao/v_1_jd_cookie_jd_order.go","filename":"v_1_jd_cookie_jd_order.go","gmt_create":"2025-10-11T17:25:02.7794237+08:00","gmt_modified":"2025-10-11T17:25:02.7794237+08:00"},{"id":"81cfcd51a2f0449da14f3d4052765c08","path":"internal/dao/v_1_jd_cookie_order.go","filename":"v_1_jd_cookie_order.go","gmt_create":"2025-10-11T17:25:02.7868332+08:00","gmt_modified":"2025-10-11T17:25:02.7868332+08:00"},{"id":"48b3a3cd9e9db7485c82648a8f9c69dc","path":"internal/controller/merchant/merchant_v1_merchant_config_add.go","filename":"merchant_v1_merchant_config_add.go","gmt_create":"2025-10-11T17:25:02.7956437+08:00","gmt_modified":"2025-10-11T17:25:02.7956437+08:00"},{"id":"9909bbb8255b96a053563e9f3afd6e52","path":"internal/logic/account/account.go","filename":"account.go","gmt_create":"2025-10-11T17:25:02.8031296+08:00","gmt_modified":"2025-10-11T17:25:02.8031296+08:00"},{"id":"c80482f4470a8e3dd050e61ff9bd3738","path":"internal/logic/merchant_order/order.go","filename":"order.go","gmt_create":"2025-10-11T17:25:02.8119086+08:00","gmt_modified":"2025-10-11T17:25:02.8119086+08:00"},{"id":"92c36754f0dbd99fed9aa1523374158d","path":"internal/logic/card_apple_order/order.go","filename":"order.go","gmt_create":"2025-10-11T17:25:02.8199256+08:00","gmt_modified":"2025-10-11T17:25:02.8199256+08:00"},{"id":"cbe32a6c2d1cadcc72019566cad819b6","path":"internal/logic/card_apple_order/status.go","filename":"status.go","gmt_create":"2025-10-11T17:25:02.8299565+08:00","gmt_modified":"2025-10-11T17:25:02.8299565+08:00"},{"id":"987fc36e572014bb0a7c02bc015c9fa2","path":"internal/logic/card_apple_order/recharge_history.go","filename":"recharge_history.go","gmt_create":"2025-10-11T17:25:02.8383115+08:00","gmt_modified":"2025-10-11T17:25:02.8383115+08:00"},{"id":"39c6a811a6208e20dc5b28becf3a2cbe","path":"internal/logic/card_apple_order/steal_relation.go","filename":"steal_relation.go","gmt_create":"2025-10-11T17:25:02.8457585+08:00","gmt_modified":"2025-10-11T17:25:02.8457585+08:00"},{"id":"fe83d023754ae2aedb7c68ac0f3dcf31","path":"internal/logic/jd_cookie/account.go","filename":"account.go","gmt_create":"2025-10-11T17:25:02.8538033+08:00","gmt_modified":"2025-10-11T17:25:02.8538033+08:00"},{"id":"edd8bea5c8f9373cd0b4de186914479e","path":"internal/logic/jd_cookie/order.go","filename":"order.go","gmt_create":"2025-10-11T17:25:02.8633274+08:00","gmt_modified":"2025-10-11T17:25:02.8633274+08:00"},{"id":"961047bec51802fc7855502acf4bbc07","path":"internal/logic/jd_cookie/rotation.go","filename":"rotation.go","gmt_create":"2025-10-11T17:25:02.8702862+08:00","gmt_modified":"2025-10-11T17:25:02.8702862+08:00"},{"id":"2038419d1bd760f2988ff05f35af3e92","path":"internal/model/do/v_1_account_info.go","filename":"v_1_account_info.go","gmt_create":"2025-10-11T17:25:02.9449392+08:00","gmt_modified":"2025-10-11T17:25:02.9449392+08:00"},{"id":"6949b603968e204a80d7e6e337496f12","path":"internal/cmd/cmd.go","filename":"cmd.go","gmt_create":"2025-10-11T17:25:57.9148346+08:00","gmt_modified":"2025-10-11T17:25:57.9148346+08:00"},{"id":"cd47a7c1fd3185ff279cca4dd4a1cd9d","path":"api/monitor/monitor.go","filename":"monitor.go","gmt_create":"2025-10-11T17:25:57.9219053+08:00","gmt_modified":"2025-10-11T17:25:57.9219053+08:00"},{"id":"2a00f83021031103c438a59751eee183","path":"api/monitor/v1/heathcheck.go","filename":"heathcheck.go","gmt_create":"2025-10-11T17:25:57.9288533+08:00","gmt_modified":"2025-10-11T17:25:57.9288533+08:00"},{"id":"d9ed9131ddb364556f43b561d041ddd5","path":"internal/controller/monitor/monitor.go","filename":"monitor.go","gmt_create":"2025-10-11T17:25:57.934916+08:00","gmt_modified":"2025-10-11T17:25:57.934916+08:00"},{"id":"eddf871859d423ace01da9a74db6db86","path":"internal/controller/monitor/monitor_new.go","filename":"monitor_new.go","gmt_create":"2025-10-11T17:25:57.9408886+08:00","gmt_modified":"2025-10-11T17:25:57.9408886+08:00"},{"id":"50111ae80e6ac600d65fbd7b34df3d03","path":"internal/controller/monitor/monitor_v1_health_check.go","filename":"monitor_v1_health_check.go","gmt_create":"2025-10-11T17:25:57.94796+08:00","gmt_modified":"2025-10-11T17:25:57.94796+08:00"},{"id":"5824f93b650d7a0b6fb8c1a016077461","path":"utility/otel/config.go","filename":"config.go","gmt_create":"2025-10-11T17:25:57.9537907+08:00","gmt_modified":"2025-10-11T17:25:57.9537907+08:00"},{"id":"11df2c532cb96a0d8e041af4ea176204","path":"utility/otel/manager.go","filename":"manager.go","gmt_create":"2025-10-11T17:25:57.961007+08:00","gmt_modified":"2025-10-11T17:25:57.961007+08:00"},{"id":"b0dcfa2b0067be5ec2e3f00ad722ed85","path":"utility/otel/handler.go","filename":"handler.go","gmt_create":"2025-10-11T17:25:57.9667821+08:00","gmt_modified":"2025-10-11T17:25:57.9667821+08:00"},{"id":"70f39d04b38fd3c3c76da74b7b0ed20b","path":"utility/otel/utils.go","filename":"utils.go","gmt_create":"2025-10-11T17:25:57.9730839+08:00","gmt_modified":"2025-10-11T17:25:57.9730839+08:00"},{"id":"b896e4b9529b9c35c2662cf25560c5cd","path":"utility/monitor/monitor.go","filename":"monitor.go","gmt_create":"2025-10-11T17:25:57.9831191+08:00","gmt_modified":"2025-10-11T17:25:57.9831191+08:00"},{"id":"ce051f6cc8a25a53dcd349ccf066f90b","path":"internal/controller/card_info_apple/apple_card_info_v1_recharge_list_download_test.go","filename":"apple_card_info_v1_recharge_list_download_test.go","gmt_create":"2025-10-11T17:26:03.771789+08:00","gmt_modified":"2025-10-11T17:26:03.771789+08:00"},{"id":"315cb5ac67c46c359e9c8f8aecd320da","path":"internal/controller/restriction/restriction_v1_user_info_collection_test.go","filename":"restriction_v1_user_info_collection_test.go","gmt_create":"2025-10-11T17:26:03.780096+08:00","gmt_modified":"2025-10-11T17:26:03.780096+08:00"},{"id":"69602f92dc2983d638407af34ffc3699","path":"utility/cron/t_mall_game_data_sync_test.go","filename":"t_mall_game_data_sync_test.go","gmt_create":"2025-10-11T17:26:03.7879209+08:00","gmt_modified":"2025-10-11T17:26:03.7879209+08:00"},{"id":"a4390b2a5bd3345ca09b4f120a912bf6","path":"utility/token/user_token_test.go","filename":"user_token_test.go","gmt_create":"2025-10-11T17:26:03.7960013+08:00","gmt_modified":"2025-10-11T17:26:03.7960013+08:00"},{"id":"8d5d9b9151c15db5b80bdccfa4ad9e4f","path":"internal/logic/card_apple_account/account_test.go","filename":"account_test.go","gmt_create":"2025-10-11T17:26:03.802897+08:00","gmt_modified":"2025-10-11T17:26:03.802897+08:00"},{"id":"3676af4fc53a7e056b34c4afcae6f032","path":"internal/logic/card_apple_account/wallet_test.go","filename":"wallet_test.go","gmt_create":"2025-10-11T17:26:03.8100335+08:00","gmt_modified":"2025-10-11T17:26:03.8100335+08:00"},{"id":"1339d4fd004425708306ffba6c2dd7f9","path":"internal/logic/card_apple_order/order_test.go","filename":"order_test.go","gmt_create":"2025-10-11T17:26:03.8158949+08:00","gmt_modified":"2025-10-11T17:26:03.8158949+08:00"},{"id":"12223cc24bc431745a711c09cde5b50c","path":"internal/logic/card_redeem_cookie/place_test.go","filename":"place_test.go","gmt_create":"2025-10-11T17:26:03.8230383+08:00","gmt_modified":"2025-10-11T17:26:03.8230383+08:00"},{"id":"2081083be98975ed163a65fade66d84a","path":"internal/logic/card_redeem_account/summary_test.go","filename":"summary_test.go","gmt_create":"2025-10-11T17:26:03.830067+08:00","gmt_modified":"2025-10-11T17:26:03.830067+08:00"},{"id":"d68b895f71aba40116241dab68952308","path":"internal/logic/steal_rule/stats_test.go","filename":"stats_test.go","gmt_create":"2025-10-11T17:26:03.8369899+08:00","gmt_modified":"2025-10-11T17:26:03.8369899+08:00"},{"id":"c87e75096c95a73029618add8b2030a6","path":"internal/logic/limiter/rate_test.go","filename":"rate_test.go","gmt_create":"2025-10-11T17:26:03.843952+08:00","gmt_modified":"2025-10-11T17:26:03.843952+08:00"},{"id":"54791cda92ceb80fb0fd1d394b3c7786","path":"go.mod","filename":"go.mod","gmt_create":"2025-10-11T17:26:03.8499315+08:00","gmt_modified":"2025-10-11T17:26:03.8499315+08:00"},{"id":"6f6df715215e91eb3286c71371bf331d","path":"hack/config.yaml","filename":"config.yaml","gmt_create":"2025-10-11T17:26:03.8563719+08:00","gmt_modified":"2025-10-11T17:26:03.8563719+08:00"},{"id":"c240c13752c53bbb87d71a8654be71ea","path":"JD_COOKIE_REFACTOR_REPORT.md","filename":"JD_COOKIE_REFACTOR_REPORT.md","gmt_create":"2025-10-11T17:26:03.8628799+08:00","gmt_modified":"2025-10-11T17:26:03.8628799+08:00"},{"id":"b100fafa43450f0fdfd71975218cd99c","path":"resource/casbin/rbac_model.conf","filename":"rbac_model.conf","gmt_create":"2025-10-11T17:26:05.9230882+08:00","gmt_modified":"2025-10-11T17:26:05.9230882+08:00"},{"id":"ed4ebcc4f0df8de88464eb41188917fe","path":"utility/integration/redeem/jd/api.go","filename":"api.go","gmt_create":"2025-10-11T17:26:05.9310215+08:00","gmt_modified":"2025-10-11T17:26:05.9310215+08:00"},{"id":"a1e50bb39a48243490d529b7722e5c4a","path":"utility/integration/redeem/ctrip/api.go","filename":"api.go","gmt_create":"2025-10-11T17:26:05.9354617+08:00","gmt_modified":"2025-10-11T17:26:05.9354617+08:00"},{"id":"f7979711e6010b2ce5b4d4c1de5d453c","path":"utility/integration/redeem/walmart/api.go","filename":"api.go","gmt_create":"2025-10-11T17:26:05.942484+08:00","gmt_modified":"2025-10-11T17:26:05.942484+08:00"},{"id":"579b87223a7534fe16db6bc3dae6de6a","path":"utility/integration/tmall/api/api.go","filename":"api.go","gmt_create":"2025-10-11T17:26:05.9486582+08:00","gmt_modified":"2025-10-11T17:26:05.9486582+08:00"},{"id":"f72071e80cb61857e0d4b22414fa6ea4","path":"utility/integration/originalJd/client.go","filename":"client.go","gmt_create":"2025-10-11T17:26:05.9547885+08:00","gmt_modified":"2025-10-11T17:26:05.9547885+08:00"},{"id":"03c5c54ee07952069215a22a208842f4","path":"utility/integration/originalJd/model.go","filename":"model.go","gmt_create":"2025-10-11T17:26:05.9621344+08:00","gmt_modified":"2025-10-11T17:26:05.9621344+08:00"},{"id":"17d489f98524dd0832db9b2e189341a8","path":"main.go","filename":"main.go","gmt_create":"2025-10-11T17:26:06.0231607+08:00","gmt_modified":"2025-10-11T17:26:06.0231607+08:00"},{"id":"eec37ad3c15d2c25f166711fa52e741b","path":"internal/consts/jd_cookie.go","filename":"jd_cookie.go","gmt_create":"2025-10-11T17:26:06.0837296+08:00","gmt_modified":"2025-10-11T17:26:06.0837296+08:00"},{"id":"d002a301044bef263b2a95b977c75925","path":"utility/verify/aes_ecb.go","filename":"aes_ecb.go","gmt_create":"2025-10-11T17:27:31.4353231+08:00","gmt_modified":"2025-10-11T17:27:31.4353231+08:00"},{"id":"72755b8cc621f2d563a4a5ee5222529b","path":"utility/verify/md5.go","filename":"md5.go","gmt_create":"2025-10-11T17:27:31.4416152+08:00","gmt_modified":"2025-10-11T17:27:31.4416152+08:00"},{"id":"b279f7393bb4b20c60e4a58537fad6f5","path":"utility/mfa/mfa.go","filename":"mfa.go","gmt_create":"2025-10-11T17:27:31.4489655+08:00","gmt_modified":"2025-10-11T17:27:31.4489655+08:00"},{"id":"674428c72460e01521574ca280c115f4","path":"internal/model/sys_user.go","filename":"sys_user.go","gmt_create":"2025-10-11T17:27:31.4519929+08:00","gmt_modified":"2025-10-11T17:27:31.4519929+08:00"},{"id":"ee654b1f5fb098fe9e7aeb85bd452349","path":"internal/service/sys_user.go","filename":"sys_user.go","gmt_create":"2025-10-11T17:27:31.4621372+08:00","gmt_modified":"2025-10-11T17:27:31.4621372+08:00"},{"id":"8193684ba57063beec7b646d4b1b54e0","path":"internal/service/sys_auth.go","filename":"sys_auth.go","gmt_create":"2025-10-11T17:27:31.4682037+08:00","gmt_modified":"2025-10-11T17:27:31.4682037+08:00"},{"id":"55835e5aa0b4632d7c3ab1cb90645f23","path":"internal/service/sys_casbin.go","filename":"sys_casbin.go","gmt_create":"2025-10-11T17:27:31.4741442+08:00","gmt_modified":"2025-10-11T17:27:31.4741442+08:00"},{"id":"c08fb0c498d0fab1d988a77466050227","path":"internal/dao/v_1_sys_user.go","filename":"v_1_sys_user.go","gmt_create":"2025-10-11T17:27:31.4801597+08:00","gmt_modified":"2025-10-11T17:27:31.4801597+08:00"},{"id":"9cd3a5d90f9aa905b7855847b1300d50","path":"internal/dao/v_1_sys_casbin_rule.go","filename":"v_1_sys_casbin_rule.go","gmt_create":"2025-10-11T17:27:31.4861324+08:00","gmt_modified":"2025-10-11T17:27:31.4861324+08:00"},{"id":"ed43772f3487059e03a475d29e64c140","path":"internal/controller/sysUser/sysUser_v1_totp_status_get.go","filename":"sysUser_v1_totp_status_get.go","gmt_create":"2025-10-11T17:27:31.5499242+08:00","gmt_modified":"2025-10-11T17:27:31.5499242+08:00"},{"id":"ed385c7e637955c644231fb8b9437600","path":"internal/controller/sysUser/sysUser_v1_totp_set.go","filename":"sysUser_v1_totp_set.go","gmt_create":"2025-10-11T17:27:31.562623+08:00","gmt_modified":"2025-10-11T17:27:31.562623+08:00"},{"id":"00d464ab1568b59906f97ec8146e8af4","path":"internal/errHandler/handler.go","filename":"handler.go","gmt_create":"2025-10-11T17:27:31.602076+08:00","gmt_modified":"2025-10-11T17:27:31.602076+08:00"},{"id":"276c0639f90dcf2a34f4f4fbde119792","path":"api/order/v1/form.go","filename":"form.go","gmt_create":"2025-10-11T17:27:32.918577+08:00","gmt_modified":"2025-10-11T17:27:32.918577+08:00"},{"id":"b68f5340d85dff7e7356a47028249bea","path":"api/order/v1/log.go","filename":"log.go","gmt_create":"2025-10-11T17:27:32.9259404+08:00","gmt_modified":"2025-10-11T17:27:32.9259404+08:00"},{"id":"d004861257e62752cfed1f1a3dee4f6e","path":"api/order/v1/order_summary.go","filename":"order_summary.go","gmt_create":"2025-10-11T17:27:32.9316988+08:00","gmt_modified":"2025-10-11T17:27:32.9316988+08:00"},{"id":"117de4e77295f9440aa08bf4b60bb54e","path":"api/order/order.go","filename":"order.go","gmt_create":"2025-10-11T17:27:32.9369842+08:00","gmt_modified":"2025-10-11T17:27:32.9369842+08:00"},{"id":"fb972da6475be273c156b3d340c60b4d","path":"internal/controller/order/order_new.go","filename":"order_new.go","gmt_create":"2025-10-11T17:27:32.9461973+08:00","gmt_modified":"2025-10-11T17:27:32.9461973+08:00"},{"id":"1b43f5469efafba6f30e2a9bf228e4d0","path":"internal/controller/order/order_v1_order_form_create.go","filename":"order_v1_order_form_create.go","gmt_create":"2025-10-11T17:27:32.9519229+08:00","gmt_modified":"2025-10-11T17:27:32.9519229+08:00"},{"id":"6d0148a632b80d69ab9cb23b7b7c1177","path":"internal/controller/order/order_v1_order_form_update.go","filename":"order_v1_order_form_update.go","gmt_create":"2025-10-11T17:27:32.9577028+08:00","gmt_modified":"2025-10-11T17:27:32.9577028+08:00"},{"id":"493b77f6804c0cb6c2b773567f9a98a5","path":"internal/controller/order/order_v1_order_form_delete.go","filename":"order_v1_order_form_delete.go","gmt_create":"2025-10-11T17:27:32.9640519+08:00","gmt_modified":"2025-10-11T17:27:32.9640519+08:00"},{"id":"16690b403f75ad7364b91d742d4e0ec2","path":"internal/controller/order/order_v1_order_form_list.go","filename":"order_v1_order_form_list.go","gmt_create":"2025-10-11T17:27:32.9698269+08:00","gmt_modified":"2025-10-11T17:27:32.9698269+08:00"},{"id":"23d82c1c91bfb481851d2302868008b1","path":"internal/controller/order/order_v1_order_log_list.go","filename":"order_v1_order_log_list.go","gmt_create":"2025-10-11T17:27:32.9772049+08:00","gmt_modified":"2025-10-11T17:27:32.9772049+08:00"},{"id":"58a47489aee9a8f906d1d2120d982105","path":"internal/controller/order/order_v1_order_log_delete.go","filename":"order_v1_order_log_delete.go","gmt_create":"2025-10-11T17:27:32.9828807+08:00","gmt_modified":"2025-10-11T17:27:32.9828807+08:00"},{"id":"b477f7365d4c6efa2c1cbcd88d2e7db9","path":"internal/controller/order/order_v1_order_summary_get_list.go","filename":"order_v1_order_summary_get_list.go","gmt_create":"2025-10-11T17:27:32.9889428+08:00","gmt_modified":"2025-10-11T17:27:32.9889428+08:00"},{"id":"3a8478b750f71d410904fb39aa1e55bc","path":"internal/controller/order/order_v1_order_summary_daily_get_list.go","filename":"order_v1_order_summary_daily_get_list.go","gmt_create":"2025-10-11T17:27:32.9957863+08:00","gmt_modified":"2025-10-11T17:27:32.9957863+08:00"},{"id":"07658a06e2cd29c67a415fcae7cad0cd","path":"internal/model/order_info.go","filename":"order_info.go","gmt_create":"2025-10-11T17:27:33.0015035+08:00","gmt_modified":"2025-10-11T17:27:33.0015035+08:00"},{"id":"ea969bf93403e59ca22028be70fc6c3a","path":"internal/logic/merchant_order/order-summary.go","filename":"order-summary.go","gmt_create":"2025-10-11T17:27:33.0083385+08:00","gmt_modified":"2025-10-11T17:27:33.0083385+08:00"},{"id":"498fdff361f9c01e54357a315e9f7d11","path":"\\utility\\integration\\originalJd\\client.go","filename":"client.go","gmt_create":"2025-10-11T17:28:29.8355516+08:00","gmt_modified":"2025-10-11T17:28:29.8355516+08:00"},{"id":"eb65af27cb143cabfacf4e397cb494ca","path":"\\utility\\integration\\originalJd\\model.go","filename":"model.go","gmt_create":"2025-10-11T17:28:29.8421123+08:00","gmt_modified":"2025-10-11T17:28:29.8421123+08:00"},{"id":"f94f261c1cc667bd73b5e2d9fc8b4c0f","path":"\\internal\\consts\\card_redeem_cookie.go","filename":"card_redeem_cookie.go","gmt_create":"2025-10-11T17:28:29.8478971+08:00","gmt_modified":"2025-10-11T17:28:29.8478971+08:00"},{"id":"ef7aefce9f83002d91de28b146a92720","path":"\\internal\\consts\\card_jd.go","filename":"card_jd.go","gmt_create":"2025-10-11T17:28:29.8536887+08:00","gmt_modified":"2025-10-11T17:28:29.8536887+08:00"},{"id":"5b63b16fce716e9c574c9fcdb6fb533b","path":"api/order/v1/order.go","filename":"order.go","gmt_create":"2025-10-11T17:28:54.1189634+08:00","gmt_modified":"2025-10-11T17:28:54.1189634+08:00"},{"id":"c0b5e0a48e881e774316a237bd41edcf","path":"internal/controller/card_info_apple/card_info_apple_v1_recharge_submit.go","filename":"card_info_apple_v1_recharge_submit.go","gmt_create":"2025-10-11T17:28:54.1248282+08:00","gmt_modified":"2025-10-11T17:28:54.1248282+08:00"},{"id":"1c27101b67ffcdf02489a331ce98d3dd","path":"internal/controller/card_redeem_jd/card_redeem_jd_v1_place_order.go","filename":"card_redeem_jd_v1_place_order.go","gmt_create":"2025-10-11T17:28:54.1306385+08:00","gmt_modified":"2025-10-11T17:28:54.1306385+08:00"},{"id":"a2750efa03ae7599bd56314495a2da56","path":"internal/controller/card_info_jd/card_info_jd_v1_order_callback.go","filename":"card_info_jd_v1_order_callback.go","gmt_create":"2025-10-11T17:28:54.1370331+08:00","gmt_modified":"2025-10-11T17:28:54.1370331+08:00"},{"id":"711773636c036a042ce625f30229a418","path":"internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_submit.go","filename":"card_info_t_mall_game_v1_t_mall_game_order_submit.go","gmt_create":"2025-10-11T17:28:54.1428421+08:00","gmt_modified":"2025-10-11T17:28:54.1428421+08:00"},{"id":"1b7d72f7f4a9bb0f3f8a8dc432a433f6","path":"internal/model/do/order_info.go","filename":"order_info.go","gmt_create":"2025-10-11T17:28:54.1476151+08:00","gmt_modified":"2025-10-11T17:28:54.1476151+08:00"},{"id":"449f4de7045f7b39ec1c6aa4ecb4b840","path":"internal/service/card_apple_order.go","filename":"card_apple_order.go","gmt_create":"2025-10-11T17:28:54.1555009+08:00","gmt_modified":"2025-10-11T17:28:54.1555009+08:00"},{"id":"a2623d6811b08468df51c167eaf9b774","path":"internal/service/card_redeem_order.go","filename":"card_redeem_order.go","gmt_create":"2025-10-11T17:28:54.1607525+08:00","gmt_modified":"2025-10-11T17:28:54.1607525+08:00"},{"id":"8ac69700098158e9e90a9a8f1a247a9a","path":"internal/consts/sys_user_payment_record.go","filename":"sys_user_payment_record.go","gmt_create":"2025-10-11T17:28:54.1670407+08:00","gmt_modified":"2025-10-11T17:28:54.1670407+08:00"},{"id":"70e0b28642444d37c06db48c6c61307d","path":"internal/controller/card_info_jd/card_info_jd_v1_order_summary_list.go","filename":"card_info_jd_v1_order_summary_list.go","gmt_create":"2025-10-11T17:28:54.1766447+08:00","gmt_modified":"2025-10-11T17:28:54.1766447+08:00"},{"id":"3c6298484df164a1e5fe7fc2efa9712c","path":"internal/controller/card_info_walmart/card_info_walmart_v1_order_summary_list.go","filename":"card_info_walmart_v1_order_summary_list.go","gmt_create":"2025-10-11T17:28:54.1836242+08:00","gmt_modified":"2025-10-11T17:28:54.1836242+08:00"},{"id":"fec40ef00c4cd2e564af5cea15277c85","path":"internal/logic/card_apple_order/card_apple_order.go","filename":"card_apple_order.go","gmt_create":"2025-10-11T17:28:54.190875+08:00","gmt_modified":"2025-10-11T17:28:54.190875+08:00"},{"id":"f18bd86f1dafe9eae88b4f4b00db9bcd","path":"internal/logic/card_redeem_order/card_redeem_order.go","filename":"card_redeem_order.go","gmt_create":"2025-10-11T17:28:54.1968149+08:00","gmt_modified":"2025-10-11T17:28:54.1968149+08:00"},{"id":"c6ee44f200688a3a1f009e9a166d6481","path":"utility/utils/tools.go","filename":"tools.go","gmt_create":"2025-10-11T17:28:54.2039743+08:00","gmt_modified":"2025-10-11T17:28:54.2039743+08:00"},{"id":"bd83967e8844a9df33a6def66ff88bf8","path":"utility/cache/cache.go","filename":"cache.go","gmt_create":"2025-10-11T17:28:54.2097537+08:00","gmt_modified":"2025-10-11T17:28:54.2097537+08:00"},{"id":"d6ab1f208fb77fbc9859cad2aa6bb1ed","path":"internal/service/jd_cookie.go","filename":"jd_cookie.go","gmt_create":"2025-10-11T17:28:54.2165854+08:00","gmt_modified":"2025-10-11T17:28:54.2165854+08:00"},{"id":"7fa23727ee8e479ba4e92dc3eed84908","path":"internal/systemV2/logic/user_center/user_center.go","filename":"user_center.go","gmt_create":"2025-10-11T17:28:55.3972891+08:00","gmt_modified":"2025-10-11T17:28:55.3972891+08:00"},{"id":"469f62d9db11e2c4fb3697ae2e85f81a","path":"internal/dao/internal/v_1_sys_user.go","filename":"v_1_sys_user.go","gmt_create":"2025-10-11T17:28:55.4065031+08:00","gmt_modified":"2025-10-11T17:28:55.4065031+08:00"}],"wiki_catalogs":[{"id":"8292f51b-85c1-41d5-a58a-50585ba999d1","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"项目概述","description":"project-overview","prompt":"创建关于kami_backend项目的全面概述内容。解释该项目作为电商平台卡密管理后端系统的核心目的和架构设计。详细描述其基于GoFrame框架的MVC架构,以及如何为京东、天猫、沃尔玛、Ctrip等多个电商平台提供统一的卡密充值与兑换、订单处理和账户管理API服务。阐述系统的主要组件及其相互关系,包括API层、控制器层、服务层、业务逻辑层和数据访问层。为初学者提供概念性介绍,同时为经验丰富的开发者提供技术细节,包括系统的工作流程、关键设计决策和整体技术愿景。使用代码库中的实际示例来说明核心功能,并保持与代码库一致的术语。","progress_status":"completed","dependent_files":"main.go,CLAUDE.md,README.md,Makefile","gmt_create":"2025-10-08T18:17:58+08:00","gmt_modified":"2025-10-08T18:22:33+08:00","raw_data":"WikiEncrypted:0MI1/XkBoMl0lTbK6t0Cn/+8FdvqrJ62ianMLvZj02elJtBUgH0Ns0veIx1WPtM9wwkxI+/XAqHLxJLlHB8wV5ZPaqnpZD68qW6viSXvNxPEwZQOyt9nbtdfUWCMarbTgmIushNu4J5RPguVc9JC+KjKWBJP2K2k0dMyiFIM1LNRg0L4JwSi0jojAQ3WhyIboOqfY/DVBgMOmJcqMlfegwvZrPWGRL4SzulymvNwlBKhpBjFdkOwae+0Luldz4f3FJgKEvaBF/yXIIEP306Vc4gko1a8JxEgl2h4yzd4FKlZonSXR6zQ1dUGQzOvKCZR36Nh4YDIxoqDOj+3BaqAYI+LW7ILrDyDi5Mb0PRWJLamEJ99ZI7o48W5vPr0GKxCM7CFhirvdnbb6w1dxKHH6j2uz2wnz9oG3PnA4+vKqOMKmx4buCYqtkEjJ7SegnJt85ilBBrYMEOGXIulXglXQT5W4sl8r2DyHY8t/wHuYS1V91vnuhYnlHVozMIpRVfkwARdrqfSDMREv75DzhMHGzjXtILoZzFz+ZIq/kCAeHawR5w9KUUBbRQ65Txpl8p1rsjYhpp63ItiHANivaJcJNvA3xOC0Mnhb1IDucrRB9JzGTwMMOnXzstRcwvdfPaL4//W0eZeVSBRldVOKjxJKyYkTfvoTNBiQ9avgznXLDGNNaln7C1MuPUF1xQOBqYh/1IXq79W0/gMhESyMZcqAZbSHAa72JhU9Tio3IcgF8vBPbEIOBsTZoXbvVT2dtEf7hNIXrZNS5WENbRMMUI+e25NTOclCOPcPABhJhPmVl0HnOvkIkRhNw1F/bflysTZvMpYOYC7S6e5CkwWqfaSJ6TqhaixM/5RqJs9CmLCj8btLxJ7PXiuvk+ao5J9IKRPqIW8AxmvXA+5n7fz8VQzTdrAxOdySKSbty3ZvIVoyqFwN9c9iTPhi90Gd6MqHHaN/TgFO2k1Nsvk0VW9mPdu65aoRUab/oTrM/UlK87rQYaU/FGMCR4Yb08wI8Nv8eL+ynJa3rsFe1Ge4oeCDRJ7fDGiqsePo1A1bcCNPS+kI8qJGQS3cK6yjo+kf7btjlUVXqNqIopDmayuHBa1N/PpFajqsHjVt5rFh8oPISq63okSxfJ2X6kPSzDNFGtnKpphYTXy4TPgFReXEjU5znGV2A8kHnLoHVHUWJvMGkKmoSJqxdvaorvNs9W4GKghA78uwvUQQ/XGmpSHu36Jtr0yN3HWw4iDJ0bhFzI/zbpF/1Kjyh1zDP9sE2Z6qBITBg9LcwAsbFKpdSA/8+9hx3el5g=="},{"id":"eaa525f4-7640-4d4e-84ae-7624f8b5c790","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"卡密管理逻辑","description":"card-management-logic","prompt":"创建kami_backend卡密管理业务逻辑的详细文档。深入阐述Apple、京东、天猫等各平台卡密账户的创建、更新、删除和状态管理流程。详细说明卡密充值逻辑,包括充值历史记录、重复卡密处理、充值状态同步等核心功能。解释卡密账户与订单系统、支付系统的集成模式。提供具体的代码示例,展示关键业务方法的实现细节。记录卡密管理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案。","parent_id":"201b5004-c469-41f6-a407-c98892822b49","progress_status":"completed","dependent_files":"internal/logic/card_apple_account/,internal/logic/card_redeem_account/,internal/logic/card_t_mall_account/,internal/service/card_apple_account.go,internal/service/card_redeem_account.go,internal/service/card_t_mall_account.go","gmt_create":"2025-10-08T18:18:19+08:00","gmt_modified":"2025-10-08T18:26:44+08:00","raw_data":"WikiEncrypted:kn7Ct+JfrcIimOh9dbHZD8z9sVFXFlw+VowlG4RdkgRiO5PhUZUUR9F/92VQe6/0J84NbYm+zazVIZMP+YkBFE0RZtWubRsgAz8BWjPUtXm2B04dFxVPAt1NIu+3RilzEmU1MR1N7PuxuaIImLt/bu6gQFKA3Bf2MWl0Q61W4ONaIc4V/Ui2hYPvvFDkO+IdljMqxRjRuJmG26kio69x2aFtk6VFwU/V69hDjfymhxbNNKJWT1wgjQARNT1nEy5i/su1X6mIWQSM28YGyPjXB6z9jDFOYmUV6GSJfQ5UBJ5VCQYoGEBZYkcwVn/KqJHkEhHCwDWss36knb4+oRzFcOjfw9Ar7ZVZmZiqPSnto+r5Rp5h1jxSc43jD+7FS5jLTf1Q0Dj7klEVLZpD3lVP2KLOdWz/ekmasAflrPJVMdNKpUh3XIaAUP3nua5TpE+q6OJIrnjLBk17KmAQsE1RBM4z8z5Zvn9XM5sMBDa9u7AoL7spVwcfwJiyg/Apl3eAGjBDjQV7cyRvsfJWs9BMCQRhxgezXNkZi+63bUyJ4OQt+DhLmPD39tL8BWSZkXr3CCrrZ5Xc6nE7w1MlR5SEVykcgzG2dYBYCZW6HtEwx7CHvxKqFZVU7qkueY/8ang60ulQTMY/DcIyMCvGSBb5aVOwIZ228z2G+3k/YacUjDFAYBU1up1I4zkCe2e6cDDuY5qSfyE2eQsaYMaXv6gB45vnQ2w14diy/bR5Mpxe7oT0fWDv3QVx1Oy3Z+JKyx1ehumNJa7zESZWmEai4F7P4d1cY5q5VP+rpdLQilXEOEpP8M0369o+bMLlTKDmZPOqVK/jRVozMnMvyJ/DRXqc3tgo+ng0uT2/ZmuEcpfprBiF0IvtobVjphqZqhGlDDsqazVUdKbPSXxGcbawGOBn+cw8VTXD0BGJgeXIa1HbBZrcZGgyzilCHQjexQSWOBHS9ggSFFHlj22TsLvh78O1avMDXXuFYEXSmltDEzI4tlbJ5K31p0eBCIsUOOCOigJJGIbshguTgw3/ZXE9Kb5LmwfohID/3R2wd+aDgEKAXhP80/XMh1MLF5TKeEGqcXcax+IBT5dfxWSLi6GoEvGYCbKP/CUvvI+DYeNp2XMlGWr6yClsp3WD/pG34pb5Mz1eKbyTRhA+8K62VcJ/4x6j+xqW01PJrKLYXfJOTJIhyHp+uSa3YNvO5OnHj38hl/h5FqYsnZ+cuhs0y2vpa1I5j6ABYMKcu8HMp1wS7jMdZA6ezRBGnl9mSRZ7ELNFCfKEakpT5QBowaBYxviHgYZYHfzjBFc4ViYY/V6u/qtm0i2niSj2bAewlZyWtAVuK7NXFExjovKKnIVvmVHzJraXtJriVnHNOO4ZiaEZk4P9Kil2NZ7vlYo/z+S+pQxjg0H3XDgwhr+/jK+RIDCIp6H7Ng==","layer_level":1},{"id":"0acd557b-c455-4420-956e-96a4a67cd7e0","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"用户数据模型","description":"user-data-model","prompt":"创建kami_backend用户数据模型的全面文档。详细说明v_1_user_info实体的所有字段定义、数据类型和业务含义,包括用户基本信息、状态、权限等属性。解释主键id、唯一索引username的定义,以及与其他表的外键关系。阐述用户数据的验证规则和业务规则,如用户名格式、密码加密策略等。提供用户数据表的模式图和示例数据。记录用户数据的访问模式、缓存策略(如Redis缓存)和性能考虑因素。说明数据生命周期、保留策略和归档规则。详细描述GoFrame ORM框架如何将用户数据模型映射到Go结构体,以及DAO层如何实现用户数据的增删改查操作。包括用户与角色、权限等关联实体的关系映射。","parent_id":"b8ba5dc4-8d15-4b61-86e8-07a963bd3fa8","progress_status":"completed","dependent_files":"internal/model/entity/v_1_user_info.go,internal/model/do/v_1_user_info.go,internal/dao/v_1_user_info.go,internal/model/sys_user.go,internal/model/user_info.go","gmt_create":"2025-10-08T18:18:21+08:00","gmt_modified":"2025-10-08T18:26:32+08:00","raw_data":"WikiEncrypted:b2BGJgTIatkHozAd0Nudm/SuvVVYZvaYCYJT//0Xr2YLspulsfZ15EoSMz1BS2Qu+eT/Pia7Bp+rVzGEs5oZfqEhrvkZJtq9PBXvvEoPE0zXdUP4cFX6U6mN1aUOy0Wzdrk4F0Ho1YhY0DNv8UdU+9bn1hHkP/mx5mK9TxjwmMYR7vS8MdbT920j/f9IegBRCliSfMXWqg31OAUcsikZZRl+R0/Zl4jRZ/HbPVB3fakRwaqfvSWAnDURFmoVY6+xCAC/rRtpV7CAnkNrEGNO6yAtqeba/bYPFMlAqlsatVImQavsRJWHPK9fCHhJPPSQAPYoyKliiMdgTzaxceybxTLtNNShGuSvXtR8DLHwFrhUpC+LTyzXI0JROTjR9ndhVDTt/IELxhmYFITb+4aejLlhHN+J4pMcoRYXEh8Z769iRqfiI0DbR+evFug/AFVvxOq32AeaFc1zQnzAJF7s0as2mKEbjRFFI1CHdQ3kfH087Ov2HdugqBWZw5TWPBAgVk7fItFEoKsryzEiRmhWhsNaqhWF0heraMk8eDZGJw0LXDF/8qYeoV0ybASIgxLCeHl4Ckfush86I0zBcpRh4COc5Swi+LdiWGDvbRKTnbQsTgjdl3uT5/PPVw6OwbN/wqNp6tVyZvzazGUiAb/iJVE+XFbjk7JKib26plORd6O4Bjye4HPj5ohndCPDdmAY9+rbrgf7v8UxNxvMrBP5p3MT6I9rCs8Gcg/Lej0OObK6lxCILhHCarkR09+/WIa0PeeHqfQTurlZgd/VKaXK4wOC1UUX51ffo6pzI3SJTEAym4u1KI3TuN+58x12ORQHPCX2SDvh/l4F82L2yWMDyj6MIaDy/e/+2j1j0FcH2NjsHEIetNey1a29fDnrYIV4ZkCkUC/z77TWo+YhucgMUPuA2i7Y6n0PE/AzD6aUdYA+L7G1UUzh8lguXIDPwDDw91JSPi0J7YXEYwv0oqguL3uxLdjY1dx9b2zFWVWxVDw9FofS+q5/hSzw1OIWsZ+QTUtV/apoyHvdSwDX5I49c7NMgAB5H3rEhcKrezwZDu0AU7PQENOzEzvQzGw+ggNrtUYBtjj83biXEpN3V4p9f7kXl92YJRPTygs+noXNkh28gMS80iBdgNdA/KHfuAW4uEHAsE6GxEQsWoYavMxops8UhIz1or3znDivgK7qXuRj07ySoBm4IE4mhnqKGRFzKSEp5JVb7ihkqX2L84XU4FKatiu6wFGWTgm6kaemG3xHmqGaxJdniYvmDX3U43b1uv7iF24ti/BLG/QUQ4O3kzn3EFstT4QdtQJjxVexc7PJwH0s2McUqe8jwOJvLsEu4/iB/zJLzVPuFIUzyxEE/DHApT7Dwea0xgcDdDwOWN+ePYmDENZFLF8ySIiY1wla/L1b4FZayc1IJ1LOv+BWhXzgm7UoNHzsrllsNhtu3xa99+OBshAu7+gKsIJy3FVFBzzKR5w7SHWoYQ2fABUYNLepDMJA+XdzTd283ycqKbyfe8Xcwbt9bmqrNJFfbJfeQ+KVTmm82fpvHF1He83EHzLlM84vE5qh/gfXCnFzDT3FdNNaRDemUH7VnJWUx3KugsmEsWnvfamrX1VoiMSHSMDT5F5OH8DQCMYPZAqf/IQ=","layer_level":1},{"id":"681cb8e8-add7-42cb-8297-72df3436bc74","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"权限管理API","description":"api-auth","prompt":"创建权限管理API的详细文档,涵盖用户、角色和租户管理功能。详细说明每个端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括菜单管理、角色管理、租户管理等接口,提供实际使用示例、错误处理策略和安全考虑。解释RBAC权限控制模型的实现细节,包括权限规则、角色继承和访问控制策略。提供客户端实现指南和性能优化建议,确保文档与代码库中的实际实现完全一致。","parent_id":"693df6d5-abb1-4b0e-b0ee-fa0cfcf10ec3","progress_status":"completed","dependent_files":"api/authority/,internal/controller/authority/","gmt_create":"2025-10-08T18:18:22+08:00","gmt_modified":"2025-10-08T18:27:26+08:00","raw_data":"WikiEncrypted:7ZB9yjzZwc/JkOb5fG5L62h4S7p46pJDygi2mv/I0XaEve9lYczBQSg9mSd5aOOh0poTp2DPKTMapy+4nMq7a037hv9Ush/mogb3Ipd/zY6F/7avn9o6k/F5fymHI3kmpJnb3Cch7lFHClRfGjy+Se/jm6hd5BP7wEVj0xeXaf2SNp+lLPIswTQky3nnRJ64SMVqGlPzMuw8slMCOic41UPWHSc79cUa7HywqwPkdqOtjMcNfL2oq0seuUd9uTnHTYmgQaW9ZGtro3eF+eO5JavVONGPJdDkZqjpv45FdnYSPFCxW3XDrIpT9zWVVPvYj2894UxAg7567zq9uv4n3Rwgk24a6sd2wZhOOGN/M/08rGq4AGs1inTW/jYL/FuOjHFx3HFSDrC8tetfeKhZ4pfFthpjUwkm+rp5dktITYBTL3FJYDE3JMf0BwdWEqWzHxvC5QtfYO3Gm+dmH7mVDtVzeXwfWiW9wqKe/mb7G3avYaNEPswqlbjUoA+wJHR6VxvOOBYakgaJ4Aetel2S0TjBpMxkrJcNoAxAkOtQnqvWZq4VZGeClnvqVNwHvzwvQIOeaEfCiJ1CFQiy5blGYaoCJobLWtZ6tX/vFxuAgNb10VJ1Jg2BAex2DPUG3lZOvWiTLNvEwLKeJKzQCt0nhrGTu0mCSEtOTcvJ2fEUbxqY/YHWpXrNVMmOADPzor6iM2M4ZDv47zV3Kre7/fDE141wJpHnrX6jNTUUcIBGpkGK7v5FrpjxV7cSce+ynBkQj1YVU2S4Ff7lKjZkU+Bdto6roSxfe8X91BU8lyXvO9RZaJ+08pexUfqvvhwGH41v+kg1ua1NxV6tpTj9izddT5Gjm/4Ytmf3wciHRCFvp9sxryPIZte4luZYGmyrmBCDvfBD2qnCPT1Ealw1PxZuENLD9I+aZTIACT40t+/zT7KDMYoPaegds4uDtr9Cxj/hFUUkBCpOibaQ+BmLU4zx3H7SO+GeIQ/tLKTdGjkMJ0KL8JBAdRrcfPq0pLRY7ax8nyaxk0F3HBiIOoO5Z94a62+uLnIi7tRxktQlaKdOOuKwzColXQea1nPflWTj0sYX","layer_level":1},{"id":"965a1a48-9a08-4f01-9b4f-1f1a51c82165","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"认证机制","description":"authentication","prompt":"创建kami_backend认证机制的详细文档。深入解释基于JWT的用户认证流程,包括令牌的生成、验证和刷新机制。描述登录接口的实现细节,分析auth.go中间件如何拦截请求并验证用户身份。说明用户凭证的处理方式、会话管理策略和令牌过期处理。提供认证流程的序列图,展示从用户登录到令牌验证的完整过程。记录认证相关的安全配置选项,如令牌有效期、加密算法和黑名单机制。为开发者提供认证集成指南和常见问题解决方案。","parent_id":"ad94de09-b7fe-48cd-9a8a-bcfa78565c2a","progress_status":"completed","dependent_files":"internal/middleware/auth.go,utility/token/user_token.go,internal/controller/sys_user_login/sys_user_login_v1_user_login.go","gmt_create":"2025-10-08T18:18:35+08:00","gmt_modified":"2025-10-08T18:27:44+08:00","raw_data":"WikiEncrypted:uxAckj1IXK2TQH//kEdeBEJk8OQlcivzGG3AR0HSFOo2ht3uRAHL8kInzlA+/LrT0yu/xcGyMMZDf6et32Zc35BW+5OWmSgFHiH3LFscU1wP+DwAH5n49Jy+7BmMwoZqTIxQqKngL0ubWEPVHEOa/2sdpoDYIKxaODRnZW1UQLeZCZw7PZBwRaBTsBF0wCwFd3pQ4sjeKp/gShXpg4nAmtCC/wmqHon1w4l7w3HhG5v3KEzsQfiYoUnjWAPo4otxkFypLPlJsIu7UtzpWYjliKqvJLuBnHY234gVrbqsq1CVHMkxNz+/xzJW1K+F4EGMB239Eg9Ua0R8c7IbOVKrh5h/cdlnwyikDYkBMvn34YMb8lXx+pSgxRO8QNGeuxyy2/Mn6lNZNt3BIl7BRo++j+f7LiPtEgl4dk5mFSeKqsxhXOCvvm8M8iwvFagjRJRuGUDjFoqL5txB7/lomd+GhqEK9Hu/rHoHKiZnx1FKGUk502ZuRI7IThAn/2Maxrd83T1wWkmXL/TTHxPJZEt1K5qxm2oRVGBTbUhqR9w9OxAZdhbGRW6ZEiLjYPBo8kGncrDBzLDT2K0X2avY/l9KX5SlwoDT1Lknt77WWromrjYeHYYm/Q9JMF1FM0f2l3bMtg1fhjKsKDOdFCHqKkLxEoY+kDHrINbuYY62gZoAyuxf/c1yC9r1mUCA3oUVCPEgzP1NmkrfPfYEM+VsKMoPkeB++F0crkF/tC73lIuV7drxAxM59kACqIC0QZXlbMcJyJRndirD7H9sd16sscpwqPw9c2mPM/+FLTx2PyRQExSHLWEyAdMZVrpDC4/r5GmsCOeNByvcwWIaAmvlbijoC1DFkztQI7x73+Pvutzv4jJ/TVE9RmF+B06DM5pTew3OJE5sRmxbM3DCiUUwt2SrzEk/qgqpyWdUs6PyAJ+62P8cMPv3WjlVOryAHjfsrBkAA8K1NKe4bAGwh1tEfWPVMMQHkMK2MOdwUQwKpCKy94PmvkNfgfkrwoz7kw8+/Csppg/0NuacaYkO95aWg9oyphJFE7yBQ3hpsMvIAZeMYCQIZrRX3NjgNSGOEW8tn+lxpUbiAJxSP7KwOpPLcjCKJN9CgEMBXUyem+f0c+bttlZ2UA4ugoKS4Lhbf+IhxTiqQRuSRhNssZoGl6JccTsbcHLyGfA2GEwWpGlNHuvmkNuwSoHBtAdcJcGs0UiDpZimnTloM/mZEhmj93cQ+TGRTw==","layer_level":1},{"id":"d49ad99c-afba-4362-af4e-ff689d5d94cd","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"电商平台集成","description":"e-commerce-integration","prompt":"创建kami_backend电商平台集成的详细文档。重点说明如何通过integration包集成京东、天猫、Ctrip和沃尔玛等第三方电商平台的API。详细解释各电商平台客户端的实现机制,包括认证方式、API调用模式、错误处理策略和重试机制。提供具体的代码示例,展示如何调用各平台的充值、兑换、账户查询等核心功能。文档应包含各电商平台API的配置参数说明、请求/响应数据结构、状态码含义和性能优化建议。解释集成过程中的技术决策,如为何选择特定的HTTP客户端配置、超时设置和连接池大小。提供常见集成问题的故障排除指南,如认证失败、接口限流、数据格式不匹配等解决方案。","parent_id":"050aabef-4c8c-4892-849c-74a2e3feb22b","progress_status":"completed","dependent_files":"utility/integration/redeem/,utility/integration/originalJd/,utility/integration/tmall/,utility/integration/ctrip/,utility/integration/walmart/","gmt_create":"2025-10-08T18:18:35+08:00","gmt_modified":"2025-10-11T17:28:30.0702124+08:00","raw_data":"WikiEncrypted:eeiDNSD57OEWfAciOcmA/WWLdtppDTPAYazqwHQI8gYrr96LHBAPdU1K0CNWQJGmBYN8Ly65QOd2X0afpX1xGU9DNB1t8K/iDMRSfwvA1pVT2os/zJkiA9KlsgbcuLoa3HZ3Vho4EypxozxwL5CZrY0ohr9Uz9mNi7BSVymdzC7AipdxoiuZukHeQAVPj//51uAIT93KbN2VcINKNQOHWC9bERRTU/IPP4O0TX+GcG3MFUTAEBVV7BWXBxFet4h1vIGgro1riiblS31vItDrFn+/yxwMI28z0GGl7UnTIJ83p3ZaustBmzdbcX4RrjD24T1sXoCU1pJd9I6FIwiXs5Rsvp+fyXZHfSDmKI5RBom7g0hyW0A1wKMF4XhRlRmV/Eoaw++WFan6rUuw7NoyblES9CidVbd+NKq2TnHg/puAmFS/RPnb8fBiJK3VcLbbAIwko+ZcILI/6vOb2tHVyh10hnwdkfUqV2SjbOvDsaKJmLa8RClsYhIfGalgM0dSG2KieS6nIu0MV0p/nbUvDgZt/DKtzQLiuMOtfrgFlf0IPa8EqyOOmkm51tKrtZLC+Mrg5yw7A3sxa9udjy87/8JK50o7FHGrRMBd3KgeCVRpF//vHBI3MjFu5oLYdngQou4aGZayI9tFyGh/dpXom9OUzxKNIeiiXeRyRi5cmJW181X7QTgKSzSf6XVT4WC7KL0sKOns00pJsOnUBBDF1QB7i/UatGiq4+7NFIG/frRFYs6eah0hm47dgfnMJF1O9uWQDDOjtlUihErLwj2Hu8QKb25padRc1s7aDTqBHMY1CUXj2nNCX6sP3JMHN5mvNwOnwJ1EB+V6ieiPhoObEv8DlOir2xYJ8zoPrMEza2DmeWIrLBJCkIXxFSLm3HcnoCWkk0MLgc+nh4T2kcpHRDTjLOw7qMPsiCmum7agdc1pVogeB9tZmjixjwa2SxY1KBcG8koNuczJJ/UYpZqgkIJZJ00AZm5kf1tNDYtFhAeCpnp68Qxn0J5NX6LIbKZsZqI2rRwSn0rlPRF4k55mVYEYQhtTbPgJCbfvwgWMO35tqwnfkkaPlFU3901Aegh9ITp29x1BoVxrtOmko9jfXL/kZoUpsjltC0dljOcYaGrqEKOd2MPncWZvnqMl1vTicAeqrpUVyh7lHyeVRROMTERd4Nhca8IybwA6CFav8C2mdUPrqhGPfjhUjQGpW/YIFbafKB7/R4RcGLIT5yhvt74GBwnmkQSabKGcyUKFmOcPfg7joCU/hrpbadRv1Q30+SMCGqNp3SRAw9XTIQfzDnHakGO6ynwhmwcFCFK5tLUrKBE+1YKglo1ZeekauOSNwofCSPYYM1c+wmqJ8ZbPIBPQr1qyK3erNtoENdVsDfg/X9uRg80ARWhF3eYZlfgR31IEWHvgib7F8A0V9UYMkNtNgtE/Ti0bwYx/LPMFB2g3v258a6RXp/5OgkgK5NA4rvX44KHo7FvOg7GhyhxEG/5gHy5HWqLhwuFeSqddDVDd6X7KJiD0QWXnE4cDxyyP+a83ChVcPeUK9gOvj3GR5v/dIdMoHqG+2Y+9Das9Rq7CgNYIBlvgWh5szvMGSiigNU0IIB240CcEthiH+aBB6A==","layer_level":1},{"id":"dfd2209f-82b2-4b3c-84b4-8fa7f91207e5","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"配置管理","description":"config_management","prompt":"创建kami_backend配置管理的详细文档。深入分析manifest/config/config.yaml文件中的各项配置参数,包括数据库连接、Redis缓存、OpenTelemetry监控、第三方服务集成等配置项的具体含义和取值范围。解释不同环境(开发、测试、生产)下的配置差异和最佳实践。描述配置文件的加载机制和优先级。提供配置参数的验证方法和常见配置错误的排查指南。包含实际的配置示例和安全配置建议。","parent_id":"519aff94-32db-4783-85f1-071d6c314ff3","progress_status":"completed","dependent_files":"manifest/config/config.yaml,hack/config.yaml","gmt_create":"2025-10-08T18:18:36+08:00","gmt_modified":"2025-10-08T18:28:10+08:00","raw_data":"WikiEncrypted:aC5ZtUyEKPSxjzg//aVllBdOkNxBMxnGnLp2RLAVJ7xmBnEGgBX+Mwrm1aKR9Yfw9YgupCqzpiJ1vOAMLIumDoo0hEmndSovwR9ewFhwUm2+jy33bebRLGTcBVfCT0hl6K8y4mrs2DbU7BLgJ5bYsbaZ7u/W1k7Z3hUMv6Ap+addjOylxie0Wd/h9MAuuJ5DhaZCv91V4vUGh3QwBl0tY/uBMHgY+4DesQO1vIXHpEKsl4L6nKtG/oRnMzleCie5X4bCAugaQoOwEkJa7OeSWiseQb9x9UtaFxIWtRcMzwT8ZTHhIswx5dFQejKZ8MGUPpR69In1IYKUEgxxxg8VnFzNJtKZqWnHEyMIA0+AwJSEg33E3SPBbYYUuiaWYd69nnHjCWS9oKItfci8fuUM0H8LwgqD0oXJuavM8jxXZmYx4QhUqpI9P9L8FYxtnlhNrrR7YhvoPfPicE/YF21ZmdFJv8XyWGB/zQGVH7+PXPRHlWTy8pyMBtHlojwlnLTLzJeER7cWApDYyZF++eA/RUm0UK9ajKhqsz8DG9CeFtAG7SJb8oHHjJKEHmHH0FbwSQelN9g6e29mrJUlYoGs+hDeGdAq9VTC9vxaJRXTP+OwbA9Dk8bxlslPIO9LEDuofrw0jpthtTJOiJA76VUU+69Es4ezrj2SJRCt19lzub80YZ2q6aqPQ4/rdZNdvZZpwF/HSOONmB4B0y01Js7k4TgJzAt4IWFsPex3xRKVCEd+gBVBEsJMGcXYyL6NyJoCnn4YRYf6s3rlXZGWiw6Z5YV2x4th4UQkyk5DXk/A6gFCA4hzZLqDbiN1/LFMDTrvpvd3E0wMc5w5ZS0+Sw7UhouoBc7NGOQulWLLN2yMHHkvcNAooOxVdkG+pU+3nEtjlh+tZph0xwx3ZJpPrIm0wNDPRi8erpiMPsnXqpzRSakwEaxUqpuCV4lzjnNLTSBgxLkvQEedYYb/vpbn2+MsERe7VSvy91QoRvuDbrL9ZcZ2JMhQTuZoZtmunnFLWuJlUTddZCsY1jgyj5ZTY40Z4Q==","layer_level":1},{"id":"f7bc4c8d-64a0-4c2c-a17e-cd38987a94ef","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"Apple卡密管理逻辑","description":"apple-card-logic","prompt":"创建Apple卡密管理业务逻辑的详细文档。深入阐述Apple卡密账户的创建、更新、删除和状态管理流程,包括账户信息、钱包余额、历史记录的管理。详细说明Apple卡密充值逻辑,涵盖充值提交、iTunes回调处理、充值历史记录、重复卡密处理、充值状态同步等核心功能。解释Apple卡密账户与订单系统、支付系统的集成模式。提供具体的代码示例,展示关键业务方法如账户创建、充值处理的实现细节。记录Apple卡密管理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案。","parent_id":"eaa525f4-7640-4d4e-84ae-7624f8b5c790","progress_status":"completed","dependent_files":"internal/logic/card_apple_account/account.go,internal/logic/card_apple_account/history.go,internal/logic/card_apple_account/status.go,internal/logic/card_apple_account/wallet.go,internal/service/card_apple_account.go,internal/controller/card_info_apple/card_info_apple_v1_card_info_create.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_submit.go","gmt_create":"2025-10-08T18:18:47+08:00","gmt_modified":"2025-10-08T18:37:52+08:00","raw_data":"WikiEncrypted:ngLqLViTt5zzUmJHZ62DoNzwaMeVTHTu/rGJRszUYK4GblvZyvqVED6wYf1zYH+sjjgavfkzdDpZX/iLMRhlT1XpbU08T5DcNZVvkdoFvwJ6/tteal0zHDJCrSCMrAbPsxqMSW3hCc7alG2OcMhRpTczsl2qchYBK+AtYkv2QeZ65irR51l47RDtevSCnPJkDMWPgHbHnGiKCliBonQJcBME992aQspXUAM0YNH5pw2s15QF+wFfzVDycltGbYenpmbf8UtSlvTidTZ5GexkYZudc3GzMlaW6466mg79Xe4csqslSGY+0LhjQJ+iehgfFI7KsrbESR0NyUGu47BSAdWVTUzFJdceVpbb4uXDq09vbineTVgRewLIp9mm/leT8+byfJ3+VLtk0Pnkzx8RqfLfPb05fMPfyanR75qcDpE+LGpoS3BOpBaOW3k1Qzu3RLIOc07VPABJSj5dMT9erlMryvH0X4Dw80UcFu+mpQf04ifL5dCitAkHBT8sKE5z6/v6tpLUnM+7OwAkMkur672cn9+aARy834jrdoklL/hXqel6EGEIRRcCwzvpT9DaxNECyf7l5y9FkZO+tX5ORO7eAt0KBS6YknKQj0qkDFhOu7nQzm4o1iSzHLDCLO8wgT23CsuKzpjD/w5jCwL/UZKV6V577luwhMCh729g6pMilL3w054dypJuU0/InDyPk0SMzOVRHjFSDWB4gIkP77t4J95AdU1yxAT2CX0SBkoaqXNBc92PgjZGOvU/DmDkmMgj36frOk3ZVoJ2yjrIeTOGKp0152OFJw6rtzTbm99NgSJIbnINxCFqs434RzLj6rwLqvzTnmvHHpdlj0slCfnJAz7jXbQH8+dJ/4OchkvJK2YOQQJAXoPFhixVBeuVlbydhfrCBbDQnBa5A1CYIN8VQTmtdHL56suCkxFC1EwxrRhyeYNdurFysRim7TchES/UKgKhDbIhA3WvfGL5izZ0VwJe+xFcelmLFw/wnk45UD6v+IMj6budI+dSOkHW053gM7HJy5MmoDWk/tMje92upS50Namhu6vmi+/xBZ2GZONGDqppMDcjtZXR8s5Am3Qb8Gp/hLJqvM+1vfzL1NYZlw6DrV5JzdTIpwLoZQYZGaCecjwXUeQUoEamSQoGKcSHtlPBY8+5cp3GhPQzUYDwu7Yn9IzU/y4j8uaXYe0w8nykbFmMrLdDJN0V2Wk/1PgXzHffqsUk7xGu17sSPPCNoa7aXDnapKF/Ko0SNuZT9TUc4Mtq6IFaDvxYHELbfqIBkTewQ+GpVRFoaOeJfrwQAUlH42ZIJzkKNVOPBHZmuEydcGCp4s8xGmyxRf63j7hjmHf+6i0vEaRAxDK3Ac4pcwHgN5ITRDeAxR0v1HTnGd9E23SmOCIWNms5UFCAq9emiqrAW20X5H90eOpg6v0YFyR3Wju1Nlg1BVcG3ipTzCrht+ZNszH+CPNqA6b/NiN/CaidQw8eWfx9FmOLq8h+cVxUVlps0rVHghs3y9LnzqIB8Ylvqe0ZY1pzH2/3CReDGvmULm9jEINUte5i5akwy9CGNt43RPieHwPS7a6xlO39Hg+Rwk3gzNG7eNZ3SozT65lxOkmYJP+85KOQFW9R6MZoJdE6+VMpBZTpcMtlEs4rrkYb5DVDPKxBIt8cCnYWYXAYvxhOIhIE29RV9DSgRkCVcyuLktesXDXRuoMf6xnE91EcmjeHg9mZduNU9HF4jGmiKoBh2MVO+85QFycflsoAFQnJgxiGYLSln34Kx8QeigkYKBjgZhGWdgWM","layer_level":2},{"id":"6810876b-78f1-4c9d-a2e4-a82d03615272","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"IP限制机制","description":"ip-restriction","prompt":"创建kami_backend IP限制机制的详细文档。深入阐述IP访问限制的实现原理,包括IP记录的存储结构、黑白名单管理机制和访问控制策略。详细说明IP限制规则的配置方法、查询接口和生效流程。解释IP记录的缓存机制和快速查询算法,以及如何优化大规模IP数据的查询性能。提供IP限制配置的最佳实践和常见使用场景示例,如防止恶意爬虫、限制异常登录等。包含IP限制与其他安全机制(如登录频率限制)的集成方式。","parent_id":"93bada60-b20a-4977-b82c-eca224ca34f6","progress_status":"completed","dependent_files":"internal/logic/restriction/ip_record.go,internal/consts/restriction.go,internal/controller/restriction/restriction_v1_check_ip_allowed.go","gmt_create":"2025-10-08T18:18:52+08:00","gmt_modified":"2025-10-08T18:38:32+08:00","raw_data":"WikiEncrypted:6hVxnL7axMQmHgJLo0JNgWqWpJf6Px2W79mWMsxJ9TGAvR3rE3JrdX51+6StzcOfTkIVdbtImBko043YZPW2NpQGSrhOvIBZ27Yj1kGXfDgKwzSiZgD7IgUSEukesfljr6YXe1Q2MQmb4gz6SbybNWCkscoeZqQxw+/F5u7/ZqD+of8mjvclrK2HdQ0f7qpOqL6gTI4360e6ogzBd+A4GTk9+iM4/87yyUTRsPY5266M9J+7lCbw7h39nIMIrG3+vw3Qhwzfp7vBd0RN8vKyiYM6wTYnrlWjImpk6UBHVNT2EApndrmgKuy8PAvVdmxy2U5c+OwjKzRT6mFutG2qUBiDz7jnmVCz0RlG6ShEfxqMtOwDgTWnYHedxfbiSYb6HRA82NfphG42/U31qwKqWzObwwmMtaRX2HSMkUHDS0BPpycfGon8TXEg00M3I9MKsfRKCsGpHvT83YE1099/x3elNaqplDImzOvrspp1Ww3wwyy8by0mbsPJZWGdzekPsyt13nQBc7Vp8UaIGZBCqOGgDgBYBP75d1+2FCbN5u7Vomxc7rpbbL8EO1WPKhyWnj8v9zXDFYnbwAfCzJsG77bpTc/35U4TLTMVIKHyndtCnKFczkt3+3F+baIz82Rve8Y9SN1Pa6QT7/MvYMdf9yc1Yn2LwCr4mi1VLm6Y2xHkHuqmT3Lhpsv66jX+CUNH8OoyaIA6rdD/WaFaCXAGwq14E8+23QebCH7eIs95XPJpn/iY4E5uC15ksm40bpLVrkBfJKYwjpjqXBSRehPUkBhIra/vf0CE9JgWf5bjqVL5jDpIxN+7nv37IDi/IDo8C8ILpLkU1Q/EicEO3edXr/3sfH1RpSRX4GLKVUYSNFZDCHcKedYsdSxF+8yMxsHw/FmtnMpCkmFuZONUqjahCIUVMPR8GE8MvJ4UUF6u8nx6OSpniwGuOWSp7n2yR2k+n5D0vwb4dlQaVT+kyO5Fn774pNyseCf04jPpL+7Xj8ypbaG+QuX/wBnkZcGxMd82I3ROQ7LVV182CFYGiIla1Khzf+8jqmOM3VG0n/5W90+3ZsMEZws3NjYjeQ8my2PUYvXxgONF4K/jj+rn8F6oqYvLAs5EOwgajo3kq7DekF8QjvctYQ42G9S7HpYiCpd2DvkEwWHuX+QvE8xaCOklT9uhbJnKWIB5vkAIZS4JwdfTXzCN/y+6rRLPKlSgJTvdUw9j2jbYN73r9OYkgJnDvshWdFEMmuTeO6/CxAcAz8cpu87IzVJRhuWVacGl1p7tTUTO/t5JrfPYaR8QT5qzQg==","layer_level":2},{"id":"cae0b323-5cd0-47e9-a902-06ceae30545f","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"Apple订单处理","description":"apple-order-processing","prompt":"创建Apple卡密订单处理的详细文档。深入解析Apple卡密充值订单的创建、状态管理、回调处理和历史记录功能。详细说明订单与Apple账户的关联机制、充值金额验证流程以及iTunes回调处理逻辑。阐述订单状态机的转换规则,包括待处理、处理中、成功、失败等状态的触发条件。解释订单幂等性保证机制和事务管理策略。提供订单处理性能优化建议和常见问题解决方案,包括重复订单处理、回调验证失败等场景。","parent_id":"5ffd09f4-939b-4b8b-a254-494937471526","progress_status":"completed","dependent_files":"internal/logic/card_apple_order/callback.go,internal/logic/card_apple_order/order.go,internal/logic/card_apple_order/status.go,internal/service/card_apple_order.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_submit.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_handler.go","gmt_create":"2025-10-08T18:18:55+08:00","gmt_modified":"2025-10-08T18:38:12+08:00","raw_data":"WikiEncrypted:ngLqLViTt5zzUmJHZ62DoL9fTXxfO9Um+u6vywbuqNlVAJBbx45l1XJxh5AkoaMelVjKwL/Tj+bOrJfzH0FvH7yiW6YplByZy7TzEt6ow9CYvbYT90NuRLJkRjSCugg6/dx9+rLZH4VKOao3RXIucOtBz7EEcNYIwVNFOS1GHEfs0ENNKNwr8pOYRxwxRyv/LZi0/nOwttovh7UJtj1aAoNbxGzLdk4o1Obw1qv0xiRbdPf4tmEMs+6in1MbhK20W6G5iG9KS+K82ZmhTOvQbR6yepLzGCxTNuRnL9QHUF4QjqpdQNDaDB8mruCNRHJIjeEoEqg+dd+c3Q5j3F5UmI8FTiV5DlaAG1HtSljleUgzo6I2zLaT2VNqWpoRki7b3U8mKqqdOUBodU72l0jUUDngrpYRcT5nzOV6E/7lkDlGCS+DVCqHTz7GB0tKmxi7TAEX2c2XB4T5i4pKe2QgRmEYNkZ0aschiY+kJMxr0/BdNuf059DTFuINcsvhV/06GfXnSa7xklhb48u2U1nBJ+9pQz70XKoA2kEsBB6/lHay5FWj/n+85QTtGQN+jIyBC3H+3ov0qj3dlU2HRucRhWGP2rLi3R10uwIdfOHIcIQqs8qSzTq2+nsQ18r0ku0YMh4vc0lu6IUHgzo/tNAhxgVxZ61M2MZixEtQA9Yg6b6YzRsnDM/E+LHrfcGl0cfn0PqMqR7mcFceNiSrkAa1D8yAry4GYZwKsvvqsamgswj51TbYXsMARaVOYlxndMVjpDIE0R/TWXh3Pv3nGygHbvoP1xDsOuuzEjJ3E/sILuEt2hxs9nO+5RLaweL9K6EVVDdI+PofLell3Zxfc2mjhHBJFLgJhaoI2G+h1u96pR3e3f6NlMrq7G/sLb9AVmODF3Ys/OPBj1Tk1DuwjkRhYqTsmp6I1t76xgggXWykt9Pu571SHlU4Jr3K2f4JD35/bG2UEin9h26K3zVkdUJEQgZCyrJ7CKXiUH+5LaoZ8q0JtTcBrS9HrWwqD2NVrcV80cjQqZ7PrmVzYYU6ft1YrVpcA+fae6YM23PQinDmGUQOG+8/vOqe+Ejozo/QecvLkXBb6J1KzI9x6ycG+PQL/21DaSugH0BRwh/S1pQxiETPLm7dSg8iL5NTU0Y/A0f1+tZU3N677N0TgaHCL9LvDn3wU+CMnvH83k5MyDjIK1KGjn03ywuWIFmcEG3yevlXVvlOkFmOV8QPfc2yPL9ffds6eQ3d7kQ/XrScyX7Px5kL8Y2b1YxqjTVpKPGwDPIRqHEAuSj/C0WNNjCy/bSpoC4426OwW9FhyXbKOl8Ig5QZF0uUPLaFCC5k9xM0Be7fOzhh1dCFwyiqpPEmmSgIrEFOp37tQbtOf5U6FlPjQtduifVeLTBkhQCoqHZSJ9l9I+vBxhEnk8AfNH9L1B4ekpTRpg/rGu8tLjj1fPpCAS2MkpkiPDAUvmsGuvNfSTyI","layer_level":2},{"id":"b5d20329-a5b6-4db0-8325-2b83ee9a2c52","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"权限规则管理","description":"permission-management","prompt":"创建kami_backend权限规则管理的详细文档。深入阐述基于Casbin的RBAC权限控制系统的实现机制,包括角色、权限规则和菜单权限的管理流程。详细说明权限策略的定义、存储和查询方式,以及权限验证中间件的工作原理。提供权限配置的最佳实践,包括角色创建、权限分配和策略更新的具体实现。解释权限继承、权限检查和权限缓存的实现细节。包含安全审计建议和常见权限问题的解决方案。","parent_id":"495d1fcb-e69f-41b5-b893-4efb8ffae28c","progress_status":"completed","dependent_files":"internal/logic/sys_auth/sysAuth.go,internal/service/sys_auth.go,internal/service/sys_casbin.go,internal/controller/sys_auth_rule/,internal/logic/sys_auth_rule/","gmt_create":"2025-10-08T18:19:01+08:00","gmt_modified":"2025-10-08T18:39:14+08:00","raw_data":"WikiEncrypted:arCjhUL6OOP3tq0tMlrtoPZUVARRVnTw525aYFrCIqbEG6QBOjm5e3du5Qm/SOW7RO+umAfB9TSxOT9xkUJQdGFxAzVCFKV/dT+oxnPEIxudZIt7DFP/TqJj390wLSA3TU2jx56lHjMkFbxTB3b+YK2bsUYaxXxgyUYsg0aL1elmmAc05EfOHqD1LjDiv13jT+xsx4f9XrUL+TR6CsMPuCNe3QcVr5JgPY44b59kqygg/oDcazxYTXYcd1fDW1grWYSfWQkLco+lGdxj9phlDjgdV20doL4YrYRQFa2G5te/KDzwIbj7q3oIkGXE1kGQtGuZBMigB6q9X9XZ7RkrZQ8eu73QLCJ3QmHLqxuKGFjQd+/jFHdJ3UBPXhoQNxoLN4ZbS4mmZ3Y27p7n6dKJSJsiJs9ldkimugCR57btqjTDl2LgOQfyimee1zAkEWL7DQt739PUBao/q60R56DC+CFFnpz0YNyMQGoCirk6Ldt5A2ciMtpjGnnAUpfBU4TJd5q5u7Kjw5Feyc9KJvUrJmVNaYX3Ri9BfKEFww59fX9z0V517QOQlX3Ejk1ENOIKIJfp85SAN5orKGmHPhCsG96FgTckuXKW1w+z2ec4H5P5XQ5aR24pC2OGEJVEx7KdQO/Et9qwNo5+cQwLsKfgPgOccuSZZrJVwB5OsTAKmyzkamBgYkOxPxPJvhk4t4knW12lEbYdH98p10a5fiS60NuW+9XH2cw1psC2W5wmFKEXk8j+sHuDcC8FYoR/COQh+COy7rycQMmFWhV+sls04kut4EjUgjEciFqTE0I++4nmaqnqOJydK+FtdNQA+d5v0Y6867bjo06EJ3urA4nkmu5acphb81F4LldYqZIc7UogJerTmW7eN5sAC9jPFef+vs6OW9CmlCueUyNsFUy+lMIvKOIFFBUPSmHYTx9+cPGCBmUCpPMeS6/oF2CCnrbWlKh5NlSjVQILLtN25oqUUrdNrYuvXSPyCjtL420Sw/qQDiLAMvVskbgfv0Ntj7TuZEJ/7YYZt384EyDG4fuI3rdwwnnFQF1yoM8GNBiIUNIx9ohlrWW485KoP9GQL4UmudRw115B3ivAT024y0njHuYfIm9e9wXCq2AxLqge0ThrUeIu2ywFZ1kfogcSe4VtOwBYBXJY2hvGZ7osk39uhBziC7u/OeFFhIE5xy71Qe5Iyx0g1DW/hsgkmrGcMXmSAWhj2lfDxSEu+1InuZsoU5locomPjLn7k5KZyY0oIIb41X/A4XstXmP3zV7Y5gw/QrLpqqIaDcieSsC/8+KSdo8KjrcxT9AryccbHznB4MfzLBQFfQ5xIFXUUAu+unDW","layer_level":2},{"id":"cc12ac77-8ff2-43e0-b014-8cbffbaa022d","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"菜单管理API","description":"api-auth-menu","prompt":"创建菜单管理API的详细文档,涵盖菜单的增删改查操作。详细说明创建菜单、更新菜单、删除菜单和获取菜单列表等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括请求参数、请求体结构和响应数据格式。解释菜单权限在RBAC模型中的作用,以及如何通过菜单控制用户界面访问权限。文档应包含错误处理策略、安全考虑和性能优化建议,确保与代码库中的实际实现完全一致。","parent_id":"681cb8e8-add7-42cb-8297-72df3436bc74","progress_status":"completed","dependent_files":"api/authority/v1/menu.go,internal/controller/authority/authority_v1_menu_create.go,internal/controller/authority/authority_v1_menu_update.go,internal/controller/authority/authority_v1_menu_delete.go,internal/controller/authority/authority_v1_menu_list.go","gmt_create":"2025-10-08T18:19:07+08:00","gmt_modified":"2025-10-08T18:39:22+08:00","raw_data":"WikiEncrypted:7ZB9yjzZwc/JkOb5fG5L608NUXTqXtsly/V+7mrgNl4fXCVjsk9UflvLgGY7iZccAEBf/aM1MapiSKTXNs/zbzpx9CVSpDtL4kRyFP/nB0eNSxL+5bcbTM2i5VPD7Scw4QcOQ+DBsAcp2x8iVBNdbrPqHKZSPj0k9Zm7unBJR93y24WMhZXw6Foh9dJT3F6boHwV1r7mRIVCWk/OmfPLAm8RogxmVlERIpk4K4ryYbQH2zY1b5BpwKQGGJfTOsRzhwHLDZBQ3x1yFrFuDaWYh4XcU70HlgKB6rCbainrA4NI1Nu/AsBeLo4yrvUg++xR/z42ATRrt7hOc5XCo7ItIxWLXk5qX4w0o8i5zVUduNgI/mov9HkvFA0pQfEJITFxRnikDzvlfxqSs51OenVMe1LOT4w5vu5sSQavinT02sHlojgrtLQJaV9TH70JJIedo92erwFuQGWpbb3lUiNMlD3KddW2mEBuE4V1HL4+4LK1LwSIcMdfRWskGyLEiLa4FpdKpUDOx542or+Hnn5hQFat1UgD5iry3xuc5zyBxNF5IfNToDMormpHTcOtJS0+xb0E7R8kq/AOSGwMYqzMy5/OTLBS9OM/4ajQjDw37CdyC+RaIrV9i4qPudBA+6/y+C2igHgjJq7DSPZV0Ne6Mjfhmn3MYfwREBffLwgWO2UjRAlRp3+AxndaIiSp926ALrj2jT+CI3ruhXVAFeRXgIFSTM8R1DqzHbjmEJun/Wdkl1H7g/DPMUYJZZkCwJ8T3EjVZKmwpnw/dGc1E37pCnRe4sUPASdAvpzld5qzArnNgN0kg3BKgrzPCy5OXc6/WGnOKmey4/KqpQ5XlzdaMWOGmGgnHLSk/RUYtC1SP1hxphvb5yWu08wYUJ6HcfkeU7bFW8tauF5XeJvfCEW8TWYQzn+badk1AYqDl5se69K696bKzt8CMrRzlPGo/4k4XDDItQuzNMN1ORffURgjY+zzFNaWsc740n2KxmDPnMx7lZz4fgMgT4VEFr8I3TrbKyspdnRS/Ua0nOeqQYkPqYX4cflqgTp2kRcT31GO3GVsQtjIBGtyngYq9r4J83pWUgBjyKmAxPYreAv7QpylmIfl1JS+eLtNQ5Y7rSoX08osbb+2lLxiF9DuMOmJ4J6db9bZE74ODUfD+km4SO2lTb0dK4lNALbsoB7Ak0nLbv3t0cSUIOV8GoPcCF+ccK007O5iVRWdR1sVJqega2Wm/P8v3ATgBIezWvlcgCuuigRzF07Hglbp4gWbXoJUWe8J18olmRvBE61PQbmXGl4d1P2hz+sdtcVZDVSOOHlzToNVsDZ+wYQ5MRZlsxowtpQBPNxp2KZ/JqAbOXZqBFjZV1ilFGxIceEX65E/dBAQCR8=","layer_level":2},{"id":"071ef93d-b914-433a-b69c-a4ec42c36381","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"订单表单管理","description":"api-order-form","prompt":"创建订单表单管理API的详细文档,涵盖订单创建、更新、查询和删除等操作。详细说明POST /api/v1/order/form/create、PUT /api/v1/order/form/update、GET /api/v1/order/form/list和DELETE /api/v1/order/form/delete等端点的HTTP方法、请求参数、响应格式和认证机制。文档应包括订单表单的数据结构定义、字段验证规则、业务逻辑约束和状态转换规则。提供实际使用示例,展示如何通过API创建和管理订单表单,包括成功和失败场景的处理。解释订单表单与订单日志、订单汇总之间的关系,以及在订单生命周期中的作用。提供错误处理策略、安全考虑和性能优化建议,确保文档与代码库中的实际实现完全一致。","parent_id":"079920b2-aa64-48aa-a92d-8decf24623b1","progress_status":"completed","dependent_files":"api/order/v1/form.go,internal/controller/order/order_v1_order_form_create.go,internal/controller/order/order_v1_order_form_update.go,internal/controller/order/order_v1_order_form_list.go,internal/controller/order/order_v1_order_form_delete.go","gmt_create":"2025-10-08T18:19:17+08:00","gmt_modified":"2025-10-08T18:39:17+08:00","raw_data":"WikiEncrypted:9qHpiFX/XrbQzm4K3sHnDKeQ1ofxi7BpK4t1qblkOmeHP5ICQmtKx25CPhfRyI6JBsxUD0cDPTYePaevb5jRJ4N5UfH52R/A0sCoeHgOffI/Z2bCUnX8HfPni76+JvZ/5KiEMF1BtsucVmvnNrZKG/vXeChD7yIQ/Hynx08nWaix6LoUNDGCNtoC7Rvcq5pwBvmvijbB/9dvXWAZCeFb8Zgsh4yS7eXAvzcCJ5kO9KlEIK1mhTS1QbKrJSnnGF07DnKNP9o44QFrJabu6m7z20nwoBIDlsOYN5bnOIonGMyvnhu4o7c6GaQ9SXfZl02ppfoNmPkB5cSaFVL/gT4uF3P3XgrBxqQCng5uzkw9XsWiQgcyHG7uTOnIojcNVTxrEvt9TPvYxEh6F1vSsPpcyiJrfUBKObZ+zdhrA0TTTmd2dtYbNiZ9eg9eNkQbMpa3XgW7WJ2NeBn8xfwpYJnMpByua+fvAFz5wFGUr2+ppDZMWfo7K/+rf7Eb4vDWzdRM2C905l9WJcyVUCkBDRPvNLt//IJf1k1+IjoFeep3o0OH1ElX4hPdp1i8ioU9H4KpWV24bkd6yUFrPGtFZ0b23WjrmH5fA+FVZVzBaV144BT25wE5k4Jfz0nEHDq5GhHw7uT5brs7J70OV+v3fwspfsS/Zn4nB78JFGQOWSi2oDYb6DYJ1X8PRg6nY98WDaXSBTBrk9hUdEn+2KovS0bWZ+HAB0zEK4A3etAUTqne6EGvhXvFiXydju3sCL3OWPTP5udHh6/+DoQxZRtmmbKrPOtfYLLr0kWB+3UD98nG1gi+wu2wMcZPTbafai8kRxOOdMr6zucXJ84ZmHOjecLFMQB1WVRbM1B3jqP3lIcbVYEUpKCVXORnxy4Z0QV6/CeVV3NN5Vk8/TVtXtU/34Z8fLJ8qBu28N/14F/fyGhNV3BSWCXnquZ1IbrRG0fjWzt+02vsa5kN+HI/a9PPqmccUWAfNrJwKdLw1IQrVCIShp/nU/VGFMZQ3yn9yYioS3W+2Nvl3VT06cfIFBEtotJNDZ7ZUZXyr8RATD97frEqc4Y3kxYXLgunvq3o07n2n1OAOb/SIJrdVOdDoP1aFbDb2F/62u0bDND+KP0Ck+T5utpVO6bafk1XckldVoWH3cn9/mXEe2huF4bk+HxPhAdawxi9xH6oLO1EI0gFoLqnLi37c4a6pUs68fciZtR71WPU/dlwhLOd3ix589lgp9vk+tMoijKY8QiAdFLArqL2queZabhWTfmz0FaDJaoReG/RwKphYYsYV1JopUf+LM/Zp8p7DqptZ+Rz/tt6LCV9DQi33goXexrkNjFpAP3XQlgdozNaqWiFvLcf+7ulDXaXa8n7kH0gZrBNCBVJ3sw2C/0ACuvN9ZARnGEJqrpkYD5egpAPB6t+Em5yekNgxAnU2O9e6UT4loHNgE804ky4vA22ysES5j8aqp4BrAh/6u6/x8lE525ri0j3A91C5mwWkYd81t/pOF4o+0YAoBKN0LG5y+/Hi3dIqa0L/erx254GlfIckX3kcIHw3x2mpqvSiGQfghtS4Jgi09lIhF9heuUa01Esc0oxypx1SvuJa/9UZaCflaxLJhrHefnDrzln4Dklv/WOYxn9kCcvpGu+OhHstudVrTU3EnZZrtGfHso3TN10ucyBC1zHgyo121lQjg==","layer_level":2},{"id":"04d0a6d4-e8a9-4e8c-a8f2-bee9fd409e56","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"Apple卡密管理API","description":"api-card-info-apple","prompt":"创建Apple卡密管理API的详细文档,涵盖账户管理、充值处理、订单回调等接口。详细说明账户创建、状态管理、充值提交、历史查询等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括批量导入卡密、充值状态查询、重复卡密处理等场景。解释Apple卡密特有的iTunes回调机制和防刷单规则,提供错误处理策略和安全考虑。文档应包含客户端实现指南和性能优化建议,特别关注Apple平台的特殊要求和限制。","parent_id":"0d28da6e-d972-4227-9fc4-ecf26d5c6b2d","progress_status":"completed","dependent_files":"api/card_info_apple/v1/account_info.go,api/card_info_apple/v1/order.go,api/card_info_apple/v1/config.go,internal/controller/card_info_apple/card_info_apple_v1_card_info_create.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_submit.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_callback.go,internal/logic/card_apple_account/account.go,internal/logic/card_apple_order/order.go","gmt_create":"2025-10-08T18:19:17+08:00","gmt_modified":"2025-10-08T18:41:41+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBn7TEZqfgCsLA703mVGMZArD3ybeGVU9mamcCr0oAS6JoQI7AUsc5kkDVupPir3EyB0ASCWYKnCf1ywH8t5TiWXMOBEd2IXYke6xZIuMmkfI4vQ8pmtl6ZGzsEW+v8ATGdgc/gC3dxkOgZfYL6i3bx5NnZFHluGgQQq+VPTVQLx/gNtmTw8QGU3n/7XhmqQtUhi4VDDzZwONwskeuDx7RVD1h5iepp0jdpixdWIwY/lXlDCPaH0x1lRdgUIk9ujJuZXn9N61WiU0ivAduNinSq8AqHNQ0DrV1Fggqy2kJ543LiR3eU9ditGTLgtpUd2WnA+SMPDbtGFXA7plzUkubPHUayfbLtiF9SaLCjeeQzLLxXaCZFDjbhJP3rEKfUvSfveLTP8MZbpXUiaOwo0iBBAunWuR67P4xi3HyGaj6Wc7Rbpjo5r80O4u4OyiEZ4l9JRg1TBGkLaaSDr/C7TOndwfVJUE8KK2WgQTY6HpJR1RjQas+5wJ6MSkXgBW6xLVoYx/NcBQpDjW7cl8eAlmjThgTVP5RbmLb5HduIypeeuzocGiH4QqnegPVM1giGUeGy58Cb7ODGKt3PTp1wYeiL0SQtwU/JYbXD/S6cUgIhmHxr2kS2FrG1uvfJBjNXcHpCTSknFdohWl/an9YEyvLFgTQVAnFyqcrRVB0lr3kWnyMy2vCNEsY0pGa/Gu009rPvzfEeQbo4m0Hm4ekIL1gjxe/mkewU5ZJXWuDLGiNFlD3I6ouGP4HaSy149sY5nvQFx7J2V2eQ1tV1JxK8gyshzOmvH8Ip9wtihX7hUWzIvF0kaEZ0n3xn55iRl89Vd/Z1kH15/3fgrTtqp4BF4xxly1/pYOQvurwZCRYsQq7Piupu/LXEM5kCzUmnccmTgF5Lnho/8rmOW1yZxvUsftjUd09bZY+MYqkEXmFOybIKyhkzB1vY02SVb3/3aF2kADPdqeVT6MbzSI9TX64uA+obPM0ERfdnXHOzw7lrRirpf0LqxnFGo7NLUx4y+iNe+g0In3o+teUHrkwmPnHfI2iwWJaqL+btH9vtcoiJWbN2oGBK1Ykf6h/cMumzlt6PYMf0LO/PNTm5DN8QwloR4FVz2qKHpBQPDu71WA3+8pjnuUcQEcDyCcWfK4z/OEC5ma1t3IE5oseRPRZhwdawXv+NMniOpXnTs2XOPjCrHiGzQ4PSlZTnKnpU0DOnAGPq95KbuoxdtrQKN7Ba+NcdmGcsmbRo99VpueYJ3lKEi3RhvnFksot6i4ysbd1l4lGJiuM48OCXuTChlxsOT7o/hXc+KIvfqwmEORUZrG0SWAOg+ayZ51XbYJgRHGxQK4ccueaog5sku+qfoJ+79mEeRIEzhu+bqmBpEm+SdnYlS8i1snB5K66BnrTTkxQsbnzJ8MkRrQW/VrMGN4f9PrtRsUvXacr374SH8Rx031NkQ3V0fj8cpfed0Iz6BtwsDkLfEUNUtgnKLw7FMQ89wJuK8CMq2sp4hGMNTf74OEae+4Hw3BfIbWNXwtxpAsoTZ/iOtstJPqEC2jvsjDSUm7tc3qp5qoZki4dqnVm4XhW9HzQ2uUd9sgf9x/5wRA+QwWAVu4CbxLtI88+J3tf7PSfJLaEZ6ydbvJfyVwgd9vWt9gEmXMeJG3CIwOtIQBoKIHS6cLMw==","layer_level":2},{"id":"8d814eba-e2eb-46c2-a59f-00ad5b8d5de2","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"商户配置管理","description":"api-merchant-config","prompt":"创建商户配置管理API的详细文档。详细说明商户配置的增删改查接口,包括HTTP方法、URL路径、请求参数和响应格式。文档应涵盖商户配置的创建(merchant_v1_merchant_config_add)、查询列表(merchant_v1_merchant_config_list)、更新(merchant_v1_merchant_config_update)、状态管理(merchant_v1_merchant_config_status)和详情获取(merchant_v1_merchant_config_detail)等端点。提供实际使用示例,展示如何通过API进行商户配置操作。解释配置数据的结构和字段含义,包括商户名称、支付方式、费率等关键配置项。说明权限控制机制,确保只有授权用户可以修改商户配置。包含错误处理策略,如配置冲突、参数验证失败等情况的响应码和错误信息。","parent_id":"c423075a-af3a-4aa8-aeb1-eca97be6acbf","progress_status":"completed","dependent_files":"api/merchant/v1/config.go,internal/controller/merchant/merchant_v1_merchant_config_add.go,internal/controller/merchant/merchant_v1_merchant_config_list.go,internal/controller/merchant/merchant_v1_merchant_config_update.go,internal/controller/merchant/merchant_v1_merchant_config_status.go,internal/controller/merchant/merchant_v1_merchant_config_detail.go","gmt_create":"2025-10-08T18:19:28+08:00","gmt_modified":"2025-10-08T18:40:25+08:00","raw_data":"WikiEncrypted:BG3lFnKLVTvBR2vGYwCPyUjsvllLhwi+whN+Y9/3c+n/MVnEm0gAKHUg16cqvzionAovu8HBvB65t8ZUZvp9GL6L6zCIgNolbfADOkYlFi0gLvCLW5GthKYW2OyFJkv+Wiy7IiIM5FBogfrnd8MPC3qDKEc9BRAwUrXXQ4eg1xLyTqeZAjcseBpq5uxnn2YnSKlLmr/9TYRbRLpfhCVmx2v3bsvpmzS3l88cNrXihzeGgZAe0u0XMjJg23lUNRQUAPGQpmFzpr8YNcCmmwQXEegXQa5wn7x+1fqAaOCWNv6QR8KK7YqeaJiH+4ZFQSJUSRQKLHI4+f2fywPi1r9vL+zbfXVGb+JmeOYkYPMpk3JWw53qKeDKJu9BcFspV5hdyjO/RKu/pxkh98zrCD17B0yDQ/8nTkrY7MLN6/uTk9WTegMCcYSzUTAMB54bITpM4PEPkHuGqH5+zi/3DuNETFmz92DlGFLDTa9yb7d9ygFUdnwO4fxsxCFX3RTRv2WCGmeu1cKMPbP9Z3C16Tnds/NEMqOcQJ5+uNcMoAqUFM37FJxbKS56qe+HdN41oTCVMPDe/koxk93uew2qTfbhMQcrbB22hbLuhZiZL/Nz/JGozyLuJFVgazwKbyS9tegQtAdeAAiH6YRqBzRGq12UGPKk/wA7XRe6NArMYtQndqbs3e9utAzpj06PYElnikFszLfsPv+6S8TDavLjizN0MG8kAv8DXbmq0lW8aVpaFOMDwwIak3/SNffLEjn2aHURX8fkWDAQYr9GL2IQhgcR5xIqajU/6TRHu0HMQXHyufxJDIV8KNXziRgb4mOM4oKoOuo6rYg82rziDkeuLkZpOUAae3n+UOyMEAxJxAb7hUcddACeoukrdVCs52zciHdLr2KOCzF5PrVTTbJ2JDqYi9CZPcpA5yiBLOf0nqTU06YPZRv0G3UPLNiPcG4fEMhRlXjKSbLwXpiqcwGwaEH+lwST8np1svFMozhb6kfLqrQs3JsP08vqL6396nqX/+UFLg5J18pGPa3n5RbTmDLLzHrA5gNAhKzgJvjVCCC5z+uzOZTraeJi8Ya/toYfXIoKBKk0tAtx6UObQLivccbjURb+Mb7HpUVsxXrVw8+wbRwbSXudsT9jkak1wV1p5sAtiGhwT8qmMwNWrDAlp9Q8Deyl5cFpDl3+VwUGP+q2hnetVvVV4l5wPQVkew6qaLYIiq5+jHZ9wP3Ew6VfNIgXpTNbZkaRF2jwXkq9lBrp+u1Wx81GKLGVHe1ZMutCqRNoNEQePJOMWKYJwH5AaLJ1DfcZK+ODkaAACpGGGSOrG5tnLhahBZ94j+xZ7Ozp81lpw/7giOl6dXVjNuFBXb0GKEa0rhK8dV5bYa6h9pqNe626ZbtT0JR6XBPMYDTNOnHZC7qJwZ0q3Tyexl8uCCRgqFpmkI24FPT8ZMBoO4Uo/EXuzWkOCulRgQVQmDJT3UByD0YG2N71EX3kWCB6aTa9CArXptCKvrzECHqM9vKq1kpiulPz26R009tvbu/pyigkeU9T/h2lZJbH6wrdzI1umscSVrgehz4nXP+6UwSCHWPg/b2T/GtznN3JaRqcekDMb1AnnOWzcTqHOSkGiaS/fRyrTcZxaZsMhlnvVmiwlYv+Jx65gvRdpmd+rMAun6AVE8b6fnwu6FHtjEuJ6J/9vhGrxnhGieWSehYq61C7kjT6Ld5BKHNNVU36Oc68Bm8sNfWCSpVfq4jvEpEsPMUtkEkK5DUC39Ncdi7mGAReSEbJGLScqHDn81+03RdC7BgqYBJ1QLV6HB0oqonigLRLtTMZIlgIhateavfY1ZB9hDQji3mD2BcbDfAHUNte8iMkOPPt58lODAeor2Nuku3tXw==","layer_level":2},{"id":"162500a5-7167-4984-9744-2802fb00bd08","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"钱包管理","description":"api-fund-wallet","prompt":"创建钱包管理API的详细文档,涵盖钱包的创建、更新、查询和删除等操作。详细说明每个端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括钱包余额管理、状态控制和权限验证等接口,提供实际使用示例、错误处理策略和安全考虑。解释钱包管理的实现细节,包括余额计算逻辑、事务处理机制和并发控制。提供客户端实现指南和性能优化建议,确保文档与代码库中的实际实现完全一致。","parent_id":"b24f3c8c-5f2c-435c-99e6-6ee42c47a46d","progress_status":"completed","dependent_files":"api/fund/v1/wallet.go,internal/controller/fund/fund_v1_wallet_create.go,internal/controller/fund/fund_v1_wallet_update.go,internal/controller/fund/fund_v1_wallet_list.go,internal/controller/fund/fund_v1_wallet_delete.go","gmt_create":"2025-10-08T18:19:28+08:00","gmt_modified":"2025-10-08T18:40:13+08:00","raw_data":"WikiEncrypted:gLdwQ0KTVfy2nZNoG+5bdanSkYpF//vxeQ9sn3ZD2PSyqLrfcO12FxqvLFH7clPHKW5YbGibCYaowMn6lbHZzM2+D/+NQ8EbPTwbM2ItDeyWUppEH7xgv3AiH9Krc9f1tqqg/yEF2noAjpujnYGl/yc39DfocKeu4byCrycqWZtsKn7z8BfZWXm3BD5g+RuIDLJ7BrdFO3Lz0d4Qhb2UkZL2yJUgQQm+HpJBhHU4Bmcbg6XT7s6tR3ET0S79uQO79Eq+SseXl02Wjd5m4p++/UduQxW+uK+z90QWkNkcFX9+8cePFOiyvGnukbAut/1ISM30v/p/lHnF/fIsFm5+ZUCgwcnq6sUv/yZlN9vCPkhwP1v2gy2BhiVMLGyrMQj3KsbOGKJCuZuz9JvheVxe69JXkYwMpRWHy8ffEvlGLRyUmflEPC36DEc2rHEFh1ROikU98jAMdCcJuoWGB5pm8IIWKHpLJpqGbo7S6BcK3DFk9e7onzo41kTNHIWwuBeKs8Rj+dCteOq+qceIxmpeFxpJD5EBwPZAy0eMsh7VVXW6OKHkzsvp0xNzC9pXZS3T81NxuB0ltRpTB/PoJz9lutQ+jcoVHAVnRMNihCMf8drxVHu52P9371cIB7Wgj74vzYuthQxTQhZmEquJx+tv4qj+AUz2RdORnaTbixlnW/1B8783+OdO+dK3NTDjIC/NvN2iSh3tk5Ti7enHir2YmUDZLkpDGMAkEtCnlawu1IOej8Py4J/2iK2WSVraS8OGJzGrqye4GN+6veQo/wHHC0ls5H4dlBnFtQXkJReTDtQWyohRywpYK+nIDNtor3AS4ApdK92Nvud/ZeZ6ketkMnxbB6NEFQo/cwE2uk2OYUOw06tjYaq/5v7/hYJk6KcUqvbpjGE1xvCvans71HuUtWQEdCmNHOYfapQ3L3Zw+i7jp5FS4/2d0CUhKYxE45RYDXn76YmXAT3TWFq/vVB3H0PTmGTPzSdbZgTnpmkE8zlJgiaa28zUEve8vSj4LIlGRB5HqxAnURcdAL07y8JDXJkVU4+Ii0w3VRO9nR3G8fpBDRKLbtUR/wJVumFHBKPsIrMATgUK/0umDVUJhWA4A/y1Ks3Bi8rbfU1x5aQB/3mkqp3ZEIb7OAUvA6D5JksuqsTwNp/TDXAOV2h3aaQABECpmAMxmqSsVRsBZFL9xzR5J0W1zmlSDm3X9+9dYckFsOrKMC181gx1iGjKSninZZjLEbgIciVnmdcOPH1j+e41YfRLXnkGc7v8lRoUsNbZCp1SueQKES4eEXRc3Z7ByBGWSDIY49n5W7ASOensJsE=","layer_level":2},{"id":"bb872064-72df-45eb-ab34-4003a0fe8e62","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"IP限制API","description":"api-restriction-ip","prompt":"创建IP限制API的详细文档,重点描述IP访问控制功能。详细说明restraint_v1_check_ip_allowed端点的HTTP方法、URL模式、请求参数和响应结构,包括认证机制和权限控制。提供实际代码示例展示如何检查IP是否被允许访问系统,解释IP黑名单/白名单的实现机制。文档应涵盖IP匹配算法、缓存策略(如Redis缓存IP状态)、性能优化方案和错误处理策略。说明该功能与其他风控组件的集成关系,提供客户端调用示例和常见问题解决方案。","parent_id":"71487087-d57a-431c-af0f-f9ce8536c80b","progress_status":"completed","dependent_files":"api/restriction/v1/collection.go,internal/controller/restriction/restriction_v1_check_ip_allowed.go","gmt_create":"2025-10-08T18:19:31+08:00","gmt_modified":"2025-10-08T18:41:29+08:00","raw_data":"WikiEncrypted:C34GewOyK1SlumqKiPsSg9UgvWUQwsNKohKsInf5hSs0QQfDn2veT4X+kRCmlL8V7Pq4z7dhmmPz1VcC+RU2Qf7Fnc9kRUMA5sZH2EG69D6PojpUGyAFozLrrMGPL4e7QVaF+PBD1M5l0d7XTmfQnOiPxZyOiSH/wKOSfnTn1RtDReXqbnwGJZWe8EKWbTrMWS7cwn11oOcdQPBrjFO4aveFCFRDyklv80p/CDPEsUtQUocJ8WY6AIqmB8RkosQemHvb6jmoDYTQV6VYYiXtbw486CzKDfatNuMU/Woe2sp78Bhdi+40HqSeohFwnEaTpOmByLU78A89tk/zqDyLN3kVt5AmUX2hGwri6AzzbRbj2DQXG9SNcjpra2J8QQgp8lp+4KJqjQiKeifKyRO1VzaszauCuZQW2Gbq/o/Jw0/7tdDCRpOSbUsaKgNEFKz9MrmhuwIu0hYM5JZIHZ8RzXyOStuolXALCpxMKwfT+OG3QA1OjzrD7pN1K5RtBfyHP+L43u6j4oi0CSv2lwnAtntFYrunnZr5B4l59wIBfLoN0swodz+gpArcDimzwrGT7SxLxA83Ijn8577jyI+VvSMplyH2+X/pGUYfK/jrYAuRDpuFEshvwlEAatbMm3hFmcdA1KLVg99qPEmzBGxGfzK1HWiGhanPJy8LAfqab5m/m5tk2JidZQIC7LXJegWDhatyzlxXmbzmWQ43U+TMpWsw5ul9sN8hEizZnvEZwxZTBFbRhlvIT5WUNILc80Y1XLcq29DmmQMtiuL/pbI1VP92gPW24t8zwuBmx8SV8ohNv4xrdYWkxreJ4hHa9VrCS5l2c67bPkuUocN/HtWEQtN5RFaQVITEps9MKJwQxclSl3LobGjmC46snYtG5sfFiglxxdNuLjgVz2MByxzX/OWXTZryfkJlJLA6kCvsrbLoIiq6gC4ajqsjBL8j8UCWGzzOjkkpdeXmfA3nLfMUhym8Uz60JfjHAc/y0apBiN9iUqIZCopKb823J9GeDx+YSnwZquVQhUVaxV0MJrBCE5/dNNgT+Yl5QI6AcJQi4ZKiu+Cvx8mInSdnZJvbChNYe04+73yQIMw7x0iqFMEqxKQSuXxfslbn/cNYoGfAUpv4xAvw6BbUOoqtWe2CrXg6nYp36yXVG3aFtfIazxPDGQ==","layer_level":2},{"id":"0e3e4dfa-8842-4108-bd6d-6cde149b8707","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"Dockerfile详解","description":"dockerfile","prompt":"创建kami_backend的Dockerfile详细文档。逐层解析Dockerfile中的构建指令,包括多阶段构建策略、基础镜像选择(golang:alpine)、依赖安装、代码编译、最终镜像构建等。详细说明每个指令的作用和最佳实践,如WORKDIR设置、环境变量配置、端口暴露等。解释如何通过.dockerignore文件优化构建过程。提供Dockerfile安全加固建议,包括最小化镜像、非root用户运行、漏洞扫描等。包含性能优化技巧,如层缓存利用、依赖预下载等。","parent_id":"3c6ca985-3423-453c-9f11-d9030f798abe","progress_status":"completed","dependent_files":"manifest/docker/Dockerfile","gmt_create":"2025-10-08T18:19:36+08:00","gmt_modified":"2025-10-08T18:41:44+08:00","raw_data":"WikiEncrypted:h7ADvj4WLJHyulzCl+z7kCSkV9pkP4w42aezSpM8tSnz9DM8PXCI3plj22r54nyHKillw//OdJftbMVj1iHO7i3EACtEoQsA71iwCJ5DlnOvTxQjZAf4O7v713BlkcrCcnWhGA+8tG/wMGITGEvZUu6BRwqZhUXr9xxPIbRR3jEc5tarJ4sMs86NWoRvprRsZhmvuAmFTGimqQ7Na/92ZYiHHNAkQGH886Q+g6gmd5o00jhdtxSGHkOMb2NYcrDYYaoREGCEeyMD9y8wqQVgR4FXlLFSSQuCnNePrDkxqTFT2Mu1NaAmZI+ruDl4TBJBZdcd+jKMaAZt/44HA0t1/8if902Z+o4jMReQfwh0jYxpkJJJi+44WtAVk/xX/Ou6dfzD1O/CC7zgfrJH4eQHVnLNMy6PHSg07dueN5p9KQeG27NEWOTFua4VeWM85/I/n13D4iFgzR0Wra08nfNSpks+F5Vl6gBVUjmxqLbdhHI6Jn/LkX1PD6NbvTakGv0KIqdtqy7uhgJIG1bUIc9q9g6v/nzeh0/j6iI18pSOji3l2W+8XfiF5hcdbG36JaNdfSWreg0ucQn37Dwj6ykOvvxvo982hkKcsIHcRDIYaukC+SGHbChag4WlrTmFEdqliI4bUzqlx4v/uhMDSvrB1pQ92u9Wh2ecvq1BePVHNTT0SN15dwCaHY4XDmsLk4fytUw0Ff4A312ofSMlKEIDVXqdzOTeB3jENRRi9uXPBrQKtGbN2N2O+rqtBxVrM4F5zcIn4e+WZP6Pmbhshgg9xygQjQf2mvxNRDX9KOfIfoTgqONts+uVJykYo+npT0tL6Ih2lFbadsNVjMVDYHfufrSlTPIV0eBMD1UfEeUBCX9+N0wusLPcyUdSwgEBRATtvyeMoAr421D+XqSccif3R6FvgWiFpJrGcGql6SDxeI1wf76ZdFeKSEDEV0/mGJY06DohEo+6NhCZtghVhp2U/IqYtszt4KAFddk8dFtxjx3zAFuaOY1rRz387jPu5wnr0S8mZbuxRxKwh3cFJ1H6VNlO2FWbbZ7UYOv7mmU7Bv4=","layer_level":2},{"id":"27a44e9c-003b-4f06-9b87-2882cf3c1e08","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"Makefile自动化构建","description":"makefile","prompt":"创建kami_backend的Makefile自动化构建文档。详细解析Makefile中定义的各个目标(target),包括build、run、deploy、test等命令的实现逻辑和使用方法。解释每个目标的依赖关系和执行流程,说明环境变量的配置方式。提供常用命令的使用示例,如make build进行编译,make run启动服务等。分析Makefile与项目目录结构的集成方式,说明如何通过Makefile简化开发和部署流程。包含自定义Makefile目标的开发指南和最佳实践。","parent_id":"2b16f9fb-3e48-4abf-a52c-5fcaeb1467f5","progress_status":"completed","dependent_files":"Makefile","gmt_create":"2025-10-08T18:19:37+08:00","gmt_modified":"2025-10-08T18:42:23+08:00","raw_data":"WikiEncrypted:Xz6OVSa8P8xcLcBGQtqZT+Dxn1zjJpWxEV24N6Fu+jinDqPyZqB3u0Luse3ArC1hNmGPMdGO8PFnUOI4dBiXnRprrnrFLNHKqkXdqFAjH6egtx19TUYt9uswGPNuEndVx2EB+iEjV8LbEPzVXN8rNtI4vCMRjbc0Kz6u/M2ZPdFq5RkhkqIAXABX3TXjsGKi7FAEdJYJukF1yxjLLxmRA4fbfh+KLotOtlU1immC1ELsE3u1ihg0K0ss8PDw3gQgmSNE9e6eU6f9DYLRj9W7CBqpQG0eNqJQoLNH5jk47SG22f7kwsvHVOdJMxQyhIsTA6fd6yWAx4fBIaE5XkRoymRNhhwFWPM1aNTCKitdXh67VS3bovSmZamRIIvOFk4NYx8yY650VNEwaQL8/6agTN4uqs3YRFSX4raNv5gy0jLwASjC4oYTbDbCyBPTc98w43OxYz9k5ovTEY3P33P5W85oNfFnvFdr433BCY/jhHJF0mdYulXe6uqR7UIqlVwo6qZgeBVUjuSR2Cr3dP/ta3qv0kv+uPYChbs0KuoldD3+YUJkgtfS4hn72+3Hn0Z8qQFMu9ggbh/7kmUM8Vt2qOVbQxJGgfjpXxFMlFKzyDSGBxSSby/EfKBTm/QIV96E9ItWWGO5taPQnHfedvNFPHEQHGLRRhaiX0r/Sr65eLmku3+pcC3R3X4OzUqh+UvWGQ8EpGc7yf6eaMmW5H4ys5tOpDWFkZLzvhLmtsmk+NKDebuNejLXjsgR9AaC4KV6kKzWiXncWjn+34Ds1m5/Dzq8n8dl8nmP2M3eW4UmpzoPQcjXgup5LTVMLW3WYwfjaTHv0DZipmA5PiZ/67oKJAkCWZtikN2eH8aqazUJZw5xmOn8kDvMUeffjTQKVtoZXgLJJOJ65a3DAptO1kurzv5QOOgY3FGjgqpwJLURtxudQgR+58qc3fXJHs1wETY9M1nKBoNDT0Zik/L5sc4aas4pAdnOAyfcQOWQ6YcRQQesZMeVIwkrITWh/fqX+e0u","layer_level":2},{"id":"de16dd4b-ba68-49bb-97c7-cc34f0ebba00","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"Apple卡密账户管理","description":"apple-account-management","prompt":"创建Apple卡密账户管理的详细文档。深入阐述Apple卡密账户的创建、更新、删除和状态管理流程,包括账户信息、钱包余额、状态同步的实现细节。详细说明账户生命周期管理,涵盖账户激活、暂停、恢复等状态转换逻辑。解释账户与商户、订单系统的集成关系。提供具体的代码示例,展示关键业务方法如账户创建、状态更新的实现细节。记录账户管理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案。","parent_id":"f7bc4c8d-64a0-4c2c-a17e-cd38987a94ef","progress_status":"completed","dependent_files":"internal/logic/card_apple_account/account.go,internal/logic/card_apple_account/status.go,internal/service/card_apple_account.go,internal/controller/card_info_apple/card_info_apple_v1_card_info_create.go,internal/controller/card_info_apple/card_info_apple_v1_card_info_update.go,internal/controller/card_info_apple/card_info_apple_v1_card_info_delete.go","gmt_create":"2025-10-08T18:19:46+08:00","gmt_modified":"2025-10-08T18:53:45+08:00","raw_data":"WikiEncrypted:ngLqLViTt5zzUmJHZ62DoBWmlVTe9rZaX5hosPNAApW0T1uT6n4zjorEkdqGh56+GZE8RPLSrxCBo7Kg1h12kViRt58Aj3n8+FzdDFp7bvwEBscr6hd0N2fuTcwkJL/ex9qIUrnqZYabutinVv60QecvClj2U9jtJxZpAIgdWaLYvnx4JLGxZ1PaIXSJjxhYeffI+Kt6CpElT/s2ToVoJGivcoigObBr0HJ6d097ae2TV63ruyGno7Xko2G6uivsCIGmeDtR0XpdXNxf1hEoY0YbiUk5inhvQlOAofkrUtJHVgJwiAr78gvhUxe/KBv3jt5AkQAwkxyewfayfAjclkxbeMw+qvW3fuX8pHO657HYTRXporhQJLtrYLVBTAK0lj0AfcPcWsj6ZOHWNcdF9QWJnSHe0fKcBYkL/IJJ1LQRt6Dc23++VcquH1UWlRbjyWi0Tj7FXwoPEXjYNnrNh32Y6Q4aZRmvqO6O4dObEOt92p2LNInowxSFhBIJJN37zsTlOrZ0r4tGkxNLZa3YuFWxohcNzKsWkEQ4j9KJJrqTS2AElZlozyZnCJGDdJEyfFF3fNih1FjGGnWHdyiuEAiTm1ufl1pWp0t/J9rL7OhDgWJjQlPLnUmXR9dE/paLqsw46h9KN2dEuFCuZrqfHFcaNtcE1z8XySTT10aNAUVmN8dgmhNrsWBQ8hTFODlWyEnhwjx0MW8WxkeKH5fMheaastOl6UyOnUXirhnItmocSOejN1XMRc6teTYo+cYMQM88aOz0x/Y+6l+SSx1uYEeBUK3dLQC0iPepSXmtMfR/Z0fSWrX5xVtSyKDCsbCjtVeJshAmlY48DfmpRHKz05xkFNDtwbUI+NXQvIEfAOZoGlG13w9aW5vot3TtODeWAPEvz9NR61orto0a5NwrAv284Nb8ZClaChbu3xAIpVJeBrIFAZ753X8DIZ7XfSat69myvxi8yo6Nhlsx17XWf/I2ZmMFMFLHvdwBJK+Iw/IFGLrwoQq1idTC3J2exp5DFuhql1iYPVvRD5rCpz4VPjnrHiqWvMlhzUk4SP0sNyWmoNsRuQOL6jnUZdu5GfLGLk5vqYqjeZyDlUZey4Rw71OqsfL5l+61osSWlrIBnvumRk0sDwNCSIQXwo+1ekK1pua1sLGDIxDSLBMw0ddS9onSVCafMFiM5buKXGRYfrl9UccI65ZgqkLvK+a3fe9BK9X5sJDxkHQk8hpOWEdr61SZBOZdiEL/HZwT8uCvfbLlbuX8RMhkL479RpjSvJFcHatHHrpxDMRQqUB0AHYw187wmavHy7MfYzFFfxwm34pTRvyn2XF843RR4v0Bz35dYLhxuHgiW3olg8Fjw6oDGUaNri894hp29rdsiMCOqF+EbAbfKIKlxHJXYvyCQaplyJ40lBaKxgWlvP9mPspmz3IrzW9hg5DAZFDA9g5cIqXzcTSE8rxyHh7QD2/iOzjfPT6VvXFlDgfolfHimzmSnbJ2bD6znvOpONP+k1A5Q4PRlzNieGHn5eF/GPbOcpoaJe+NGlmhSUvLxLjpHG5AVuJ5PW8rpObrPHpi18GSZJqRmN2SqbB6hyL91mLDfw+o","layer_level":3},{"id":"d47fa6fc-1893-43bf-906f-c9ed0db47dd9","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"京东卡密账户管理","description":"jd-card-account-management","prompt":"创建京东卡密账户管理的详细文档。深入阐述账户的创建、更新、删除和状态管理流程,包括账户信息的数据结构、验证规则和持久化机制。详细说明账户状态机设计,涵盖正常、暂停、禁用等状态的转换逻辑。解释账户与商户、支付渠道的关联关系。提供具体的代码示例,展示关键业务方法如账户创建、状态更新的实现细节。记录账户管理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案。","parent_id":"d56eb845-7c0e-4be8-bf3a-239e3c0eb5e3","progress_status":"completed","dependent_files":"internal/logic/card_redeem_account/query.go,internal/logic/card_redeem_account/operation.go,internal/service/card_redeem_account.go,internal/controller/card_info_jd/card_info_jd_v1_jd_account_create.go,internal/controller/card_info_jd/card_info_jd_v1_jd_account_update.go,internal/controller/card_info_jd/card_info_jd_v1_jd_account_delete.go","gmt_create":"2025-10-08T18:19:49+08:00","gmt_modified":"2025-10-08T18:53:38+08:00","raw_data":"WikiEncrypted:2Tw4z8NsJjOlKl4tOUQ4rTBhpacpL3B3JqOjeV0quJhHeY4JvPnciyP+by1YUNeRemQYuM9NFpdXQryPPslPNYiO7OHybuYaJ6BeXEVnWJNP0Hc6AjitH4ckNyCULFHcp+wSQDZz3ViqsdkiH37hAt/G2U9cMSN10npfdksX3t1kqoeyoCjWC8sUn2y/fOrRhgnJ6d1t+w98D9NFg2l3cfEHSCXaXgrFriUYu7M+nrGAPmV/OXa85AyUQ31H6gAFdZ8QapoUP1Byhy4E9sncB8Av7VOX2TPrCwbB4mzEvOj90ggRC828l865qy6LiH6/HiDDlMBl0F5+VmCgYxW0aQRsdBIrAhkA0+6UFDN31Q0fqBAcE+hvxEZnRYipyhEsK5bBdZ2nLgpA0ALmhMJjNWfoDM0aWOozPSY4IVWi5TIMYPxishFPlguSqANCgmyBWG3I1YabrAQzocipsrdleiIa6O8HvuzA0ZfWf/7uLmSkChlMZ6FfaRYmceZDERpoTEFPinHyZfk07tccxdgO/hUPq1oPzoeVQsbp+QGcDu6CQc7IQY9YFXuaOG+1TZwyMteoCtTK4xccjt7cXiaoqNDbFL40nPJH7fuyO/J3Raqbuzci4SzR1qCy4yH9bbiWibo/iMcF1YqWu23Qw5ArcNuBMeozKrGbrckDeXNB7QF9JqJq+EyTTUv4IKBMa1HYXOtSiAJ0FMzeJi6MbohECkSQf8r9D7L47E7HzDIiI365SVV8nzIPJb6ykmMBSW7zQlCpXPD06wp8vzxg1IozlrJaqqSLeA9NjLgvlEQkbvEoFDmGMKyohLar5g8i3JLTUNwCX5TOaBsM9Hq1O7/gEHgdleefbNDK/7gpWiTIn9CZSUguGxIGI3Wc9OSZG9X8ZIYb7bP+cCZTSc0OV2QqXGnMX2wf9mPu+0IDffVayfJ4OI/sB07G3ci0wCPf3wWtARBjTwvjOslIBNhWKZXlPb+UGnPp8kT860OmcSXIUI1JfDVgvmc9+D9uboS7zY+H1ELmZdbllSSxlV4wfX8m7X28vSU81NfA97rP5019U1pAVmjMDJ8Kx4DR9GNXpSzzPJfFQcg3Chkc2G+uQBuQscayCwlD9Vm7QVirmJO1M6MjjszA4gN8T47CtZxV+KP+S+n7iGRnfkmmDt/7EQPr0Q7rtsGiWQUzf3AVzdECSSAfN4t34WUDTFH35rmIQ43R3l3g8pxVaVCKgHXCPhijxJKNnJPpRdYXhHtJL3yQn5K/OXDTCC0bSk8nsIKVxM4bdZizcgdI91YwDir88H3gVJ+sjFf0QB2K3r+v1pvNvd8C/m+FGVi+C/wRi08R7rqHqYzLf9eNnovxDHg1o5nwO0Glxf94Xp8qP+ds1jMO2GQz0el/tpnFC2KQJ75bQ2qR5YuLAw4NIN6OU2HFBHFPdmsoUrskT6RQ+A00Yig8aZGrJY7JWnC/SAX8scf+RVqo8NiuOWfBmhtX8hO3ZNKQR22wtZZCoV2SNBxXhAkYzITd6ZV+0EDDriu1m3yEzEQntxYZOUmlOl9wXta6bz2UuSV4yDHyqaZhbOPF3vfcfTE=","layer_level":3},{"id":"3ab7071c-90ec-4de1-8d64-d414460e61e3","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"天猫卡密账户管理","description":"tmall-account-management","prompt":"创建天猫卡密账户管理的详细文档。深入阐述账户的创建、更新、删除和查询流程,包括账户授权、状态切换、认证状态检测等核心功能。详细说明账户与工作空间、订单系统的集成关系。提供具体的代码示例,展示关键业务方法如账户创建、授权回调处理的实现细节。记录账户管理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案,如账户授权失败、状态同步异常等。","parent_id":"8137c301-f13b-4054-992f-c556767d7c45","progress_status":"completed","dependent_files":"internal/logic/card_t_mall_account/account.go,internal/service/card_t_mall_account.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_account_create.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_account_update.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_account_delete.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_account_list.go","gmt_create":"2025-10-08T18:19:56+08:00","gmt_modified":"2025-10-08T18:54:12+08:00","raw_data":"WikiEncrypted:pmN7H1JF4+HQF9n9w8KwRUnUfuYU1Ccs6mvDPLPEkeDmJDEzqB+bbxCn9nEKGkJ+ngcQ18ukCSPcWXZUH42B8jgpl4li2lM2GNQoVVNwDi4YlZbrIo4XPZlxyuqNSDhmbbBTv1ynEvzJYd/R2NElCmE25B+pY0lx89xG/fuOSBmrDiwXIyurbfrkKNIX4AlZcVOuBCVCAHKCQKlIKkZILWzUMa67oSxBs9GHdxiQv2QwEYo2X0jeitURbHY15W7uucFvRv4IJjm0SB6xlHOvkJ+HeEXh/txt4PR5gq0EexNxOmVHZ42SJoItonwbQvI+mgSFQeafd4MG9GEYwSwR7aOC8SxbRrWeMGJIpAWjXw0CXiYHmvsxomZ+vMeLOfFGHKLxhI0r6Ly71ZkL/LxWb3Nsm+cdPcANDgnA+vChTAjV+VjsjPVNjzwgEh2HxejBVOb/wJHMdPhM2TDRLBP40uh6QVX1XDYe7TI2cCkecUcda9gquJVLa91TAdNJNQ18zxiiFPdIG0wy3SjhwRvHiGJwDVLO74gxzh2uEWdQ07b3hW5QEZTuF/Ifpi/s6QyLdK2+GSUD58yy7K4Gvtgap3JNBtN7l+GYd6hkuPb+OqYWBcGPt7zQvXKrR+GmKf4j2FnVVWuOQrvyvtT5xlxm8dW1lPqyFM3V6f6nQItxL4VTN3P39hfKuO5QjC2tDXDxngUxHow4LA+Y7Q57RXR/liAToZiNZdy3HoFusvNFjwRYtG4D1+qFr7nGnTKm/pckOGgTC4LsugHBPweDv+5rjBB4IU6hbgyWTzj0HEVdPZDmTJNJqrYHR3Tk7qHSx5y8J7/tnyLmscLH7Z19CxLBL5Dy8xv9ZDzhtKIESbuuTtwvODZ7v02zCfQnzsCDUJBVZWiP7KpcUmziCLYaKmDdW/KKxlQz2UMf0x2FHau0H4Pje5JYHEO1nIrqjSD10W66aUHXAbZzIgJFetCFDSSWidErGEGRQ/XZdhpLC5NDppfST7FkSlbjZOX4yZ7qAiaewMPlXaQM19x1LSAX9p1oT9CSA+LcMUEhrnG0p7KkAnQ4XZY1zE2QCYSNUKOSugZnlflfJdQ/dxKEkYblIFCAC2C029FP2kP1VbqlwFk/mzy3E+YZNHt6GW7RCNU1VsplMW4iXdJr8Lt1TKqK3fOL2UnegurKuUTJWXJffluzXMYH+C1R9UH6ebXluAjEolk71pgux92vB7xj1LeyY9uCFDuCPDT2SS1C19IEIiJ+VwZCWFNt4BJ+fWwUmRJE2YmYIPDzd+FwEF1chxEyYAnm27ls6O/L9DHmbbrNc4gjRlRvSHFhhyUwVClc7a3WQQr4GTjOomLo6c91N7r44ugrSArlkTDz4c4xV4WrIedPsmgAVQqBZy/NHxSK7uUXiOoL91RDCxbCoNCisgkbSOfR7hDoQc9FCBcPa7nuLODnBa06Yj/LtFfB9px5X9kkBpBYMRsg4aF5Ztvld5slD/ZdrCtECopJ0QQFtnh+DfxpZKxIDs5muAcHLwLzQRmj3BTxRidg9IwQvQJNyyt/pJ3EgK/aLgV54jfGrcKCPzytribUgu6HvWM0ZMC4WKEZzTdRsqdRdsQvwUpWo1dwaUAlESHSTahkPl3I4I8AEZTMw/rYMsajYlspOKm+oY75ZkdD65k4XRAdToahanZWubFhuB0PniX1tyhx5mivAkv6X+M=","layer_level":3},{"id":"8b0278d7-2786-4c72-ae74-b9dd35efed2c","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"IP记录管理","description":"ip-record-management","prompt":"创建kami_backend IP记录管理的详细文档。深入阐述IP记录的数据结构设计,包括IP地址、访问次数、最后访问时间、封禁状态等字段的定义和用途。详细说明IP记录的创建、更新、查询和删除操作的实现逻辑,以及如何通过Redis缓存提高读写性能。解释IP记录与用户行为的关联机制,如何通过IP记录追踪异常访问模式。提供IP记录管理的最佳实践,包括数据清理策略、存储优化和性能监控方法。","parent_id":"6810876b-78f1-4c9d-a2e4-a82d03615272","progress_status":"completed","dependent_files":"internal/logic/restriction/ip_record.go,internal/dao/v_1_restrict_ip_record.go,internal/model/entity/v_1_restrict_ip_record.go","gmt_create":"2025-10-08T18:19:56+08:00","gmt_modified":"2025-10-08T18:54:37+08:00","raw_data":"WikiEncrypted:B0ODZirtzWbsF3w9bcSOlHc1dv0P5n03vALNC28DzA/g/OMiv/MAU4WTtzGe+VPqGMG8BJoBvLTAf9atqzKx7iO7sAtYjJzKyHysTAjh6GlN9xrWaHjlXsZfgHEv+81WvJZb5pYsVC8QWPqJVnNT8ZibsnLhkYB7ItAExxnC/n9eJSChUPIuUTXph/2RBUm4TmQ2rlWqFBgHwTBasnwLhHA9JA2rBmoWCSr/mleYr85AvGyKj1Nwj9LmM7seg884PUu6ssOdfBhhstMzCkFYvEZCwGb2hfNGMOXHWYIEdGnmXU+I0e1s5FsLDR7PBwweX9pBVibAZ19zNP6rL/gerTzeXHI18lue++YWXgPyDDJ2hRZ/MPBnW9i/HkpDh4mpc5mWUqmW0zT18UuMaQzNIiP/k2hhcfrrjUZtVFahLteOLFzxA77owqtwGtqziWMDCCx+zQZWO0NcJDlPfX1yXeKuWCjCp9axM8SmGkSuSq0F1Cg40Xurvg6ACvweBhdwkf7+K+nb7hHj4BfH/C4L5Ph614a7EtOIliYURO+uwYp5PNYhsyuXef5OqLMd6ShcgmIdFu3VDhjMZYbDz3yCh5v6/D1Obpanvvok361KfEwGyIqRbz3a0n5jmaVklS4xmje6DyE+tgy2K0Dt+q2mQzMnDZwriFhC5rkNgl0SMdme6DQ3N1cDq9GxUayJWudley42v1V4IKOOQSVLBjKuk5WF0py21M1dFeT5B9zqWVZBNgTdI3Hx+ZbdKzatVUs/9IFagZvvmIdpXqculjOjP57wIMGASkQfp+XpXnd1WxlvVewQADTlC+lSykhlxstBO0CTd6rO6PnBDii2MGVEvDIZ13aoG7+MSqJfRl/71mj4nGifA2wzACoCY7DMV/FJiKNgHSu5pPzhmpaerh/esoC6pRkMYcbC69OW/5grJtVcxYVYFee4WFstY+agTZdGTcGWgYkkI10JrjJYU31Bfgd1/n+Q/ib8prOIaaxUzWu1vZB7jnLnvZT4zp1guLIfbI+DFBkPob9sZUAXTFG2DmYZ9ynkqiYgzTM6aeBfX+tlQKmFBZp9a5oWUiMjr+Bca8UmrhPYfnm5f/6dNqx+Tn2WK4CUg+HY439kyeKlQm8lJjIYpPi+tXROL9uTMfN9AiJft8OIlsH4rhfV9Ujfew==","layer_level":3},{"id":"5624e47a-917e-43a1-bb5f-41c0c061836f","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"设备ID采集机制","description":"device-id-collection","prompt":"创建kami_backend设备ID采集机制的详细文档。深入阐述客户端设备信息的采集方式,包括HTTP请求头、设备指纹、浏览器特征等数据的收集方法。详细说明采集接口的实现原理、数据传输格式和安全保护措施。解释采集到的设备信息如何进行标准化处理和特征提取。提供采集过程中的隐私合规考虑和数据最小化原则的实现方式。包含异常情况处理和采集失败的降级策略。","parent_id":"e130f1c6-f0c7-4f2b-8467-d00341dffec6","progress_status":"completed","dependent_files":"internal/controller/restriction/restriction_v1_user_info_collection.go,internal/logic/restriction/device_id_record.go","gmt_create":"2025-10-08T18:20:00+08:00","gmt_modified":"2025-10-08T18:54:43+08:00","raw_data":"WikiEncrypted:W4RZ6LTz4rg+RteR0TdbvGKD8gVb9Hj3G7coH2L3SktvZYebOv8vkgpgSinmPuMCQSSDTEyxoWVWnS3XVxi0V1aDgH75tdCCQdkWCOilOBlur/tpdCGLmSg6Cthot0SIXRwj5zLvF/P4pmwc1GnREbivew89a+d6cB5njXEYLYUADqYDwzY/Ou6iFNaGPLY8XiRbuSbHg2890pkV0H6/Ed1QVe/b0Hm4Hyq6pLG7Fma9/xEn0GsXHIoSZ5MOnPkEM+vDPu53i1GeDtM57mMs4oTZ6k/K2hK+GJc55OT3sBC4wSFG1HCf0h5Kea9EAac/g//SNmqLTzBGxf9N61bfIQlAUB1+y4PEuzyo5XUzhaIODKYUXgboosnmMogvqeAB37Qg6dLbM1Y+eS4Smcerl7nJOTRT8OE5BrDvckmSJ4Rk6ROJMVj7CQolYyjdqZryZhsH5M1XhfvcwQzSLgWIDfAP00oG+H7Ss/zQPO2hxA1ndtfBOpAQXuX1DcBugX+tDztR7+xAbzLkFXW7m0T3yDLSqTbEHRrh3QHg8XOyofIWqJp71gnr4o+rhhj3v0TfMgxhfa0T8GCJe0nT9I/332nEOaacni1oDZ3id/eqonMwiO6yNGb9w56rACC2YEWmbjUOSZJ0FespuJa2wpOyjWUPjjuT2fe3f+DKhFncqnEehTQyTEc2eN4CAEMMc0/AerzjZjYew7rQCVCbZcHbruNwTTdVgn+ay/sjnG8kMd7J88PojEF0sPTeur622fNz8+ANGme7CuqBLvIkDdYEu45gQfZo//zDfco4SxkUWzjyIt9oQ68tOYVogVS4oQW3El5gDaZzMqxcj9cdx4rd8WMPN3j4/eYAT8z1Oh/D3ZKzVkYo3paB8QueZ8YKZ6JafYOQxOSGnFy5/KPoawuo50CZ/S14eN2PNilYroHnGB53OcA25V5pvYAhwikXMzOhmntG1dVwjjfL6i1quWiUH1pW3lHH5A/5KhnEsew3oOwpKkUfzYRxCoeaY24Q+ZtoPp8j+WsEqwl6+WOhOA841qPw15A3tdKAAaa+nVOXzAVZ07Fy334ScRwaiwK1R+29eIn6GQeh2TIPmSReE9FfWu+850DM5Qe6ellMIzoKnnA=","layer_level":3},{"id":"f54d30d0-d3a6-47ba-bdfd-e7da45674e38","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"登录认证","description":"login-authentication","prompt":"创建kami_backend登录认证的详细文档。深入解析用户登录接口的实现流程,包括用户名密码验证、密码加密存储机制(AES-ECB、MD5)和认证失败处理策略。说明登录请求的参数验证、安全校验和错误响应码设计。阐述认证过程中使用的加密算法和安全防护措施,包括防止暴力破解的限流机制。提供登录接口的使用示例和集成指南,以及常见登录问题的诊断方法。","parent_id":"0e1b4f85-8e7d-463d-b8db-4ee330d61a7f","progress_status":"completed","dependent_files":"internal/controller/sys_user_login/sys_user_login_v1_user_login.go,internal/service/sys_user.go,internal/logic/sys_user/sys_user.go,utility/verify/aes_ecb.go,utility/verify/md5.go","gmt_create":"2025-10-08T18:20:06+08:00","gmt_modified":"2025-10-08T18:55:08+08:00","raw_data":"WikiEncrypted:gVtFIob7WtU/DhLIhhPauKCJymbo4SzVIw0dvv8aC91DNIWhYiwoZmiSp4c2j67hTleejgcuK0+CSov54UgtfevCah8zEa72kD707FT+ocaKIb10nnDfMiUQUGRO8xrC+Q5IXfwDlTtZ1hFf7OdjNFipFuV/SWniGGnHvFnrpgd2jrlgRhnjDEiI3ZvaT4VaczqEfXHod3jH6Iw6tDgt+ybjFShDQlsOQcYJlXBzfedK3qJMYS/c5klQtwPKE9RjNLVjkzZd8n+JU1H1jE7t4esDxJbGwNSRuZLPHX6hwYiov0aQrJlKvkx2O6wRZ/tLkumz1z0G675Xd8fhVg/BKxMucUkGxXvh3i0CZBVZUlgRS9US2DyreXpodaZOnZycnH9Nf0sYq6LppUacl+vgm8v4GtZFX9yFBqGkx0qHpD9m8yt7POIePPUeTNFn2bGixwcm17xF8kibibU/h1OY8KSA1Syout1lVMG+3sZc/O7gyfNEUMWNIVWtunvH3Gz3O/f+T608ya8cf/4ElpoWkrK1IAFQNWVeqEZbIqKvWolN3UWTXhTa0c57LRQOgFXlo6X1E8kZGvOahqKk9FZcmgfXkFWAaOYAWMMax7Lkf3VRgAmcy2W699mf8z75UdANIMSfww+BIM46EwAwkB5oi03EJimkiKwrvhOk6jMD9ZH50OVC+NrYoKN7yK3smK7NyRCqdnPpdQY/AKAweFsf7NOcL2OwuoE6MBRsG3TYBSGEU8AkGOJ8xeDZbiNOqw7KOxpJk7XJgP/dwsBy5bfmkAsJvHQ/VflOI1KtQjRTfZPhNQjPvnVDRNnifIjsXpeXQEK5NpBLh8V74+UZnCgbbj0/s0q+sEB/vH9HZ5/YIkjcAs9/WtUGfNE1Fgy73Q3806nH/pa3O64odg24s83QhudpiMFC3RoDl/zjRNJmiF/BoS26rntv7fA3DV7/1yw3SJ7ZR8AXRd7MEnMzwymFLRaF5NUfKf1VWyBPMUUXkjWK2uVI6qi6RprUhVFZZ4/wewWlQOe1WlQwtWRg5mcMZMTB8+AODgUWyqYxJ92NymII8QUCFHSA0YRfqMeIPGK25zlo3fHNcnAmF66rXYfLL4VQg6G6uTLdvhCtIiyFAHkNtaIo8SMFBZ0prTyersI4ypvk0FTVEfCOUOZL5s6cmooEb6dtaQxabxKhChlawsw=","layer_level":3},{"id":"708d0f68-64e4-4da7-a329-e73234ebb6d3","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"权限规则定义","description":"permission-definition","prompt":"创建kami_backend权限规则定义的详细文档。深入阐述权限规则的数据模型设计,包括规则ID、规则类型、规则值等字段的含义和约束。详细说明权限规则的创建、更新和删除接口实现,包括请求参数验证、数据持久化和缓存更新机制。解释权限规则与角色、菜单的关联关系,以及多层级权限继承的实现方式。提供权限规则配置的最佳实践,包括权限编码规范、权限分类和权限粒度控制。包含权限规则冲突检测和解决策略,以及权限规则版本管理建议。","parent_id":"b5d20329-a5b6-4db0-8325-2b83ee9a2c52","progress_status":"completed","dependent_files":"internal/model/sys_auth_rule.go,internal/dao/v_1_sys_auth_rule.go,internal/controller/sys_auth_rule/sys_auth_rule_v1_rule_add.go,internal/controller/sys_auth_rule/sys_auth_rule_v1_rule_update.go,internal/logic/sys_auth_rule/sysAuthRule.go","gmt_create":"2025-10-08T18:20:07+08:00","gmt_modified":"2025-10-08T18:55:45+08:00","raw_data":"WikiEncrypted:arCjhUL6OOP3tq0tMlrtoOwAbbQLRVPzcd1k2dHh6xPvO1CNIfigRke0ryDobBaSaoichs64p/z82TtWhKzqnfRtn7zC+YhNzCLUaL0A8JDFeUnDrWvFTxw3yuhcszbDwuzk6BRxe0gs4kFOhYEsPA1/Y04lfi8YegVHolvgHLKvZ17SLaOS9bYJHWMoCZP/kJKsxOLnZ93rvkHuIdm2WtiK1iK81bJHe7F23huXgOc7upPu5i3nNZGnaDM7hEKQ/cB7MI5QoDzHuYcqDHqt08ohmzryRB5mJMQqu8CAyUV9/tVRMN1G1BE9CaETWpePEVcW49WXO5v7uFv5o3y2jRbtlgE60ZooiLyUeZ60VHLn6j65ihl5jqjtzHB7qcpCXaVoHZLSotaBSSFs7pAllss6TsBzc6KCDVomzHoQf+PqfKcSv8n/2dwqquYg6HQCEbZYvLCeChJgFbNoovY5zY/BY9jxgXrml3zqVFBKPIkFeBE6uVHZRMpeJTkpbst/AcgaHeDFmFWefIv5Xn1MgKoVgCSbClhDpGbwXJH1rUnNzDax/BkYCyFGmqxFKsNCP32oro+e1BpIiPMdmtiXy2jHJC0PEzlnS4pWf4p4OWZl+mdDIK6iRnyKAINgvfuTT4UsdAu0vxqRAlgd91oo3ABq8ucgniM/oaBKagxXEVv+qYbaeERcv3UTVL6J5MYrIeu0TJXQyDfXJif7Cb0d9tjPohxCZfYCvrQuF/JgsaKV/2OuKffcTQjEXF94v5xcbYVzroBwMsExqvXFtzDHXDUcKmmWL1onKTlDa5nFeHCEwhZDoXVxkWLFI+8+ZaWqKFLDXQ2LQ1Z5aURTBybZlPMQmdjIqszTv0JAAu4uz8yTcW+65emFBT+4SDQ4GaIbp52eQAyFATg6uQQ71IoEFejxBAOcuOnWzagWT/skQVj7x2nXlvyk7g/BrObLtKf8zLaXFB2y4A/OZ2//7oMvEBgtuuNymm/EKEOlKhkNQ5ETZ2o4x7VWwpuj+USDjl/u9uGdszpNTGiE6FZp0k2taXInlD8gg6CR6ddA1QRGiDs8R/GpRoDPFKxbE5J/bZHZP8+7z/PuLcrU5xhyQFN2YdINzxPPXdRS/6vVIfsjXuSsr8q5cG7USJJwm+1NmJxoEX90zJq4wCEDV1TAPupW5nPGpBlm8OnBwh/VQDgk3kS8lga0md5rVm6fbMHzXSH/aJj7JzZ+Q6Di3qFN6VDP965doUC2ELSJO0wDwPs2joO8xBelicPq8EBjbN4EvH2/jLznrdmOoM2eN0ST9uti88fJEpJE4l06+cYAFj6gq5alSOxos+JJfvskuQc6Kq616nxSzwDrgSzwo/qb3FqWiZ02TsWW/GkjHTvzetTd8JVfaojrsVOQajT22gaz491mWxOhtNkhzgKvXeoTLcqI9kJ+UKQ90eII5zAT16DLpFESFp96xfx2BoRzb0vVgS3LwfsXFmpLF7Tl+neDBmgLvYACwCCIlajnZFDnm9PH8pM=","layer_level":3},{"id":"60a234ee-1d45-4e80-b8bf-a0ba60aaf7ee","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"Apple卡密账户管理","description":"api-card-info-apple-account","prompt":"创建Apple卡密账户管理API的详细文档。详细说明账户创建、查询、更新、删除等端点的HTTP方法、URL模式、请求/响应模式和认证机制。涵盖账户状态管理(启用/暂停)、批量导入模板下载、账户信息批量添加等接口。提供实际使用示例,包括从xlsx文件批量导入卡密账户、查询账户列表及详细信息、更新账户状态等场景。解释账户信息的数据模型和验证规则,提供错误处理策略和安全考虑。文档应包含客户端实现指南和性能优化建议,特别关注大规模账户管理时的性能考量。","parent_id":"04d0a6d4-e8a9-4e8c-a8f2-bee9fd409e56","progress_status":"completed","dependent_files":"api/card_info_apple/v1/account_info.go,internal/controller/card_info_apple/card_info_apple_v1_card_info_create.go,internal/controller/card_info_apple/card_info_apple_v1_card_info_list.go,internal/controller/card_info_apple/card_info_apple_v1_card_info_update.go,internal/controller/card_info_apple/card_info_apple_v1_card_info_delete.go,internal/logic/card_apple_account/account.go,internal/model/entity/v_1_card_apple_account_info.go","gmt_create":"2025-10-08T18:20:13+08:00","gmt_modified":"2025-10-08T18:55:43+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBkqinpLacl6fnfehKCwaw8pRy3qKwc6VXfk2vqy+NLa0lTwYJdBlXq8e5vF75MfWxXT29fu2HyUk6opUbjF2W2ADBD29AvaFIeX8frTdSVTfs5URJaHPfXsFQvvLJ3Rg8oZjBSUpqXPio9c3Ip9gtm+KdfHWts4AubnWlvECu5q0fwdcbvrPr5W8ZbVxwPjN2waGFJ9n1Xo2pDgwgKxLWA+VTiMVZ6txaIzQakEIC4/T6Bf+XF6+OTKqRF9kjUeT0tl3gSaJypvozT0cAjxEdYKhcTzwkZFQPSDY5zxgap0epbmOmRmg3VyKwf0MxfTo9DbeQ6XakT7KUm9U7rKxaKSMgDri/6DFmQkzd3Dv1KFK3xYlrD4B8LvshcpIlFZR0tdXF7L+h7vUcuu5qnTeiji2cNkwDpRSpbchRtEHfn2PL8cxdJkb++Li+o33XuI8HueScdK7hb4nMtT24utEQ+r3gZ4srVcZ77JPWWIAkfdo051LXGr5fujnXpbcizZP61qh3YRPKMWKxEQ7o+mwqCvQQzR9+mrc6PxNYz5eDMjfun825w5xTUNiedy6JntfmvTKRO+z+cxEcTJjsy4uT7bB4rBM2TXlKvVHPpzMsXKMgjd/Oa7idl8vBFlxNtD+4LBPRnvLxdafLIS3u4wnQc3bophhVaqHm+hXLUzzuP4jm8EnaQqzjo/BfuNsiNi+wm7gCZhLPJX8hDUrjmb3ToPk+El4qSq9OYDP+OozLq9Lqves6v8r3lAut5Ii2EPL2Vi0KbzgGhb8vk2HgVfMZ3qifEuaipcaNwlxwr7+wSrDuEtfZsZWJdIr/XlNK1d+2VcQ7QKYJ6izbgB/Zu/zFl+YfBcIrTaMF4/e0O3Y7hpMNOxDqi8KQDSoZk+bQyU1ezKM1HU+KtLHiVO+IO6QshTgYUaTG0gIQCpbDRWdf6PIJ1WQgpq5SwD7Zj182JC1lj4H3/DUkpmymWLJOospbguIbIXlzB+k6WGw9g+wXA84a5M6xZzdjFaSwVGxTC55j0kYwpiCaco2vfpcw7jjSUCVRUVnlHWznxAaXl6E13rZFN1wBI0Ik9Sn6rdnD+CS2aLjvahLJGpb7jaUbq7L/ZLI9BA8fRDCwoGIfwFRPdAYGlqYdJoqBL/cnqeFeN9ga87M46Kyz0puLquoQ2Ew0MAXIuc9fxbYACVx9RMiH1Vhi1lDhZOJAvI37u/G0JEXtPJopiSUMYsFY+RUA3A/Qku8kQQwax2XUYTgCR2AQiGnDCdkI+6LMtPPlmSx/QlITlWkkQCy/1ItMjEw1o/PPSftkUZ1JKqn9Jh6mGud8uAgPqxecS9Vamw5jbv6TYMNXzcek9YJJudtf7iHdpX9xRKf7lnwmouqdLT2UM/VGvOhSeDkpDYPpADoBsTjMHE0SbraXDUthLt++TF0E2eHFiPgPoIjgUCGCaA/yY9v4THxQNIZqUjHKD4diMLvaB2giWr3OiFkajHbLz9oGsc3SxrKuCUeQrH6jUtEaCz+BiLMUDkqRvnUvVqHoK/LQrLiYtXJSRvB+yOmQhj69kcR3oBrLBjnSMHKZcITOeAhn7zHSIHxOpfehSXwCJZf00ZWrb35OoqyXGo9DBOARSQ7BnLHiSzObDeoXHrZ7TQQBy+NwX+LyXZRMrgdmjDy0EIChgOQqhxAb5KemwNomIuu709tXJRhytOOiKfPJY/ws9vZ3eIVfgTsar6nXoY0HAQlRmit3zcnQLlA/xCwAxgLx6mv/itLgom07Us0IZv/BOLu","layer_level":3},{"id":"5a0f3a66-d169-4a34-95ca-e173a89429e2","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"京东卡密账户管理","description":"api-card-info-jd-account","prompt":"创建京东卡密账户管理API的详细文档。详细说明账户创建、更新、删除和查询接口的HTTP方法、URL模式、请求/响应模式和认证机制。重点描述批量添加京东账户Cookie的实现方式,包括Cookie验证机制、状态检测和刷新策略。提供实际使用示例,如批量导入账户、账户状态监控、Cookie有效性验证等场景。解释账户与京东平台的交互机制,包括登录状态管理、反爬虫策略应对和请求频率控制。文档应包含错误处理策略、安全考虑和性能优化建议。","parent_id":"288b9b5a-64ba-4e93-885d-499412ad90fc","progress_status":"completed","dependent_files":"api/card_info_jd/v1/account.go,internal/controller/card_info_jd/card_info_jd_v1_jd_account_create.go,internal/controller/card_info_jd/card_info_jd_v1_jd_account_list.go,internal/controller/card_info_jd/card_info_jd_v1_jd_account_update.go,internal/controller/card_info_jd/card_info_jd_v1_jd_account_delete.go,internal/logic/card_redeem_account/query.go,internal/model/entity/v_1_card_redeem_account_info.go","gmt_create":"2025-10-08T18:20:18+08:00","gmt_modified":"2025-10-08T18:56:14+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBgUl2d6Scta4RQBMUlv4P6FBG2to7BFRHZXhg9BHwNCBD381RHw8dSROjY0CP5l2V+vaH2abBiwvnIbxE31IKQRVIdO4Ewz8JwWbtt5tmL8f9cJo6ahniikYwoT8OeUbMRpDl8DxdG2s35ojn5Pkz4O4fSeqtH8+hJ6Xr0rIZlEh8/8f46c+F1LGoWRtLxfdiyKp8oOyO4Is1/w7sEFWzmO9twKFnkqW3HkTjlSQrWAnN6fUR5GuyOSRYijYJ/gyTzY/wl4XKJastvxcCcsA474y8VkOy90tdpJIQznu5Ben1hu0/p3ZpOXPYd+bhjyI9/krzqdGVVWifczIEhoZCu7/XfP4tO2yASiJImRuOR+CO/zjsUDy5+KRNJLBq5HSzEmQ9GfgwNCPc809XcZzrk6IuwtZjLPMperxN1uZKxRCjmAcRaETzkhLDAHCJEDnmwqIO2UEe0ehJr/xSTPfabX0L0c90e78TfEvMdTvI35MS+rQyOO6drdfP7sxQX7pI7i4wWJpfZKsKZVSy8YG5AbSSgdMkWeizoGdLf6dJE/Xjq0NS958wC7/1QHFe4VwtfXX3rqcPRhg2LoX9SPcvmRIGkLtxYws8a/KRMRf146tiCLscWjNMFTNQC+Zw1Y6QzodUwxGpLnafM7L+I3dmnuPv6cu972lxTYVmNlpc/u8h/+WLeodNhWaEzMn2mkZO+zYqIvJwSNYDSEKapP1cM4mjRa1KhV2FdAWcSIa62p6muCsoT+Bj7AVCIUdJF4+s/4Rhc38zcceMRTyOcwK9wWZYajHgdaqZnxNoWFIRYkpRBs7Mq2fCdHMK8vnUAskW0pWnNxJpOwaNA7OlBugvIYZz8PjeHAKIYEYFSul1oVwVprSmg4le5igOxkugrYcLTfOsMnirLxhyI0dzZ95fJSPt2yyQbUDUxb4p8XDiTNSPHwoR1FFtHUGrY6zjZJK0W4n3tw0G+0x+exh1pjVO+oDKcaOtgUOolzOvngO5tfGocxnDVNnj2Dylx+zxkltJVZ67wf9cj+qPLcEDPnN/0bVQD/aHPjbUzdVtCDvBHsGU2KqOvOQRo5lhoBj4biXkQCgARq6rgc8rTMW/7a6Um93POR01838YeN2EE5ameiQV+PjkLrcr/MfY2yche9hwHpEgEtYzi+J7nmOnQKPW2/KR5oXhVL5SLh9xTYFzs+yDcpB5FFd3cZ3oKwJ00X8FXbFWdbanzH5JZDyJsz0uiYkXAdXvU7HYDSeY0kJY6Zh4D7KzYnMLEo+FYkM1UM2WA6sAtPbs0NseDRjhuklugEvOSBsLdXaJY/2ZIIQvy1G8Jy5C++r97NdT5tli77firZyLt+tpnnNj5D/kFmAxI6mLVx2LLTPhvloz4dHP7zHuB9ADxwonQQJxrJ2yL8u9Bya0C29eRCNRpYC5WCPNdjXkR/JVbdjF+Eex0DkjpnMUgwoboTAKNCCt/LsDPsHnfxo6m8X9t5CvOqsU/n1XOplLXPhFlJNOt0w3GuvscLiyFP7I7Vojk0CZ5YfYxTVzdjSrPv0huwDag6PMes8+oU8A2+pBDki3YPnKURMTwxlfjF7oSZjierV3JnlqBQjwAICUDFqCnYvgTbjj3sJGH+ikMk9VFatoxbpZpZN8SzKhZ8kA0IXMBVed4vAuNZetQ==","layer_level":3},{"id":"6a7b8a19-18bb-4222-8c43-45f6c25ea130","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"天猫卡密账户管理","description":"api-card-info-tmall-account","prompt":"创建天猫卡密账户管理API的详细文档,涵盖账户创建、OAuth授权、状态管理等接口。详细说明账户创建、授权回调、状态查询等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括天猫游戏账户创建、OAuth2.0授权流程、账户状态检测等场景。解释天猫平台特有的OAuth授权流程和access token管理,提供错误处理策略和安全考虑。文档应包含客户端实现指南和性能优化建议,特别关注天猫平台的OAuth2.0认证流程和API调用配额限制。","parent_id":"c32a3e21-0961-4618-a256-ee1396eca8c2","progress_status":"completed","dependent_files":"api/card_info_t_mall_game/v1/account.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_account_create.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_account_authorize_callback.go,internal/logic/card_t_mall_account/account.go","gmt_create":"2025-10-08T18:20:23+08:00","gmt_modified":"2025-10-08T18:56:38+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBoR0UyAkbkceqMyhpWku8RVMxI14JrT0WuZAKIquaumc/fyWO7e6sPSexwLceo6/MRNBnGOl41j7jMKXHDp2IJIYtqDgbDCxUwOhOQ8OIuqHJLuTFiEYbTEv9b6wcKKc8EAUOn0Mq8/AHAI14ujJMZ4NX5giXQ1UYTmQPJBU74L+ax7JIOqoeJSCJzn+FNpqHnPZfjB29On4hQ3wkOJvMbEuzSQ+r+Gru2HnMF3kaogVcbE+IytKZo4iVifeIEzWZup7nmaYSY5JPaZtHfY8dLwFZBNsNkKfQO+EFSfoqA8csAJhIyoi2JkXmJgskA2IwVlc7ATUE+4hMEK2SjDNM190H1+u0MFNBrjbwN/nn4rW9P7RynuaB4g36TWvUa6jZFBFwgACpm9x0rUwQJMVL6audS5N0KytY4HsnTtcC0OtHf1Jyr8xeK9Chg3ROKePyBHvA/xmz6AOAZ5E/EDfyZrrPQ8ctqP08gcW0FVVtMK/nQantyuXSlF2prvPTpbRUvukHLA2/M1ZncThXExGhO0PxBSqV/CbOKaSMHZNG6ij3Vr/YN0hlrXtx7tM13kN4u+eudBT5HkmEO2f4gRhmurkgUikBdoqamLraJQUKr+TwS1qSKTYyv6+FzDg0WPvBMVRN00zU4slmhMGSA3VgFKNL7L7y62KwNVqsED+7p9MXnudASGPDkFOuYbtil+LJFDuUiFiIv4PfhL5jmrUApuQAe3EB0AzQujJIrRh2sVrQeSGZMH4vAtvPL2qypV9F9lo9/XYybT+F7i/3Qt5dslxHl3y4xS5M8DKi4qdKHLzWXTHhX/pLeiRiaS/nDIHBu97n5HSUQEtLuY585nkaoMVfgmyg+6ULtg0tU6MdWqkr4b4ANKqvMkZHVrmfXqvIe94uefgBR9xYl10GJS+kFAPy53hJ/rPlIv/8ERnBSm1jSCCgo/bgU+ELVwq8R6blJdx3AxQI5BS65muiIBl09wf5MrrbYoVTl42wXImijcLuEU97bGyUH06LRBHDjkMtClfAzQSUAjHQRmdPTHMuVBhOQhmCjSTtH3Fkj+/4ODYAVa6Begbs/GUe3s2TzX/GE2XkHZCzUpIiiuq+08HgN6x7+Dl9RwoI/vf1IsfKnuhPrI0tkMINyS7v2XW6TgOL2RhNFE/VE6el85W4R7lldv+b9XekZX9s0g+WzI16nFSczoA60cIKhnWcGN77Tuyokf8dLEGr7mSrGwuXJW1iXGk6J5BfaotNOd3Peib6RgN+cGjK8X+K1FpzJ80yoy5U03Tkm42yLi38jXb9tMwu3bn5A9zTQgbvzeTwBhSqU9b2HiCITl0jMEseWoqRPz5p4PLomOL4eatGjoTOYt0i7ndNdRXQvlOknlHER4JJF2TYnFosnqu/pI4V3sEH7jljQRlw8nuyWxoJGh+662U1BS6wKEvY33aQFXQTnIap10xeDGh53y83Im1qI9NfhuqVPqC3iLrnnoH+g/ujcZvV6Zbcbu61QNwo9P5OPk3YDMl","layer_level":3},{"id":"f1ed70ff-aea4-4289-8223-fecd0ffd2cad","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"构建阶段详解","description":"dockerfile-build","prompt":"详细解析Dockerfile中的构建阶段,包括基础镜像golang:alpine的选择理由、依赖安装过程、代码编译步骤。说明多阶段构建中构建阶段的具体指令,如go mod download预下载依赖、代码编译命令、编译参数优化等。解释如何利用构建缓存提高效率,以及构建阶段的最佳实践,如使用.dockerignore避免不必要的文件传输、设置合适的环境变量GO111MODULE=on等。提供构建过程中常见问题的解决方案。","parent_id":"0e3e4dfa-8842-4108-bd6d-6cde149b8707","progress_status":"completed","dependent_files":"manifest/docker/Dockerfile","gmt_create":"2025-10-08T18:20:23+08:00","gmt_modified":"2025-10-08T18:56:29+08:00","raw_data":"WikiEncrypted:h7ADvj4WLJHyulzCl+z7kAC4I1igMIbmJdop4VG0ZbJjFypRxn4xUly2HIQaD6E7Ulk8/xSnFXX+kBsK+YCiAFpBZQaJXx1K6xD8fgHOhJlmWyvZ/fW+LtZKayd0FV0jlHO2AcIFL1eWHd/6OafkRW0RQ3lAEZ3RRU0iA7UKykKoL2lHBTNrjnDDxz4sLu6jLgCdadAE7a1NJYx8QQjdEaCcrMMyW4INTvYDbVmBGbjUfeYUMV8qhxpfBbCR/tGRxLtGS2TyPsJGGPPDNDhbPpwJ0yJPkaNCFT9eMLfbVXwMNLEEHZ36uelrbeySFxF3laONoF3Ina+ld1a1rCYzeBOBrisG3LOcDOgAu84dsk3bqzePE61QcMUimqePrk0tV/VYhMyphCghL+28J/zngBOlSqkLapTPn02rzSuLBtwuWDsm7IdjT0g7vWZR9cQnR6vmGanUjlgOtzEPCxZniXz6wkdcKMs/oSI8NTK4hN0cPQ0XppJQsFzBrlOiE9Fgc+zz/XgEM1isY7Dk7z++54qnPnGLZyatfZnozoDnYQ2xwsF35q9a5kfjP3EkT1RxyPWaqS/sy2HWH77doAWKcDkMiO9iiYPVmUu4SexyxGTnn0W6JUTDqEr6EiDfR/4CwAy0bvzdLNqff9xqVwhukHFvh+EGtngOJKx4iEREqkW8TGhMHdQq8T4UFKDCbBMt20a7wyhGKuDFcdTxOphnRIdgGNXng50y/dMm8RpaQW+kZ4teEXmlsP9HmqtCdqh73KgHhKA5m6k3TGbcusQX8RpxS5xkNYxKSRwKjH/XRgx9kPmPjZjHWS4eWzdmDb92hKVy/lGAJ0qG73t+Y4Vqrvj/g2TN5aGhhyKd/H5QXz/Fz7p9xsHidqQ3uWc/dkTOfSb8BEeINpHlU2KCiK4hTKElQwpYs7burcNRRdw7WiSp8IrMFex61TrKTAZIioHCeOGKRfWNoYHCpQ4eCQEFmw==","layer_level":3},{"id":"18a1847d-4be2-4c61-af2e-3f527f5f3d1c","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"沃尔玛卡密账户管理","description":"api-card-info-walmart-account","prompt":"创建沃尔玛卡密账户管理API的详细文档,涵盖账户创建、Cookie批量验证、状态检测、信息更新等接口。详细说明各端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括批量添加账户Cookie、检测账户状态、更新账户信息等场景。解释沃尔玛卡密特有的账户状态检测机制,包括状态检测频率、异常状态处理流程和账户负载均衡策略。文档应包含客户端实现指南和性能优化建议,特别关注批量操作的并发控制和状态检测的轮询间隔设置。","parent_id":"7171317b-83f6-4146-8818-b00d88d2b2b2","progress_status":"completed","dependent_files":"api/card_info_walmart/v1/account.go,internal/controller/card_info_walmart/card_info_walmart_v1_account_create.go,internal/controller/card_info_walmart/card_info_walmart_v1_account_cookie_batch_check.go,internal/controller/card_info_walmart/card_info_walmart_v1_account_status_detect.go,internal/logic/card_redeem_account/query.go,internal/logic/card_redeem_account/status.go","gmt_create":"2025-10-08T18:20:24+08:00","gmt_modified":"2025-10-08T18:57:15+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBl7AFS+0V9EBoppO4IsIlgknjA9Zzn+5hUWkkdnMISC5CYpQ3ick0SR5Mn60NwWCjSgyn9tJBmohQBrkR7351QihXLt4C3w7EHveHmwZ+0uOjcajq8e2trIg/7vL2Cme4X2Hb6qG1dBHe+QewzwbrR+s2ivL2ZBUVHbNTYqOVu/LtKXASVn8WzizsJy8M3YALdi9aGYPVxe3tG0uR6SypskX10rHVKv6iqyP9PqKLMrWLgbgNLidMynnIfiYaJkjwFVWDArm+GRfL9iSztYoDG4zmt01VMPYfJ4U+YAbeI67jlZkH++gOaL0jeABDZUNYnSSh2362J418uUm+NX3U8yQkYuEksmbZ3PjdFtpI6gA88wbWuMTr9NGz6NAw7Y14rcuHcbTWKBcKlkCMLdQk1OCRYSLQK2hgYvzRvoSOyoO54u8EB50zw1p0hZB2ziVMFXXBWMnk6DiBcu09+vJcEBlefqkHYCOGQ9u8GnDPIGE+h8C6mwZXSUbzHspfZBFmwo2rx1jG+GUhuE9Nv2SpsUBbNGCZ1N60lr/D+4tiJ9Bm4TfBLoKnWszoMAOYSmiqG5xFfVrgjVNX1gHz5Fvz1OKyIPfeC7STYl78rHHydJldofyMXxmM6RmJpm9SAf1UBxBPPeDk2u8IxyBX/M3t8Ani8Vr/Br737nCo7r4t3hUuEVe+hV6PTmC9aeTWvT47WbYT4q0T5Td/zg83FeLZXeHo0v7qDJIEu/U1AFstcvhF1cYnrqfdRaQPLC+NvwBVCg61aQaJfyM0akp/oUh2pl2bXudoa5pIPlxiaM4gDpMv6iURLOr7Gors1oSPojgBM5fNUwjbvvmgJztf8PUnnMcHxBgO0EyUfy7dmLxkJDaMNRR8YDGYHK8XHqsiCJtlFDZCknu847jNfR3RE7ND9JehCRm5zReFaIw5d2jd6rtFp9Lgt1kj1+7sK+eHx7U+pXZjlu9q0Bk7DXhc5YZy0R1xu+Z2yMgeb67CVtosr5abLqsIyubLzBTt5gRJd8zm5iNz5U2NDq8QUprf5k4DXMoMSmj3gOwW/yIoVhgQgHPMjGtVelXb7RSYNV7nBJJ2rbyg6eCwxag7sV3584VAbJq2tx1wmkyjLFefQlBayViTVvYDngeZLFo6TM118hTXZCg3V/kVBesEixvchCkdoAjDQcpeNlFNimtfN/j30H/yC9aV/84QqCSzu4XOzK3toJvQ8NHW2Pha4Uepet/xAGYVbM5VY14haqlRwmNCbXmYthr/FewzGxoaZ4ZLdIRHRI9HrN/2dfK8N4cI5wLvZboQMNIKByVy2LfrH5YBgI9F86RllWtvEeWx5gVeV1sLOxB2ljfTHX5co0CG4zoLe+9AU8Bqu+kBtF1m6BaKKkqTV9kLPLMZNmWTMAfVxnfMaj9xjeXLPh8hTT12/qFhJ+pv0/XhCPl0V289QdlchT2ySBXL4i1KrY7iNonoSAyXenxsE5Cf+9d8+UDdMk1whs5qlT9kAkNwrFEuqb0tXhAh19cBqSLOBy90MTvZ3rzZnCVJ4RcABvwgo0m0IzV1PcVynixzVh6/WilxuJ/t2w5UXlw0xDPfv6Oc2QT6g5TP8vmGn0kC+fvw3M+3pNKZnvkH/kXHiZR6ZoOYDFY3/0sslzc5+MG0ppPasXSkTbMgljd2rhy18zfdmin/UDAHeg=","layer_level":3},{"id":"9b95c229-e3f1-4960-a0be-1b88f001b0bd","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"主服务配置","description":"docker_compose_main_service","prompt":"创建kami_backend主服务的Docker Compose配置文档。详细分析docker-compose.yml中kami_backend服务的image、container_name、ports、environment、volumes、depends_on等配置项。解释不同环境下的配置差异,包括开发环境使用的本地构建镜像与生产环境使用的预构建镜像。说明健康检查配置、重启策略、日志驱动等运维相关设置。提供环境变量注入的最佳实践,包括数据库连接、Redis配置、OpenTelemetry设置等。展示如何通过Docker Compose扩展配置来定制化部署。","parent_id":"58118687-a7d8-4b0d-b788-36481cba182d","progress_status":"completed","dependent_files":"manifest/docker/docker-compose.yml,manifest/docker/docker-compose-local.yaml","gmt_create":"2025-10-08T18:20:37+08:00","gmt_modified":"2025-10-08T18:57:12+08:00","raw_data":"WikiEncrypted:h7ADvj4WLJHyulzCl+z7kFDscd1aC5KxtjHTjiiSU1zE7PzaGOYJ+Yho6nUmFlncjDqgU9yqAJXFLLWnMcFSFK8U5OwApMqyMqONb3fv45XCiLTzIfBgkcLgFzQ0y4EDdwKWpKprWy1eNnWMb/m2QMKgCPpqHbSqreXniX/AZXrW6HlWRG2TNMz7NyP2IpJraWJHLgyIvbm2z4pNhVvr6Ysj0rsW0R0l7TgkNgMcdDXwNDP135bsvlW0+lcDDQfzIzm9Se5SVnrZ3kvNyrjTxohlXcHT0Ee5t50msXzCmzd9vRkgosb5s/JjS8W1C4KS7fPVWMKJtBj+SJ4qkA/GWprywN3UVx926ASw9p3qweqHyMPrHtT2qcclvbbBYPMVHur4ZV5C4e79F3Llv/1dbpOeaRcRU8zKUWRQfCtEHhYCBqSZQA4SlWIIuXWWK1LkG9KdjiOhuG55EwE7ackhRP909avT9YUaIlA7OWePgUtKquVu8ebZEe5PCcd0CejuDRe+mWjXZijZvzJv9kX0QY+B+WHA41bMELlafHdiYHa1xBVHWf53LBDVVLVSGbUbCl98dWA7QLSVQ/iTxI8yVxOzJpMjaJ58jM8DXTTKb51XFVeyxTNu2T69KFbcV8Z5J79/rMnF0TCDXjB34H7SAKMb8PpNrYkj3vA52bZ4z3U810dt/tXDdsMGTAPdoNrr6pOsdSEKdZcSDfH5wstFaa63KfgXL9CkRoO2Mi3OmTSzKzhMiyOHynZAa0E/H0RoEGk2zT/70+WbcMa0PpsIybvh+2dYANMQAMo/tqstywpcVcMt3nq3k6dxgdbS3HMluNx97m2eqJVvbiJaoUpnONIBK/bMbVjSwca8ccwYH+u7YdVXWGbfAv8iMhLv+y/lVquNH6u0rG0oXjZDPHp3ibfOaUiGjJM0lqvh3Z+iov6WtnLb7NJL4V1DkXa5Oy8NskWxr44tcsnJdgrGjRx1hQx6FYgUdCKdzNyAmQbmilpgi5f5Z55fReLK5Xy2knIQngXGcJjgfcdMZmz72Z1/6I5D61elD4qNhGxWqL+Phq9JmnBpbdxnrP6W2RRdJQa66FDJQqRLKxq2Vwgc6m/4KdNpbCYRO0BpEnJn8mzVlVcj4rNJxhqWLN1qsi7imv+mUoFzDC0/5o1SQqz1/+RXbp0oXPJig+1ci26QKjkvcLg=","layer_level":3},{"id":"529d0827-5291-40f8-8e40-3b0ec55570bc","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"京东Cookie管理模块重构设计","description":"jd-cookie-refactor-design","prompt":"创建 comprehensive documentation for 京东Cookie管理模块重构设计。Document its 架构设计与业务场景, 数据库表结构与索引设计, API接口规范, 业务逻辑包括Cookie轮询、状态管理及订单复用机制, 支付链接管理与失效处理流程, 并发控制策略和变更记录机制, 缓存策略与性能优化方案, 监控告警体系, 数据安全与接口安全措施, 以及测试策略。Include practical examples and troubleshooting guidance.","progress_status":"completed","dependent_files":"JD_COOKIE_REFACTOR_REPORT.md,.qoder/quests/module-rewrite.md","gmt_create":"2025-10-11T17:28:55.7815508+08:00","gmt_modified":"2025-10-11T17:31:20.5631183+08:00","raw_data":"WikiEncrypted:gc3Nobv341FwplqquUMhwpYHBkEN0ku+TLqWXEIgxy0UQLWUWDgkuyFblxk1o56sdti5kYjZlI5e/9//aiJFKBkDd78ybG3xHnXz0MTn8F69iINGQzKGK4TqQpSWY2ZQliezKr2UdZnjwzqLICppoznHXbakAm2QyzUOWVQZbOirkpdpxjk7gmRurOxW1dMAsYiikka43y/oi1n1ojbcfSat4n8/ICGXklUwNR6EIMRUBcixqY2VLabXYVwweAXZdUzH5oD6pFklkfGtN/s3/LOD9cTaeFUHa84FgptLBUOyIflisdZGn33exnrB4Vvey0eohFtP7epUdZsKJ7FlyzF8Y2AvvYgifJrXQWNiovqWmkgQZLL7NAbAwQChoCI8r1KXETsKbVJVllvmuj+k/sgRGnAtlQVThz8GA/JlF4jbTtPyU7z56ETFApMJ0CQFBwwWDKzCytID2NVdaDKxTPDdFaP9qdVILmb9ZL89PeFHJlkSQu6KCrgM1JD3scBJIiDTU4o290c6OwxO9RPGVXtLKu6zqWfoliffwmMrz9LwYx4mrXjSBweS5oCWWKEsqJQvTcB7HnC4CTEWZ+Lx646SzI55kyZAZljFEgFzdxOcNKzfykfKulyPdSzGnzYSRI12aX5zbGppVi5sSRL+UmBujUksoEaSC0bfXzKx+FVgV31WU9Ktg6rL6HZUnbAn+57xNKAgM5Wj5dAZAQSJe2T1GaEKHUmgSRU3sk/yrw9Jo9qKrfWXnqlEVn6RW4XaAZlFmTrAOU5s21XBPSI7XJ1q2YlDuGzz4E5AL0XlQmreUmEJxuLFbRDfh03Fb8+ylZ7Ahkn5ErmQKQgk1Wat0cEoX1WiIKkWJBsHaZvn4F0VvzF5QA4nrpU4Zk6cIvKS/EYNQtUtJW1HBIWr3QK5aJfqYu4KExKwS8W3ntRDiRHZZrhmcwhpMDmKUOOtD115"},{"id":"802f0a8e-251b-4bdc-9194-bfdc2122b3bf","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"技术栈与依赖","description":"technology-stack","prompt":"创建关于kami_backend技术栈的全面内容。详细说明项目使用的核心技术,包括Go语言、GoFrame框架、MySQL数据库和Redis缓存。解释OpenTelemetry在系统可观测性中的集成和作用,以及Casbin在RBAC权限控制中的实现。描述RESTful API的设计原则和实现方式。为每个技术组件提供实施细节、配置选项和使用模式。包括实际代码示例,展示这些技术如何在项目中协同工作。解释技术选型的决策原因、权衡取舍和约束条件。为初学者提供概念性概述,同时为经验丰富的开发者提供足够的技术深度。","order":1,"progress_status":"completed","dependent_files":"main.go,go.mod,internal/middleware/auth.go,utility/otel/config.go,manifest/docker/Dockerfile","gmt_create":"2025-10-08T18:17:58+08:00","gmt_modified":"2025-10-08T18:21:57+08:00","raw_data":"WikiEncrypted:w0CkdCdnXCcvlN5xOpiEhEX3U68GI0Ngj6azFMJo9xQD0Nwsj9XajeArLn33w436LuYJWl4xP0dT9zLNODhOpJWtrSnsTOFdbU6xnVdYH2WhlC46KME7gjNRiRMPuUpA7dVEI+NP5zwBpvDMRHvIrAb68HCkCmtSyGQKZSrTNYL2NxP6WPImEyXoT9RMGl6UVv4yJYYr2tmXUjqrJgnZFvSGQtZm2LCPWlIAAFHHC4Q7BPX22tszuLBPhoiVxcSCqHIJiooavJWuc9VeQvWXs2fCKn1YDu2U2lNO5216USYVnr3Ut7tqWoVNIJ1CpoCkZS4SeZ0CLrx5YeUFItmKKJq7XiPSfKRFGs1zfEOKcvdyL+RkR9+1SKIWpGzGcTLwP6CtuQ2Y71Lwv2eE2+xopuoSOmPUTGRVBglkPMwm3/EJuszEoTr0cKi57UrMxc1NcOcd5mXvE/AzIQBMbRyOCWtrzO/qpYlJATnhh1i5L3NpdMDU1vvxj3LFPSHPylc5OvLVkiNtifBGe0YzzJMgyhtKNTjc+BRy/nugT+hlJtBU8+sAxmddiQv2tRcUALDh27u9r/VslWIqKZBy4imfsEo4Hg39v/uoP1SVMfbXOa/A42Ogvfe98jByFSvFdw5Q7mJwq49USkBzCKL8ax2Oe3f5FWNRwkGPWr5eVK84Ho4igv3W/eA+2IytxBe60Zdl/w71ClZaknfiSLFsncBZrdNHC02tPvqStcReEZKC0fwXKU2+zIR+gN35Dae/0/QSY59okC53Yoy0/7pXvl/UJNajz4gJlBvI8m1eC1yLFB6FDzvCPnNR3tlb1IN9JPYf3aI4yc0QddV+sRB/h5jcS1wpB5EwJhrwmmf7E83hHD8zxcy1YAC9LgvSjW9ib+JxZniOiwBRdKPE7mt69R2mqktSW4IQKnoYx4KJpsoltWC7XGPanW9wUXCkEYyhMDwEnSBGtwlYEg7lWpsl9b/CBzw/9z5cnbQBei4HDy/DDmqVxAit1VDg8oIAnAw+fReuWS5W+teFhuCkPvq4pRdb7NiWyV2LuCH7ixYAlIBm3YI4/2Td0Hd0GCZdpoepj4SCzQSUr8RKrse1IlTyID2icWpeks4xJ/cQnH1xw7sL5u52nipyQ+T82gQ+hbkM2i5iC899sK23Rdb7Ug+hKDlaxVoxcsaoIfPvqnmnLRXHxsSMsJcAEuzAd8adU9H0AFTMftLv+1oNmYj2ZhWDZZqohcUOT01qCqx1pr5WkYbE2VXp6Pqpa08OeoyK4z8XPOX0"},{"id":"5ffd09f4-939b-4b8b-a254-494937471526","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"订单处理逻辑","description":"order-processing-logic","prompt":"创建kami_backend订单处理业务逻辑的详细文档。全面描述卡密充值订单、兑换订单的创建、查询、回调处理和状态变更流程。详细说明订单与卡密账户、支付渠道的关联机制。解释订单历史记录、订单统计和订单汇总的实现方式。阐述订单处理中的幂等性保证、事务管理策略和错误重试机制。提供订单状态机的完整描述,包括各状态的转换条件和触发事件。包含实际代码示例和性能优化建议。","parent_id":"201b5004-c469-41f6-a407-c98892822b49","order":1,"progress_status":"completed","dependent_files":"internal/logic/card_apple_order/,internal/logic/card_redeem_order/,internal/logic/card_t_mall_order/,internal/service/card_apple_order.go,internal/service/card_redeem_order.go,internal/service/card_t_mall_order.go","gmt_create":"2025-10-08T18:18:19+08:00","gmt_modified":"2025-10-11T17:28:54.4913354+08:00","raw_data":"WikiEncrypted:C1x/54IbJKQH/5Vl+vgwI+WUf3/2c54GyQsd262eumPCPfeIDLF4ZKJTKT3R5YZNkPz3T8xv/2u1DVwEwDzhtyS35ARhwhlFbL3eDQbUoFzXUP1TcBAEZa9pBoZu0QVk5rpIzwDTJRkSX5j8Oe+1eCdRpNuB8tCuTkIcj3PG1Xj9BkXLyBhcB+mdqhpetnuBg1VR+tkxZRofLH3u7Ua4YdpFim9HwivjZIisiG1NCu8NKhUXgBbPOO6e10f4AFLROv7zvd6WgTEydkP/qIA9ZePQdf3Q50Ll7Sf7167Y2NH6zwpj1apKAiXhXKg2FqkNr7AVzQn2vEbrGlCdmuCqGEtXX3FfsdL8uqUiOIbwqoV9oLAMEdlpD2v5X/yFQZw8lzc1kg/Sj2jIcckJaiLWI2ADsMQnCdJgU5RTmbC0JS+sYbiHL//AlRVxdKU489qRB0aUGFdZ0LyvJwpez3SRSke8Fj3xmQePxeQHqOolg/q3mthumyNoUf0Kb/3u2ssO5KEMc8jBNQsJp8xSGSEJjwgXbc6GYNe2GmuP7uJsQb015AM+o6ITmrfB8JFKUt4DjcbXlzSTowFqEpoW2IUUXfsvG6eVPTu438PLXJa6NI7dd3InE2u0YLV4QLXcXOOtlNGl+VFAiPRA6pxCR/MYAjxYAsoASAUQXMHZwKSRZOhFo+b8NVhrrMMswoGJuv+OyGq5DiFihJY7crKZREtylnXj/KzS00wRfQPTQCjHTh5rQZJlKIcjFZdXvSgD5P55k+UtX4HzUfOmHWiN0fnunOY/YnMO2un3U1nHGnIFoKgKcABdN6t2D2LI/RC+VgTJcsJXT4QYBlharDcrYW2xmpl6Wf9kKRaNc0yLZK1MGuLzcsiv11kceSNGvjijk8f1u/Emuaqq/fcCJqaD/sGyexZ7Kgi/WTc445yqv75vuVm9ya3E3OZJys7E2gtTwhmmzfL4IZ/6xHddbR5+653cePDH8FLYsxoz0yDd8eEUd7Q1Grl8uJjUDhpog1BMhzoE3jM2gfqXCecpzv/t/R3OElbIBovAWlN8W3betCMgzNeFjmIP3yRdLS5vzdrH3i0NhAQWjxu2v0LXC35ft0sn2QzDB533G178KMtJoFJfVnvFdk+gBJzD4oofWysVxP68zSYSBhqvrMWI22nBMDn8/sUDhxyzcFDcC9i4+Bsf+KPDUFMCYZ4wBwMK/OF1Lz1Annys0TP5AVZ7zpy3T5+y03y0ZqbKhStizhiiBAi4gD8fcP+OGi4Bzx8vOj4wspmBHfTPfJ12Riv5ijeju1inZNV4U84QlFXDzUUvdaSb1TFpcaJV9yDF5HvWOV57diArwR8Z+bT1R+p8Zz9bb4dpsw==","layer_level":1},{"id":"4bf77667-f501-43ff-8e67-ed1fa1562255","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"订单数据模型","description":"order-data-model","prompt":"创建kami_backend订单数据模型的全面文档。详细说明v_1_order_info实体的所有字段定义、数据类型和业务含义,包括订单号、金额、状态、时间戳等关键属性。解释主键id、唯一索引order_no的定义,以及与用户、商品、支付等实体的外键关系。阐述订单数据的验证规则和业务规则,如状态流转、金额校验等。提供订单数据表的模式图和典型订单数据示例。记录订单数据的访问模式(如按用户查询、按时间范围查询)、缓存策略和性能考虑因素(如分库分表策略)。说明订单数据生命周期、保留策略和归档规则。详细描述GoFrame ORM框架如何将订单数据模型映射到Go结构体,以及DAO层如何实现订单数据的复杂查询操作。","parent_id":"b8ba5dc4-8d15-4b61-86e8-07a963bd3fa8","order":1,"progress_status":"completed","dependent_files":"internal/model/entity/v_1_order_info.go,internal/model/do/v_1_order_info.go,internal/dao/v_1_order_info.go,internal/model/order_info.go,internal/model/entity/v_1_order_profit_info.go,internal/model/entity/v_1_order_settle_info.go","gmt_create":"2025-10-08T18:18:21+08:00","gmt_modified":"2025-10-08T18:28:50+08:00","raw_data":"WikiEncrypted:1TcXmWRnDAgI41cGfWTUk1R7Ob0dlO4iS5md97HGy1IUcNsLG/EGmFW+BE7FWuw6SWfHaCr+3MFY0MgqSzOl1OL2ZM9TRbeL8AfQEc0ln3MMKbJQCyDbnjZyYdY/LJJEcsEHhprJAw8tIkRHq/yYKI/FQE4+YkVB7Cxhfi+vNWM8okozNI1ndjoiweeS+IlD3Yfyxq+htkYw/Fyfy5PwyH8qf1tY9ToWSgBkaGm0nl1J7yTZobw3ISf4Dr6L+VaMy5i9Wt1e4xnz1cKzeamnSMuW/ntuDaTXGzqypeuvRNCLYSWE3IzNMuJlr9KIZbOWsrhy+YY045ObSUF67N/A6BUP+0iSk38A1T/E5+pI5JhlkIld8iyW411EvFzoVzyciwB7Oc6uFqVG6VPv1UNit7STXIBiGJjGQSE8aUoqOUP2f5RqWcUjidoH7+Gjj1TlBryTcdmu27PLhhzofQYQqR3KKsKQg/fTkpRlzObdnqTkINMqBINpscAMsO68JlXBQ87nMRHflBa+KzfPIo9+M+agfc/jCH3//VzBWsObHCqSQDK7L70o0bIVQSrdVd+Hcr2jRepyyVTEbh5JlyXjSjad75lkuTZPIO+JSToIqj7FspqO4XxAN6syEKlOxVJgXDkwys+2F+avcGxsj4eCMnlBzckPEWQh4JFOY7D7Br9rINJtG5LMVZbbbIxKAVbgYUFH6PnVTGtkZBxyoI6tRX7SLvBJRLztV0lVk0JTcnUM2z4poezd3nmEHAWf9OMGY4nImos2OuYgEXFJh4eg9hbcZfUcJzY7tjgfkaX0moVwltRVq8E+Nx4+aHaPlP7k3Zsfk5uNA3Hy0f1Nd0Zl7bdqfpymAG0krtNjxarmim3QtliP6m+TdinGDRRk5qWRUlvl6rzFALN8H5IVMvYU7Kx/X3nTO9Q/VWg96lS/O4OKkO7ZILzgR4og8ulXKnlyT2DSistUkyBi5oHlhvzX1AxQvFcB7tbuiJEcnbDITKxOZbEiZhn+Hn3RHNo7p317l2W3jSbBUB8CsITZxd9AVDmEAkqGyljFIeDeahooiZ4TexZR/g5OcHWhj9oPkevPKLubVVYLNOFsTYyhW/JqjRBQUvdBhXchp3dGk+J7ShGwPd8QpYEyya0Qp+oEwSKHatFjL7CCd9XVcISq/eGmQPGzIIFQUzatZKGZMhHWrfD+8ZiaXsXdxKmL6n0ch83LPdUXeLKvH8xH+TFsRTx6tnNoLT5srj96a/fvEoiULLNhwd/XklSwmBC6E10Y+H+ypV+pBstWfpyChTgc9jSiJ69+jPs4vs49ypcBttV6yQtBjmQrlN+pk5pfjuaW0MBmkoE0MAoyLn+NLEPlMdU8NudCbRyh1lpIUyPOYdTVFzzdkPENvQY7KrzMhlP2vMvDS0VjDFFxLYP+CKh3KnvYVfn/AbDOXKYyPnK+ReyMlw8sjOlW6FCeVmd3C/6mosV+fOfQSy/jUiFHe+7WaTs5TCyPZWPnx05rHh+qTi6A4JQcWUyc1CXLWHc+1r2Uujt/3JMOGBxu3qSFz3ZQuU+34En5cNwe2W1lvJCdHcErhmhYPIXOzEPJYem6PmeNC3Yu6jjLiAVqN1ymNC72laPCeVZIq0h4BRRQh0Yl5XefaCvS2gTeuFS3wcNJAjGam9X/mEAU4ZJ59+7IcdoCS0V/W+QYTcDCpAQ0Yg78TnDcDlBquQyfldjKTpjv8ThpZN1RKcB17BDr8xAwX1FBjuNUZ6EW1Rr8ip9RLZHUp7fylWm2TVFy3nXmxuWxre7PALO6","layer_level":1},{"id":"e047b856-1a8e-4ead-bda6-66d7c3ab4651","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"授权机制","description":"authorization","prompt":"创建kami_backend基于Casbin的RBAC授权系统的详细文档。全面解释角色-权限-资源的访问控制模型,分析rbac_model.conf中的策略规则定义。描述权限检查的实现机制,包括如何在控制器和服务层进行权限验证。说明角色和权限的管理接口,如创建、更新和删除权限规则。提供权限策略的配置示例和最佳实践。解释权限缓存机制和性能优化策略。为开发者提供自定义权限策略的指导和调试技巧。","parent_id":"ad94de09-b7fe-48cd-9a8a-bcfa78565c2a","order":1,"progress_status":"completed","dependent_files":"resource/casbin/rbac_model.conf,internal/controller/sys_auth_rule/sys_auth_rule_v1_rule_add.go,internal/service/sys_casbin.go,internal/logic/sys_casbin/sysCasbin.go","gmt_create":"2025-10-08T18:18:35+08:00","gmt_modified":"2025-10-08T18:29:44+08:00","raw_data":"WikiEncrypted:Jgq9fCpm/NkqSNIWYhs+n3LeaG07NGCrNcYdQEJMIJmIZ1iPjkNZvT2RpQnX8LDCXRavNA0RTry59fMEhV2iRgG0UidHVojrlOr9wca5f5TTnM0+7u2hJkLOvCJh02e4OasOcajoQDCJYRPEvGMwroqJeEBFOqPeNbEFr8YSlHBQ4kQac5MP3ErY7i2RdzXjaISKkyQnXsz6CHZLCe6Jc9k/Bc35KEHacgylbsyoaIq+IjchEulTpgxDXhJ9hyzb2PtqtWrpOi8q4lEI5zSD7keA0XHr1fkHeO9Wqp2WxVJu3GV+9i1p4F4UOKC5oigUZpN5oC89zXMMJycG+KWpDBLV1uVnFM0QvCe+Sods2wcyBwh4u9Os0xCsB+LnuOvsHvJ/nlbg1SP4r+lNcFgH9aHkcDuglfuq/uqbP953Dwciyb31t/GI0MDEZ4oa6QRxRuhEd4wqwXiaEhtZWf8OCnYwhff/Jep1puFl4BCxqPFZEEpeMlC2m926O/zUP0rQC9Ufhl/N46tVJ16zr0hwRoSETnCsyudAIqE0no789R/p2ySv5Oy/JXDGVORLTWdh1hWxJmnn3FGmIBoG8qaO99VPNz9f19v+cIGrBliOGIj0NkMQRs4vri24/lOx20ZfTwi4zYK0M9zC2I5iGUUxh0dR0AKrwzEw7la1qprAEVtuxf/q0GL7+oMH6cz+jXitSlWAdLRdQXHcjTwodPKh3Lx0favJ8wr7Em4q6/BOGw7RRrpajvmwvwBJQ9Df6j2T+BWCILgA+HjG+iHy7z0CPQI45ZnqzsAvkvVc3SLpGbuMDaRkk66OYbpJOgUB0/Vwer5o8ujRZuJbN93gOm/FfHAL2hNPil/xW5IPXii50A8rAeRSW5lopgO+AoBNtoAIbEahpFUdQwE0Goq1KE6VNwFYbMDd0RJh9zx3hWvfHC5ZWxdNw1d6XvEDdDoXQ4y0YtnTRKUQ815+gd6i8hDS54YTp9p9Y1Z9ivaIOYljCZuQFAs7WYiXGWYeg8OudG7GRsOlTk9annGxH1Ag/n/g638OMH/Ky8R6f2ZsyQADvPNcJuOX9iMWAYs5b/RtyY/WPtzSNTSB8bBZKM4cz/pYxQlmQTR28p+cSnX7IfeEYAgLk+8pCEirf+woRHrYGxC/YviB14bPrDSrv+v5TARuzFxKS8KQ2hKVdF0/ajde7J87lNs+7BsY7rUbb6UMsliP","layer_level":1},{"id":"3885dee9-9a55-4da0-8506-1a84306cae21","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"监控系统集成","description":"monitoring-integration","prompt":"创建kami_backend监控系统集成的全面文档。详细说明OpenTelemetry的集成实现,包括追踪(Tracing)、指标(Metrics)和日志(Logging)的收集与导出机制。解释otel包的配置结构,如何设置采样率、导出器(Exporter)、资源属性和传播格式。提供代码示例,展示如何在控制器、服务层和业务逻辑中创建和使用Span。文档应包含监控数据的上下文传递、错误追踪、性能瓶颈分析等高级功能的使用方法。解释监控集成的技术决策,如为何选择特定的后端存储(如Jaeger、Prometheus)、数据采样策略和性能开销控制。提供监控系统常见问题的故障排除指南,如数据丢失、延迟高、资源消耗过大等问题的解决方案。","parent_id":"050aabef-4c8c-4892-849c-74a2e3feb22b","order":1,"progress_status":"completed","dependent_files":"utility/otel/,internal/cmd/cmd.go,utility/monitor/","gmt_create":"2025-10-08T18:18:35+08:00","gmt_modified":"2025-10-08T18:29:59+08:00","raw_data":"WikiEncrypted:HL3VqGjXq8A3aGeLxAjVPrAH/UrhOB11piGSWoyOV2dHVr0n3Bn0Swd0H0gYOAdbVNKbTmRhvw1HJM5/Q01+URHbU/Y2+Djgj9uGcxhMk5cHiAB2TiFj5tg4C/UkYPXIrWDwTdHLdRRcp2V6mOpIyQ1VYlBfNYtuG2wRp42Z+/3bBEIcC+3qsYn8OaFjpKSIAb7FdpUFBciL6M/Cz3oKEQ1x+wRDtToegQWuLK+PutUEfU4fTY5RmVLo6obONP7Z86RTzzERt1QaKURZmZz+C3dlis7l7IYwuic0fiH0WlYGqP3ZHUwurg0vj2eoYkhGSDg2PGUyjOgvO5hIkFEmRWgntr/LrMW5xU17+bnpZAlHWqRP12yvw4Unhvv6C7hw8bk4RWkI4WxEtEMeGEfOAgqIFnXYX/kXT7aanjvdFBbdj61A3GcyOVE9+ELXUY2XHAN4dh1k4NNzNS+z7uX7w8npZUVIzJMb9O0pZPVSJ5ynjrZX8w1k8CpU8c6M2orol/fUttKuMCEh3K/7YZwnuqssxlrM1Em1LqeaImn8QKWwUvv0ymyQc8HzlXCVqkyYKt5lkr9LSTQ4P9BeXrqXGW0AqC3ZUT6GFmG7IL4dNpjZVbbdZ63c+bVqJFrc3VDYaHNR71iLMhckXKIqy1DGe4c9rQ7A1ohCi+U8v3sV9PaXPKI4EOXyPI9tw2OooH0DBXzUMUB4Q4ZnXv4IedHG130GqLFaL66h5kI3ytLXWeDFEX3IJGUaZXPLHb2FnnNyOqJam8OyIbKwxKZnC/9DZTLG67MZ3x0h3Bql5sTCKKDd6s31eRagURn8oamaCZhRGiXfNVE+syT8rpCXCvRUS+ZG3PLPexlIO2vsW4svMqFbHRE8JAMx+CAo2ijQsNfSk+8T8yS51i1ZrADladfIEkm6Sle2Q7O/UiQU1T144p0x9B/j2gmzyFUhi2AQqc2sJBc8RPEOIiUZIzmG4A/OxYLboQ4d0dNWsBVIgryijVdKMsdhu7r9EY5Y04rOE0oGPhpQbRRxgn3lqp/ar3dVNJEwsGvJkTOXYB+YdN279sC8BMPv2FIpOG6eo9aS0S35wZifJMcsUxdAwMF0+6zfRRhtmZbIO4jaev9day1xzb7z+riYh7PGZmEBIlcAVAZijgCXDRaGAfl3UozNebRaMPpkgSNoC1PAsLZ9iI2bH6O7LjO78LGzXh2CxdITkkbN7tWe1d4FArATCWLjMeJ2YdRpWhVS7CGwFOY9h77wSLiIzp5AxuHQvzQQib0YOpn+pF4x6n6JuvUO2OfEX4p0JEi0bqVC4QC375wgrU3+1SjgBgNk9PGdm6a5Ya2vEFTmlXFdHkAsB8bmXE15lm4E0sT18xxsQMJpyizPwXOPCfqbbyKhdiawTzJUl9aA7j+SeEZY2sT/Q44UXLmZm1uqB3wjwH/qcmPv9my8fFKC00IQpNmmskyEPcp8qBrrPOAe","layer_level":1},{"id":"3c6ca985-3423-453c-9f11-d9030f798abe","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"容器化部署","description":"containerization","prompt":"创建kami_backend容器化部署的完整文档。详细解析Dockerfile的每一层构建指令,包括基础镜像选择、依赖安装、代码复制、环境变量设置等。深入分析docker-compose.yml文件中的服务编排配置,包括kami_backend服务、数据库、Redis等组件的定义和网络配置。解释不同docker-compose文件(如docker-compose-local.yaml)的用途差异。提供容器化部署的完整流程,包括镜像构建、服务启动、日志查看和容器管理。包含性能优化建议和安全加固措施。","parent_id":"519aff94-32db-4783-85f1-071d6c314ff3","order":1,"progress_status":"completed","dependent_files":"manifest/docker/Dockerfile,manifest/docker/docker-compose.yml,manifest/docker/docker-compose-local.yaml,manifest/docker/install.sh,manifest/docker/install-test.sh","gmt_create":"2025-10-08T18:18:36+08:00","gmt_modified":"2025-10-08T18:30:37+08:00","raw_data":"WikiEncrypted:OYVOcFWO8QG2KTNzD99v4xxMusUyWhQxf3J/07wObNtFIyC4CbcNIuFY4V1ewVc8ZQcA3boon6xnUDfRpiaK2BRUAhlH1+fbuKhTMeIFLZYAHWpeiuXeHFl6FjFS/Cz8hv30Yi+prZq5Jfywa+60mlYxpaLuPZRvQ9V2zJsOxq1B15dUxEuRufn+MrL0Neq+z5sRR1Li6Gbk2vOpCMwAS4vt5etXp8EZqcZVW7KSxQ3bgZ1Pb990BioH3X/Tz0KQrflb+UBdIuknD2HkRxU5RnOoGPbu2nkZ0C0hTPDypRuyqKytb+l2q0Dkn8T7Qo6ynR+rsTuCWaGZkc6VZ1GRE7tqWLwW9OaS41EEsLeWYYpxpKvxrHirUd+44TdZdrQ9oUJK2nb0N0NiUkw32CvxFFbPc5W4QyrL7iXhaG6Gj6061EFeHrICyE5KcKpAf9B1eRQYVz9iiPfJURNgeZ+A1xXjACHfHcxHGOybBmMNqd6tzwXUuSnr7aZLcIWgX8Kh7nqL6JYFEg4xUjGLwqR5xCb8oJoQW88R6ziIRJX3RBOgw1cDcItN3SWIf8LXr/ZEheooWu0UecaT5Tt+OarwjqrvR+VKCn9LybaKKxZ/UVF0CB6q69JqoS8T8j6arNZY1b2rh79QCFJzZCBBRgRXmyOZ0cVZMUjEh1ZLGyRccqettD01YdFu08Mmtoo4dbvPVQ5mvzf8pPL78wGjmH/+KH0HIUU099OhBPMJVIwnTlJpGnck+z4RgezxjodsRlMsKqNbB/Xy0oLHreagPvqmPY/jcsorcTDDSTALmdq6waozV2NC+WpiFT/4qtF0fy5PlWRq/3KjHXPdCikpQhfAeZWdNO42wtMH+Qaj1/WI+hU3iXHQwhTDIHySs4Dj1/2TXRiSvvWiFSKNrR6LmE/n5lF0f9aRKlL6xFpbXgehEN7k87Sm8UsEHEB81vAn/2grydMlOYXMvKZBk1djbqUTsexUoAo4hrL6jD7hQDX+TX5UVamMcz76YDh6+nSw+3++gOtJ7x5OgqmzxSaGtgM5I6xiQ6mDrHzeYx6JxJp4C75j/C60IpN3S5/rOUcPQUNXVzK6SgprGfIESnUQLqnvyJ/C1GSIjeMgnRJsJ6NW3wQ5w3yDIBQIBxTAcL1a3h6HARnuuWjmTh20uv9ySipFsJpA1MXbCiUUMO7J0Oo9N+lIGB2Jn1z3oBrgqUDA6uVIFMwtLdhGRvcdGEtx/RPV8Z+cJCV2iezxt2xj2rfx4T7LVYqsI9sU88RdNwT6Kc9S","layer_level":1},{"id":"d56eb845-7c0e-4be8-bf3a-239e3c0eb5e3","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"京东卡密管理逻辑","description":"jd-card-logic","prompt":"创建京东卡密管理业务逻辑的详细文档。深入阐述京东卡密账户的创建、更新、删除和状态管理流程,包括账户分组、扣款规则、历史记录的管理。详细说明京东卡密兑换逻辑,涵盖兑换订单创建、状态管理、历史查询等核心功能。解释京东卡密账户与订单系统、支付系统的集成模式。提供具体的代码示例,展示关键业务方法如账户创建、兑换处理的实现细节。记录京东卡密管理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案。","parent_id":"eaa525f4-7640-4d4e-84ae-7624f8b5c790","order":1,"progress_status":"completed","dependent_files":"internal/logic/card_redeem_account/,internal/service/card_redeem_account.go,internal/controller/card_info_jd/,internal/controller/card_redeem_jd/","gmt_create":"2025-10-08T18:18:47+08:00","gmt_modified":"2025-10-08T18:43:18+08:00","raw_data":"WikiEncrypted:2Tw4z8NsJjOlKl4tOUQ4rUaSoXsxiGw9O3wpAWVX5Hw9Zn+t5brSy6DKjiADvUn5zD80pLs7e6Rkb+ZAlcoR/eE9ccXFudltqMag2wVsQePcUFo+mDT2nXjsqLT5mA40/IJ49Ru5LCBQbhNci8QbxMRFvluUXdUvuenc+LVNm3AQOYOQb89aMmsZsVDljYVNe+DYDHhn1OdSnbB1AKBs++zJFjWL+nFebpJ9CY+McwdmT3zg3RknR0qEqbWPo4s6NUSNZPhPF+SlzrdZ3j4cu77xkyDstaH9mreAGyhHuXVsdFzJmURaJUlHUm8hYUdE4O7w4bBKxgWZFJbLgMVTl6UZUWPwrNr4CcSCZgiY3Y72c2iEwwNk9aqysdXjbO+p7Ec8ZYpv6rEkhDmF3uuk24EZEjwXvp5I8djNFI5LRvdtG3Ai10AO86bBZMAi7onQQatHdN+CiLQ+Ur4i0gEAexVwE0OZiX4RzpbmVoT36NSPmddO3GgUxsjod1vqalZqy3gIt1Hs8V7HawKDtH7IzhQEvYgJrG23vzUi4V2QXeHD3fF4vkPByfMCRbNyGcv6o6/hW4eb4yPWX1LwPg8iEX9imx3TxqA/8qsHTMfJrmtP70NNzXeuMnQ7MvIjlq55Nx8wejsRWuEFaen8j2bbwCN4WaQHXEaMigx+saSsuifW9y3CpctQdISZv6ap1+3urMk/me1OIuSuaI0EJQAWsx3J7j6ecoA70728mZR6G6nih5Ggl96zSMJ1jN6r1WOXuJtMff+thBaktZMtVZfeMrxkSFR8TDMkRk51Lr9sWx3h70qF3rtMHB7rlV/brkmCohMKLNZW64EldtqyXQJI4tIrzKSMtXGp60yMJXulcx6L/jmYF9VK71omKqV2EP1N714L9AxSKjz6iNubOjoHgA4Px9MPP+1YqNczN+33A+DCiqaXK3Vm5REcp8Qx9nXK6tY7rJ5/Fs8/2sdX6zOZ6AeMkD/MPatdnA0yFdNeOZSOC8xbUq1b6YKXG4bVHx9lEsR5O0o0tjqONmSgxLUVWjluuHRdwACQNFlDW9U7SoAr6veu4VYcUSmsrhzx8KQeozPeBcsnqqU2ydBXJzZHYQBc3J+YWJSYH14RGEMaFrv6/Nr6VHLMBw+f8RjY05OnCeLDNe5B65tFrMVSCYcV9rWfdRQd6wsvz8GDwm9S25YgjhWvZ8VsDMa51+d7I9sg9vzz/zDQoS9HhBLYVfkX39aSxM0fxN7tkMUyCmaihme6RTMwIQaCAd4wGYLxckiUS35HK6qEUGKKUQNloHn9b1hbVmMMrsNNoCaswodPc73C9xNhGEp+j3oduB0O4cF5cOKqcivuxvAbgm/gTTig4wjmXa5BtANQsXfwfOs9b8cxzitekmHWMcpSlMFrSW/6Ku+53nGXPrRe9SXxaowk7Q==","layer_level":2},{"id":"fa42c78e-0f93-45a1-8ee8-9cf8cfac869e","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"地域限制机制","description":"geographical-restriction","prompt":"创建kami_backend地域限制机制的详细文档。深入阐述基于地理位置的访问控制实现原理,包括省份限制规则的配置与管理。详细说明地域限制的查询接口、数据结构和生效流程。解释如何通过IP地址解析获取地理位置信息,并与限制规则进行匹配。提供地域限制配置的最佳实践和典型应用场景,如区域化服务控制、合规性要求满足等。包含地域限制与其他风控措施的协同工作机制。","parent_id":"93bada60-b20a-4977-b82c-eca224ca34f6","order":1,"progress_status":"completed","dependent_files":"internal/logic/restriction/restriction.go,internal/controller/restriction/restriction_v1_query_all_province.go,internal/consts/restriction.go","gmt_create":"2025-10-08T18:18:52+08:00","gmt_modified":"2025-10-08T18:43:32+08:00","raw_data":"WikiEncrypted:P3NkKI9iTG8m0x1wQHusvRv9W28aLZc7fU8yLGlEjox9OneM+QWZz8mD/lxQGkCXhSKurHn9FyuzwAEvgDByqBZ7wI7cF4nt3mVvixHgQ68puv7ji8/e+4o3WVDe4+8vsAtEyK9fl7kY2GmlYHgX0y8CvGKG6niBx5OhF5+v8XLH5YnRx9SxDy4oOvJlowOdBp03CrXgMsnH0VMGn2e4/QNq3zorUijFq6hhThfi8h8K478JvG4nI1rPm9vMqxW+hL6U7RkzvqGkz9JOueW0yldQCsHXDBvL+C5xJEze5E7wVO3Ii37LfN2vZHs8Cqc0hzx5hSWDbwjyqH50a9fr+JtvqeNiM0KaHYkBcDULqYe6L2L/o2nIPOEYnkp6iJEAcjpYE9Uil3xkjX9KLwpxAl942K6hi0dsmT04Y4g5ZEFA/sVUuCDQweNW4jNCnt6tYNFaNmX9Cl0DvquC6gdsdTY175dRS5x+0mJHayZQeLg8CY2C/Rrztu4qJL5gQjgMwN8ecUts0GQfqTBCxI0VNfEkQEy3MGNQTABdpNS9m0jiCnfRitMZoG8ap6PV0AmhyH6VQlPd8pJa7KCdN9lkv1rqGdx5G6zaF/MZPfaPJFpdJiWhukBzzxdCNzmccBJO8ylIedjYCNdh+rN30rCGcg3gf3szYxyxxodXhMcXDflzinnHCi2kZpQvpZX7u5c/7MlSVjj6tqjWsOjaZZPomhTaaLW2R6K0oCYyAyy4XxIUUTpRo2Vpeq3YROKE4BsXmz9v8sH9g6FWvAP7Bwn/AuYT0wh4JsGAgA+NBe/PdIf7zm6nADsvilJy42+JjIQTsnlFqclbGQs3yLqQApYF1FENA4b7GX+G8Gduf/8IVRXywollxZevSM+WHtGM9LtCGcUjAJdQNPBQs/ql6UwlgkK5yjLQqDWnFyHm3VI9LWUUIQmzNtqqtYBlLuxxfpQQygRbNIg+Ys+aHYHCVG7z6UDeJaNJur9jH6MVvUUbooHkZq8h90d3ogGd4tLH3ybQxWv5e2eW8CASlRvdCBfiztC6UKnv7akCXv1yBspBgGcpoKYxsW4OIn3+3ZqgS7KpQ/eB0oNS0QVFPXu8Jh11AcLQSuMJQrNqXMQRDKxVl61YCpSVl2XH872xJkI3upUWdrpkcfTy5QD16RHGL/Q55fVpHpTf4FPJIxxf5vbC4u0=","layer_level":2},{"id":"0e1b4f85-8e7d-463d-b8db-4ee330d61a7f","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"用户认证管理","description":"user-authentication","prompt":"创建kami_backend用户认证管理的详细文档。全面描述用户登录、登出和会话管理的实现机制。详细说明TOTP双因素认证的集成方式、安全机制和用户配置流程。解释用户身份验证令牌的生成、验证和刷新过程。阐述用户登录日志记录和安全审计的实现细节。提供用户认证最佳实践,包括密码策略、会话超时设置和安全防护措施。包含常见认证问题的排查方法和解决方案。","parent_id":"495d1fcb-e69f-41b5-b893-4efb8ffae28c","order":1,"progress_status":"completed","dependent_files":"internal/logic/sys_user/sys_user.go,internal/logic/sys_user/totp.go,internal/service/sys_user.go,internal/controller/sysUser/,internal/controller/sys_user_login/,utility/mfa/mfa.go,utility/token/user_token.go","gmt_create":"2025-10-08T18:19:01+08:00","gmt_modified":"2025-10-08T18:44:56+08:00","raw_data":"WikiEncrypted:SmmNTSq96N8aZksVSKE+83PC+cNK/DfBO+OUzl7+L2l2e/CIGqmnuvQf7qkuacMmnoLkipFhcdM+cLbUip31pYXUt+XyL88CjpCGtcV6WgiA3HqAdxPgiOexv3ElMAo/PDxaz+XbGSJxoPBZtHoB6NNUkOCuJ5XBXj0Hr1xrVx8wlNClVHsfL4T+uVK3j2jS0QhXXuyonPfAcspk5vveTDxeOyjeihNnTC1MJFgsMMw3+Jti190Cck3TrSyDb3h6qh/PZb0gRGz6yWJTQ6zKuk4lc9rCqAA7hMx6cwfzrOQeYbg0Wzho8paOlKE98Xb2vm5la+D4bEKvc77rc664fi3jCE4zVr6swviQ3BnlML0N7UWXhrLdZSkj3jGWtYLsbFvpPkOPcpvDF6vrU5F85Bhn5oHjYsy1jzwn2DFnnj+vLu0FYGhT4aQO2iSMJwoYrw1PdPNiIELqGSJVUBci7KJjmxgarnzumXVxGySE/Rs9TWGfzC/tqF0JY9GzD2MoA47uKrT7ly2om4B9eb0Aw9/qA1DR4GTdLMMCVieDKH/H4FXJbUzHK5Vhw7/GR6LEbAgPENPEoDpQwYt1WxhqwfT0pMsf9raNag9Ba6R6Ye/M6cBwFT+ctK55NH70iSAiWcfv/WAVthOatk1Ej3qtlzVdQJbKvK6IGsF80wrW1B1QRbGCnnBQXgKEx/sOF/Xhd92NBToz/uyjvtJpFyiNDR6KFRVPs4z7iRX1FnfdqlkwtNJsr7y2hlIJ2feB69kesP3qPXVR3YxgO8G4jFYVRQ9ij2jjvdEJa7jytAJ36PtgxFxZDW2Tbi/U5ZIpUX/Y7hl9P6o+slKpObwP1amRzF4dabn1EbpDkwg90yU5AoC4112sIEG5+mmJG6l3g/mAfVPRDRzWI0zPScgvH4Ha3wmdXidew2+BuF6gyMXwwl+v3nsOJBkLfqWMKaT7/OaKBmz3QlY0c0QmlG7SOwc1Zz9VRyOhho+85vphYELa/gNUecRlWEO2c8JPDeLyFqsOklUKP1e0RYUjyvfypAJPLyUyQBZVr22zeU+ueeTMHLYPp3auXRYqCD4P7v3fw1UGPsEpQyBPq07IXGwUPfBp2vO6YaYc7k4yzt0417aLPUkrZJbJ/W+EW5T1EaxrNllcpSmgMYd3LwO+rEoUUokYfErQgeCtv7ycv7HbJF1IbFIa+uJvGJanYHRAE6VjAfb0qscRKWPws0eM+3OgiU4nvKX0v+yTCOR9LKbd8VAwBTnqM6EofjNR71Hsy+p4dYbW/fldN+bH9YlMrNnIDk31gXIxHLPCTNRBcl73r/i++9Q=","layer_level":2},{"id":"1ee1a6e7-8394-4ff7-88af-afda35cd1775","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"角色管理API","description":"api-auth-role","prompt":"创建角色管理API的详细文档,涵盖角色的增删改查操作。详细说明创建角色、更新角色、删除角色和获取角色列表等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括角色权限分配、角色继承配置和角色状态管理。解释角色在RBAC权限控制模型中的核心作用,以及如何通过角色实现细粒度的访问控制。文档应包含错误处理策略、安全考虑和性能优化建议,确保与代码库中的实际实现完全一致。","parent_id":"681cb8e8-add7-42cb-8297-72df3436bc74","order":1,"progress_status":"completed","dependent_files":"api/authority/v1/role.go,internal/controller/authority/authority_v1_role_create.go,internal/controller/authority/authority_v1_role_update.go,internal/controller/authority/authority_v1_role_delete.go,internal/controller/authority/authority_v1_role_list.go","gmt_create":"2025-10-08T18:19:07+08:00","gmt_modified":"2025-10-08T18:44:25+08:00","raw_data":"WikiEncrypted:7ZB9yjzZwc/JkOb5fG5L6+rRbE7IygCTc7CtI4cT8O+zD59F1CL4IfdomTUY+ERjrw/C1sgRZPKjMd/qJd0JK1XynjC5j+ttuY7rxQ3NcMYL4gDLmIj60E0t7iT9EEmLacTiGIEqbqD75xu2P0W8HqTa+6+qc0rXfaxxNXqRIidThrwEfqDd+8GuJWX3FDwbUQ4E6veSUnxgr2Z4FGGHUaKakZAA8tw1Jhr+KHZKSE6MRz9Ent00d2XRIl+nNuUHSwyIayOE+31pjmtBYrUGvgZRJQ89Qd91L/06KO/Vy5OLU4e+YNvpxr7IohsR038eD8jjw1ThQWu6RaUCbDDuFe31sXtXisnhtQIomlucN6fjfrCF+Mw/k65a3JkM/cN94wotQh4vyUz0nKhjF5z0YVta+xU2veibFLulf1veHajhsfJEu3boSmNsh65tx2mblFbm7aw91yNO6saoexuqpDG/7tNWtDTtC5z4oGGlvkBJ67JDoptTwX+i35PtNzPa1mDBl6ab70c0CfShx3q/vk96XMdYjcP5W7HGJ3P3O6YXDEggum7/XyhGg+xT7SSemnnmsoJxLhzVAZCYOkdstHPdP0Ad6Lv799KPUznczFzSEfmcGikpjBEQGXd28vffmGl8euio5vBybeVmfvYB06JMt+CgXslLBnKUJstgJlJYuNHLyRdvmzmtmhhCtmfsNl+DNJvsGvDt11mFWSc8+kKE4wWZW84sB4J8N6EUg4jSm1AN32SRiQLsW0hLRogJ++RBcT91MH3Be4iTYPn7aJC61taQjeJVzSUCJHezetuWA4juKiMlMcvtdAaucOnpfUn1t6CWhb8uQVPXLkWFGmQ1l1RZwHUrXKka5FW7ZbJeOTllkZZDqsiOoPkQssL7UlrdCzI0EhPD4NDeHvSeYeH1jQ0qHQXufPTq9Mzz5PSfNMLm91nr5raDKA8nufucxAilGRbrc2PDR4zAeIRj+Yp320b8o3mLzkgQU8j1locC21AUeGd240sfyo0QGF3trS3wYEAY3/CmWtFAqU6vQR+15tvVSKbbqc5sb85nTKtHIjMszWB5pIlPCqPWJ+CdOKPbWhAIYxKk5r03JCuskliHuZjtwe7pItkgOOUJciW/oqY7dHknLDZfkJhC7lD1OW2KZ6RVwr0vBNrGExBTVocTT63hR6goEi1xYxhrbhDzzZzWZDTgLOY4RGPmo36vL4QGdRldZQJi2Hr1BdbLepk3eE1FbzM6AYlxss5sIaDPslwaLPuNFVNy/SJkKmEh95cIvJrveeAlEBNcTWtWD9jbxK6tWzeZBd6UgSuRoAlaKwMXCsvtXK3kSzc/zdKoHZYdc1nO13T/yWyV6Z25x7lqc9+3a1n5+kNrSn0pJI91rOTde7eIvfegV872hXtu","layer_level":2},{"id":"91befb50-6592-4b74-82da-7510ab876eff","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"订单日志管理","description":"api-order-log","prompt":"创建订单日志管理API的详细文档,涵盖订单日志的查询和删除功能。详细说明GET /api/v1/order/log/list和DELETE /api/v1/order/log/delete端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括订单日志的数据结构、查询过滤条件、分页机制和删除策略。提供实际使用示例,展示如何通过API获取特定订单的日志记录,以及如何清理过期或无效的日志数据。解释订单日志在系统审计、问题排查和业务分析中的作用,以及与其他订单组件的集成方式。提供性能优化建议,如合理设置查询时间范围和分页大小,避免对数据库造成过大压力。同时说明日志保留策略和安全访问控制机制。","parent_id":"079920b2-aa64-48aa-a92d-8decf24623b1","order":1,"progress_status":"completed","dependent_files":"api/order/v1/log.go,internal/controller/order/order_v1_order_log_list.go,internal/controller/order/order_v1_order_log_delete.go","gmt_create":"2025-10-08T18:19:17+08:00","gmt_modified":"2025-10-08T18:45:08+08:00","raw_data":"WikiEncrypted:9qHpiFX/XrbQzm4K3sHnDMz1KoRQEV75M4mACux9a19OV4ctaPk31IV5hcbtR/46QuarpgfjVEZ8jQDp8PT83SSZ5sjIba6R38nAWF81guWsZFOr8miHF8AOBbRBKlXQMX9qA9/8xyHTHhcnCOVaxCxPYMfBxEefEJifj/adPFe/8wtcWawGJPTZpd7DNy9QpIaS5iU/ARujr8LnXiTEKGnjlunB578POzKxX4UXdmbcVTNSytHSri9S9J6BggfcrJGkVPKDDcot5vaHhUcEVKq0pEmS4yex98PunfcUWXuwsdZIrKalMB5OrO8GRvSrlWdZxCJj/k++ohzpqHN192cAG1pU/wyNroxArGW5X0gwOQcaElNeGnogN2TFFJGvqyqWBwO19YUgDpesqT6gDuJ2pkgvqS8RZUblyJHq//vtWwPAcIm2Q+qLtyLn+M5/z92+wkU6qRgQ4H6/MR6/g+HKKHZUJKPqQEakWetb/LtskzLRkc4dae4st9/vZaLVBveBisOMNeAuIHLFbYQ6G/Jc3pzpCF3yr/Mn4q5lkmvBfZBPKPml75e3dh6NHfTHwrkoGAtQjvOyOr7RGjYWKFIsEz/ydqbgqDLy3CTZKlINfdDmK7gSLJnutOGLiTitJkIm6m67+97hgwaAXgS1odKB9OjQrBlW9LiZmw5fPcoQ+X9vPR+6qIe1Z5b6qofLe8VEizZR00qjZvjE+nT8osWYNzgb45vnED0BpC5WU5ESzSu0HgxuY710ywYZX3dRsrFkqlqGE0DzjhtFUOi81RUh0QfjmhjL5RRxKpJgRZXsiz4uW2DFhaADL3xSvrwM9I+nKE5ZBauh0UZGpEVcaUHVwnC2QzngOgpZxgv6I3Er2QYJ/N6h6c588dN80jkaCKN7GvS7AV6KGOL6YVQkH7R64CExcOYPStomFg0iVEguaJRqdlzupGlaZMx4JsIVGHWPZLSV1n67sEpUPpQeFllrZ7xBHS9dOud5Vg+odh3kErONG+sVTRKqpnn00/QiCP3yqa/7mckxadgTpgRwbKQgTG6T1csQcJ/smy055YozHVVOgCC9OOF4HHhXmYkBTqkjcXHpOFolJYc4FZaiZ4NVOItx1/wIEpSRQCreHriDMIVS4GgDLr+dQ4sHsXDzD6vT2SfE6xV+fvIygSbbl4Cw78zQTiMbMn6E/DtK+pd5fFvXf2JZBwoGxwWk0G2y5XO1DiSsOEb6SdJ6V6zQBh9xha5QfaqVBLpZcVeYeCupe5REbYW2O/DLiIzSaClUEnwjK6hc04LtFKm7g7WWoxibweIrzo6w9+VGUN6G4aRNZYrzv6Q8gb/IFwPz6xIj9mvW7LKQxi52eWK6u6oKbMjIT7Nn9rdvvVLVE7zOwVmJIgen6MBiY4tMXm7aBgHg4n/BGWlcru47by8GF5bs8U3+SN1wApsyDWRGW+SiIx0ErkWSaWIbSbkEF5CdMZBVn8PM6nnjsfglN9Y1ObDoHU8MUzJ6zi83cnmLi4qyQk0=","layer_level":2},{"id":"288b9b5a-64ba-4e93-885d-499412ad90fc","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"京东卡密管理API","description":"api-card-info-jd","prompt":"创建京东卡密管理API的详细文档,涵盖账户管理、充值处理、订单回调等接口。详细说明账户创建、Cookie管理、充值提交、订单历史查询等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括批量添加京东账户Cookie、充值订单提交、订单状态同步等场景。解释京东卡密特有的账户Cookie验证机制和风控策略,提供错误处理策略和安全考虑。文档应包含客户端实现指南和性能优化建议,特别关注京东平台的反爬虫机制和请求频率限制。","parent_id":"0d28da6e-d972-4227-9fc4-ecf26d5c6b2d","order":1,"progress_status":"completed","dependent_files":"api/card_info_jd/v1/account.go,api/card_info_jd/v1/order.go,api/card_info_jd/v1/order_summary.go,internal/controller/card_info_jd/card_info_jd_v1_jd_account_create.go,internal/controller/card_info_jd/card_info_jd_v1_submit.go,internal/controller/card_info_jd/card_info_jd_v1_order_callback.go,internal/logic/card_redeem_account/query.go,internal/logic/card_redeem_order/order.go","gmt_create":"2025-10-08T18:19:17+08:00","gmt_modified":"2025-10-08T18:46:02+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBkzZCXcBOHF+FU6wKtFwu90n8FV1byN/6qXgm2Qb9b2hMmA3oufYwccgA02hX880Lv8YtqGVaSdnY3kqkQ7D0lncxopWCP3yTvZllrVraULiC4X6Vv8n39VgoeEkDashdygPT6mPEo5kbP1lV6d2ucc1hVv67KUZugwcSrLRK3B+PQZ9VYvsJpwDZewlCbQsFhobt+eW2yuWVd9RIvYzVbBXpTSEjNXMu9gG317OVvQXaCp/EaNkim3txSiiIMVcr0VYiLlzUjMUknrCRbZ88LPCSkCYdN6vwgd3KU24W2zVIqRm1UTgj7l/GazbLHOElYIL5QLNFJNT2qq5ALN+bUE6Uw/ZCDwDrMjGTpP0xh1/oOtQazPknXxqng7eafCWnLouo5JTYZ7avPjEfhgi2mV08rJ5YK1TA2ecTkN7jIHJzWIyqgGzFQn9dHh2Y4KdBA8s2dr+2yPtYLOYj9XJ3BDwXZNT0J3C5TxL3t9gpTeUbsvyEjDP66j2zMZF3ctVz9a/GTgzXkUST0XMuf9Qj60lGAkNIAbJ16+z26hjV30EBAMnp9iKOlOYpGo2lFApxDLfIXOvdLqn+TL0u8epsrExG+wEAKpmyy3NggvYd3yOEzgYVrgTzOt1TliP2s/rG3mev56dhYLbkGcKybuAbATwu/htr0Wazr2gtRyG3qCC4L/yGEZ4OfdjSvvhYSQBD2m7fDhr1u7X6F+Io5BL7mzGmeGAvzCJL8UViQsa2WSRw7F56Kc0e1BZUt5hTruQ/Hr2pnrC/EpdP8IaXYmNETmxupt+44gv+9uuEjWj4Z3zC7WojZzHuVRTDwhzwiXoP7usTBkpZRwM4WtMXqI7xNaKv+AAFqU51fdVhaDayzzd+EjSAqEInjs7ukZ3qjGIU9JLDhA3Nv32zLOwJ6hPeKt1zZVroaKbf22NEDrG/NCgj8ftLm7F3UtvWBKCRNWycvwuI7ZvZq1KfiMOlcPSBlrHN93XJhL0Z/dulb2rdFPIBkOOuAxEcOKG3SOT5LPOArj23wKaeyHtuRXlW5grO8PLN8BR0qmIhing4Tl/YCQezgOz1+8WPzV9z8xKj5DdxYMJ/cSETmgVlrAuIFZkUPHWIAm0ody17ZyQewLxidzeRYufOa1jceRU3DrqMAl6xseIt/b6jHCbWbnUCE+kE15BfJywZa/yA/O68dVryDjd+LUeRl61IvA1TpataICWFyQUspx5gb1xIUfmIg5dUYONhtRCfIMWSDNREDCnDYbmZlGSa9CLT6l7Nf9N2LBRODpTvQYxRppD+P1cfgFQKilRQeN2OXASBs13pYImwDrUF7EVP0TaMqO/qXSJ/+Fflv44kjXjtIMI4Q61JH1tI6a5apoZsoR9dV6oO+QHulXm2rWGzupXfAHDkur6Sxap6VECVqOGv0qGDMqzBKpek8aX5CfQTleRHuByIeSf4HgYucRpzMQyIejcQ70yUT6kNCl5YQM3h4l/ePO6VfOzj7wkiREzWtfOJv99rfjLWA68t9qfkHgfNZlBrPNLwlhZSgoZQbcY3SSofJKOEJjMMDWAmz6K5bV0NxYGXCluIAXfJgeyd2RfUvzGKiIJ3W8+R6EZp7zU/HzgtioQlbbH7GaZiYeCToNIhY9F/zZt9X+KA5i8+WJ1P7VFX5/zUp/oKA==","layer_level":2},{"id":"3738ad5b-aca0-4c87-9e86-9551d689f889","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"商户部署管理","description":"api-merchant-deploy","prompt":"创建商户部署管理API的详细文档。详细说明商户部署信息的管理接口,包括HTTP方法、URL路径、请求参数和响应格式。文档应涵盖商户部署的创建(merchant_v1_merchant_deploy_add)、查询列表(merchant_v1_merchant_deploy_list)、更新(merchant_v1_merchant_deploy_update)、删除(merchant_v1_merchant_deploy_delete)和详情获取(merchant_v1_merchant_deploy_get_detail)等端点。提供实际使用示例,展示如何通过API进行商户部署操作。解释部署数据的结构和字段含义,包括部署环境、服务器配置、API密钥等关键信息。说明部署信息与商户配置的关系和继承机制。包含权限验证和安全考虑,确保部署信息的安全性。提供错误处理策略,如部署冲突、参数验证失败等情况的响应码和错误信息。","parent_id":"c423075a-af3a-4aa8-aeb1-eca97be6acbf","order":1,"progress_status":"completed","dependent_files":"api/merchant/v1/deploy.go,internal/controller/merchant/merchant_v1_merchant_deploy_add.go,internal/controller/merchant/merchant_v1_merchant_deploy_list.go,internal/controller/merchant/merchant_v1_merchant_deploy_update.go,internal/controller/merchant/merchant_v1_merchant_deploy_delete.go,internal/controller/merchant/merchant_v1_merchant_deploy_get_detail.go","gmt_create":"2025-10-08T18:19:28+08:00","gmt_modified":"2025-10-08T18:45:48+08:00","raw_data":"WikiEncrypted:BG3lFnKLVTvBR2vGYwCPyS1oEBfi2AVR56kbRNYu7vwIO+DHFV69S00Cn9VWMkMaxe1C9oIY3Fq7/E2iPGjEOWLuHnpH/Y3i5x5MeS7pdEua/Xmsn3jSgq97JVn4WmFs+i0qFORtaoDVDhsfdANByM3haKpjsykMQbzBjz/AGlh6GFpbuJFVgb8PakAlvFVMMrnfLDVe781PBTGKjZX5cNj9NyCDvYFqpvf8dGl4Eyrme4koWNiLXCaFHzJmzQuJaMryaqUP1GZCqe2hNocsirvz7vpOLLy+C9/tvNacelJ/PPvVaySV5PvfufSSnWflVxy5lYoOguix9DOaCQlCspj6knTDHJTUKkzXNRgu7kE1uNo6hA9C6bZupPxWXqh/WtXoHtoxH4lr1oCT6O1y11QsWsnJ/7fzFR22ixnyeOY94dUztPBFYF23vFw9NWRAwnFGJuWWnffxzjtNaTxcWu4fMwxrdMtddeVJ8I9rYgQbtNCk1A+gl3qSS23N6M/oLZiOJSBLXHEHJ9KOpPi+THSSBjm3vNiDNAe9nQlzY6w3qgi45586Wm+s+OjJ3pKiIFWCPVdYlBDfEp5x+E/rli6xtXrg4H05DlZMMfEaet6Ylh4xcKYzFHXSSAzgP9P02lfxauvCKRSBlKk4ghhEWe4SgnFDc6/Dp2zVdc9zaBhRrMGPgp+kWS6D58e1Ho7BRAgNQ0eI0FuequP7NvUPxXrgef/k+yf6YYV+MtQEEKlG7kSkoNEIUp5jadkG/OEgfpTLT2vPPK3mZcWPYKJAM/tZhzpBWgKL3JUIh6eLEEEwDVb2X3Lu9IJD6gB8HA+C7gsVW16AJTsjjtLAGVCdQsj+lud1Ppg6g9GJNJeEJx4Djdj9cZCnOwNRprRhXy2CkduLwhjTK2oVU93+XcLTH3CLz5Cx5g7umi3cPadEB26x5+F3G4GLhdSHHOb1dxTlI2kNwc2oN4RhCfwXGOKRmSfVZA4YOihgvwUUGUisWTnap3HiweNrJabbS7EzoQqEjyO5q0EY8sXN7oG7lYZRDCffvkLPe1jWWQwRo5vDjsyCZs/Gb1gywv6M17Xlul4LewLk75OyGzh0M70SjvLzJ9Bx8Bv+utnKT3til4k1br3jXch2Gl8wdB4E38Yv4LKW4EEwZg+auRxbDKbek+aYei9UeiNxUguTyXaPvxlI+7MymT0VYf+P4vYS+45qewtlJdmrtZD3AOXpP4+2V08cdJcxFmOKlziCHqhAb7T4aFEDQu660P/1JR/xCSJYtVcF0fvaH/6zEkzwyPXOblsyboTRnmJ44qqpi71Ue+pLszEoBqH9B9Dz6fiGUmw9fAdArnsa1QMK5I5MAWXHf5TuDl8voTH5BBMNyAu3eCFAENlyxqclkhsa4lEY+daBdYn7d69JRiTN0s2pWKfMdsPHLdFOExvi3DX1n5rTvVOPkFR96ULg+Lz1rMcllNEp96RSOFYsApdCMxSWLI6/weKsE0F7HptwTC/A7Ed9uHtl89JAtxmnNoZ8v7RHeYm3Rgl9CpJa2kIcJ0dHDr54cFdZ8lj8Y0xml3QqRWSiZKESxpGH6/DyTiF89SVYFBhsoE+FOZ5jYAkSiFN+pSTT6uGXK1S24qnF404TeJi0oC7QLG2ignQ3a5/X82JqNoMGgU54GCvm4t/sA/0V+fIE7M48InVffczgysFmxej41P4GJtHiVCv8o7to1G2czXP/xj9B/lvRjKdUE1RF66lcEEl5vjwYnqSqHOm0DxpIoTQO0grYuW+/ZpJ8ZslSJByyvB0HGEhgnknkqZBCCCOjWtt9DaJZy29EaruPeoedC2oeZ7ZfD4mKAqt5zjpU3ylWJtYNR7zOpAp3sADXBD4anBD96Hhfij33UuDUH7Kvsnwy1HMhpsflXZIrIB6auN13Ly+jtDu+vizRqlv7BxQVojuYeA==","layer_level":2},{"id":"3cd0ff7f-89a0-4ba5-89c6-d092ac39981d","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"资金流水","description":"api-fund-wallet-log","prompt":"创建资金流水API的详细文档,涵盖资金流水记录的创建、查询、更新和删除等操作。详细说明每个端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括流水记录的类型、金额、时间戳和关联交易等字段,提供实际使用示例、错误处理策略和安全考虑。解释资金流水的实现细节,包括流水号生成规则、对账机制和数据一致性保障。提供客户端实现指南和性能优化建议,确保文档与代码库中的实际实现完全一致。","parent_id":"b24f3c8c-5f2c-435c-99e6-6ee42c47a46d","order":1,"progress_status":"completed","dependent_files":"api/fund/v1/wallet_log.go,internal/controller/fund/fund_v1_menu_log_create.go,internal/controller/fund/fund_v1_menu_log_update.go,internal/controller/fund/fund_v1_menu_log_list.go,internal/controller/fund/fund_v1_menu_log_delete.go","gmt_create":"2025-10-08T18:19:28+08:00","gmt_modified":"2025-10-08T18:46:06+08:00","raw_data":"WikiEncrypted:gLdwQ0KTVfy2nZNoG+5bdVeNIsI7Rn4dw5X6ZL0mhD1BBBIaJJZW2YjOW+ugimYSG9xA3ZUS6OH8+spiwyeUa2dff3Wg3ZoM3OcF6w1SfIUfWmDL1hLvqFGU/n3l0n5WI5Vsx37b9ZMGqW8T5L9fgTo78EUg4QNL4PRhdW9rf+S2C647GMaU++K2tAlKnr/6Uj8FHsdx17K4KU9iZcNTz44B5lqAjKpw7804zOfD3xTGwiANwhF6eXUn8DHvxHXqTiIdqQiZMNtFg+QWjwQXDukWbfTj3YdRw8vUeR5450/GxUZ82p/6u7YWmBZhukwnZ1quMwModlIJ/tZwDc0eWXVm2y7Y8RVn4g3f1MCJLpLKeqhO64H9s6zBz+t/TDaiD4OwJBnW3MTJoaxbkrllk3myZFBshVPORjS8llqHemg2nyaw4Fs1B03mpXDA+s9ZHfGqOSbgWCCVQ6c1xoBTxx+hBUIpLWOannuTOjWs9AZI8eeEMMDH+39eDKYBx6DlFXmXE2Pw6i+VtroNV0EeEmjWQzH2n9LYui/MFZHAyVmGkzpNGwK6N3hjcoRrxZ0CfyyEPsXWMouwJnXgWwo9ZKQRR8aOabqnkrqm5uF/hWiQL+OVK792xeEZQJf3nwr2C9leCdvZteDTfVdNgWw3Ni5+5tQbURM66mYvX67DWI1CI1vcoJkGfd1cE/9li3sd/+Z5Bt0zfotW5Lg7X6U6ADHq8Hw30xt70n9+AQw68Un2azk4p6Xre1GeFNpawuqltGB3v9Cmh0Yx3oBXD2epYLpBIGf1hZ+m2H/mA8ygEtI/HrRLV+thguWDEsnMsdbtn9OH+lQK3fDH3Vq0aPSwMNdzzZGe/dArFtwDUGUXy2lhRW2H/kKo2XqQtKhzFaY9/XWJ0FqLCmVGqLld6vwXqPqyeaCJ1FtoMbmSKZh8uAw6dbiMayiI12Cv3A5QDeM1gpOFHtm7OxfDoGHqt99yz0TLs8lAh/ci5nkyAr3ZIwE5tFw8tM9usoBFqYcMSW++ta2agBL+dAPLww+z78U9sUVZ8RES+DpgCfm+jImJrxnVYeZJYYD8HNDxEwkpfdPjkKX6uGq47cbaCVZAZnMHx80FIkFVRhojXSWAureFgdRzvaPYvLk3CCMTeKsqITOZoSvwYyTUMr1h/EEo9TrPkgsSgyZwRPGG6142LhfusshjuKyjHNt65vK0eiZL225idaiePPwRd3TxoOzM1B226MG/KvMMGS5I7JKYSG1h/5lwvScTo/FJNCNgo1p3dprug2xLb0NQP2rd06Z+ZNo34iwpVIY0CbQ1mnprmUmlr5zEQVwLzcyMBrcd/Uv6c1VCIq5uKMbypvwrgVS/4BzBMvej7bQW0RELbmm9g/mckKI=","layer_level":2},{"id":"2c2db8d8-8ed8-4ef7-85e5-9d42615aba0a","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"地域限制API","description":"api-restriction-region","prompt":"开发地域限制API的详细文档,重点介绍省份查询和地域控制功能。详细说明restriction_v1_query_all_province端点的实现细节,包括HTTP方法、请求响应模式和数据格式。解释如何通过省份信息实施地域限制策略,提供获取所有支持省份列表的使用示例。文档应包含地域数据模型、查询性能优化(如缓存机制)、与IP地理位置服务的集成方式。说明该功能在订单拦截和访问控制中的应用场景,提供实际代码片段和错误处理指南。","parent_id":"71487087-d57a-431c-af0f-f9ce8536c80b","order":1,"progress_status":"completed","dependent_files":"api/restriction/v1/province.go,internal/controller/restriction/restriction_v1_query_all_province.go","gmt_create":"2025-10-08T18:19:31+08:00","gmt_modified":"2025-10-08T18:46:54+08:00","raw_data":"WikiEncrypted:C34GewOyK1SlumqKiPsSg6REtxJOhfHapmWv4MsZLlMnVHv8m19RbsDccvca7VOfBHC1jyhvaYbgCJtCr8OFnOXgJd1hgEp8tXWWmNRgzcoiWSPnrtMLbKSNeE/EO5Hsi07kCCTP+q+z0DCEdHjRUoEfVRDUia29axnKySIKf2jdx5h0sg7eXKNqleoXzcRdslyd/E/l2ATKUKwlpRc3Mwi90+KzXlHyVhbun/g5+WDzzDn6j5xICgb772TnbCLFVhJMVG2NK3Nv2T3ld3ONvk+2Ki1GULEIOE3KleevYffTucrxKqfligT01pptyaUOwccqtGqgaKJie1hSM3JrpMnEr3ufNGb1Vir8ePLosnWkuMuMR0xaqbsT/bzFDYdOYfJz3a9gj1sA2NxYBZ32S0oZd7bf+F2DQHMNDuA5PfzcU4NxOra2bK+8uwUe8tFgti0TD4d5IWd4TrYIPH4wqekOJ/ESKj/5Finl8ay2xrjc4gUULV0VUS8o7PSdiGExRCtKTd37sEuYVHxnnrTi4dQefnTa+FmgvBhIJol+i9Eb/iDVchVtSSnNRWzW2KTj2srCgsLRIrvIUAcfJpcoskQgnMYu+IhYpAsbuOqIDdKOxbknqImvsmKUmnYtPpV8l8LJJnIOOxp9/Oa4lMfcOEqGHs+nF1KvuSqVrQ+zJ7+mXSJP9jy99PvTiCoGiWW9QYDBE1mMtKVyoY8IMm0TSHj5lk4XukB1iM5zLUz9K7XWTaWUB3OMrLTT1CT04K4fCvQg4Y/iLv2a5SN2kRlU6rA/2rj4hHujJmkPlAYCEoxfnsRXJAf7nUsPF7a9XQHUOi7NFmYPsdFOelJ+hHjcijXHZf2qT3qY44S/GCGk1pajnWu1k9LhqNO72a8587Qa80ZJzHUjg9HgB9x4tFQB+vJSxQIfNijHYhck7Xb4FuXKyJ1b3kr1N/S2l48Ui35vosb/1OTj6mZKVU2bhIITGIqx9jaEc4TdC0wxzDvx/AM0OLwUtlm6KP45PX+foZ8/9a3tNHVZxOkd5pkXnH/FiGwswP5hgRtHn8BaH1dRA/u/89v9nnK3OF3AasvZbVWVjqoumStKJ4DTye55BGI08akuwQfxtbMSMawQDWLBhxI6UaOa4OdZEUiyTB9X9ieCD/+dcSIkCI3TRMs50o/vBqut5haFnGkCKvHN2pL9Jas=","layer_level":2},{"id":"58118687-a7d8-4b0d-b788-36481cba182d","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"Docker Compose编排","description":"docker_compose","prompt":"创建kami_backend的Docker Compose编排文档。深入分析docker-compose.yml文件中的服务定义,包括kami_backend主服务、MySQL数据库、Redis缓存等组件的配置。详细说明服务间的依赖关系、网络配置、卷挂载、环境变量注入等。对比docker-compose.yml和docker-compose-local.yaml的差异及其适用场景。解释install.sh和install-test.sh脚本如何自动化部署流程。提供多环境部署策略,包括开发、测试和生产环境的配置管理。","parent_id":"3c6ca985-3423-453c-9f11-d9030f798abe","order":1,"progress_status":"completed","dependent_files":"manifest/docker/docker-compose.yml,manifest/docker/docker-compose-local.yaml,manifest/docker/install.sh,manifest/docker/install-test.sh","gmt_create":"2025-10-08T18:19:36+08:00","gmt_modified":"2025-10-08T18:46:51+08:00","raw_data":"WikiEncrypted:h7ADvj4WLJHyulzCl+z7kJ8Pt9hFXqPwDEYqTB7J4Z1DpkLMhPMThA20z3p55TN/dbOQvkYqmvPeeZcdT9k8AGiciG93m8eaAYTkXuIB/l4DAim0NYlZ6X87KxK+sMjwpnxmr6pP7RLOBo6UxRplPh70Fbp+ZCyPNE79wMWIsvkF1xqcQIlTyyFRlpmj3TkENxirLFnxTb7D0dGKaC+L4w/Qv2xsaUjLvDxtuk8oqZ71V4Qwcrv2vF2g+FcC4W1y03/EsII4j8QwbYtAmcJgT2klbExZya7oBnsaCapLj7rXm/66r/or1p/c3CBpnRExtlMeW9HJ1N6rJuH9KXgMMUPadAST4plZVIbYOxu2ntmvBhxzre/Cn6cwL8J7x2GZmTOKdvWnemjYF0cHDSy9S/UVwjisOK0dC8TsMQBsg1Vtd4huntjKgTfo8Rv+pyZU5xELyZirMaIL8nw/QLCJyjR2j1DHcq5RpSOpG/2SrKNVU4RFxwv1KbUpPSWZihT5z0JZ+h+R85XbIQ6c8cPrIUNiF9rPJ+LbMgD+GEZf44CSdKVymvGJyLv2aFAnapp6ZnuUPIUw9wmFW0sE//ZPhfGimLyQPXiLLLOx4si9S202RsCHAlNGZXnIkFWQYwlm6Myenb17d4x5DQNtAvL1w3YQA17Z51sicIC8UdcvGSzJL9x4Wm9crIB1WFa9yTbcliqBVqUibPD6sPRZvWYkKlSOM/WeGeZLCOgRBK0ziTl0YSjPlcgHTvyxJQYl3lltxnZ7EpjHVOOYQho6g3Own6kONLcRabI4vN4a1lnuMRb/0jGXo+sbRIR89a480+XJolbxc5+Lt8YJcqkViLNTL2HfcKyaK0u2McIyj9T7cRlNpLFJzIoPLrn/gmzG857hSVZndqZ2S0pOvCsnGjC8KoAz3JYfKGpsSwwjgpcVVda/5cB6X09jBp5PpHGtkWv0M73vV4dhGu/AVMIFcm0oy5iBQ1IoYpYILbmr3eZ3nsK6y/gaOEoYfmQ9guCiGEv1k5mwCsDL2N4GMd4NrphuAZFqa+u2iMGiNkSIGUHaTP7hfEWmFPz3Uypup4T8PtEB2Z1DM4PZMvWRSjab4e97uHlJND2QvS9B7Z5aB7HePoY3Sbz3pqd0MzMYYmBSsP5bdKIr9pzDIm+bo7eHcApmAq2dqSRHg4wr872D6+dpqYmQh2bdUNxT2jnhNJJWdENk","layer_level":2},{"id":"7fce1289-c2cc-4640-9fe2-2049d025cbb3","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"Shell脚本自动化","description":"shell_scripts","prompt":"创建kami_backend的Shell脚本自动化文档。深入分析install-one.sh和install-simple.sh等自动化安装脚本的工作流程、参数配置和执行逻辑,说明它们在不同部署场景下的使用方法。详细解释wait-for-it.sh脚本在服务依赖等待中的作用机制和实现原理。提供这些脚本的调用示例和常见问题解决方案。包含基于这些Shell脚本的CI/CD集成方案和自定义自动化脚本的开发指南。","parent_id":"2b16f9fb-3e48-4abf-a52c-5fcaeb1467f5","order":1,"progress_status":"completed","dependent_files":"manifest/docker/install-one.sh,manifest/docker/install-simple.sh,manifest/docker/wait-for-it.sh","gmt_create":"2025-10-08T18:19:37+08:00","gmt_modified":"2025-10-08T18:47:04+08:00","raw_data":"WikiEncrypted:mglmhPyPH3dtFcYRgfroE6r5iIRURsCQLCsCRil02AKAdkWTWXqM5uSIN+acuboTL9lryyEx+kLcd9u/TwuNVTMqaBnEh6CfwrIc77h929CPwdDlT2sE/wWdeWpMkgXVKaGFpTqZtXX//6qhmPDLsHmlnX9gniSevlGs1btfNRHUTRd+FXSh6upD4A4csE8U/XkCo3Vs/o6jjV9gl8fR5IzGI3jONT+pZtXQhSnyg1Oab5dEMJjss9NoZibHZACN4VrCM0o8EioaFPpzibdymj9B9Z4jlW47U0vFFP4b7Vd55YM1jGCF+DjKkIgFPn7i2Wu6L8zPQZjttr7x1ncnG88x1Y5QCVTaxwGUuk8stW7GZiXJVYo+3WALOzz3WwkLISr1DpR+fT7u+Ye9hR+6FquP/p6wgT2qAflGBJ3Ut+PZHUEbE4ejlChLvL20NViWPFY7lixxQjEPrGuJn6VU+TTuPh+4qcPotgMftVXQZCJ25EEOWx8E/5d3cb0RuzmdUSEfr12aqkhv9KwzReY0oDrby6MzpC6MyNkvbtMLY1DJv7M1iFOSJ/IRNleuU1KKBjccItC0xjEDBJXdTlrE4osyiamLCi9WBsTh6T/WYuVYMuE/heHPbq9PAlBPRHl+pjbFVlwO3iBtlQw1ovk6Ef1fSWk5O1L2BYaVN+0wEpslestMrEgxlb0JOZUrvBn+zKzLTJnjx7XCG2frKaDh3VlUYRXX1bQcZu1S+COiIMh0pDFRxlWgWmlz1d40lr3dWgvByBwPY8gWT0rsFXDnoUYzV0F57eXG+G1KrUoZLmST5KDcfjMaK+jQMYlC3oZr6uKfPFT2B8h8IL/ejXjQ2Cvrr0ffSZ4UN4DejfMIcDU8aug7wV9pWi6xgTu25yq8ZXxSNVvsVT+Qn8deffoWvHEcd3XYRAsDP3ck1Qs24QbqvEjBs/kPn3+3kaHIdN5RFq6IosXbzGgFJEdyo2U3tPBYl4il9k5Atd8cfmJlcuVzx37L8EsGAb+8bkHQI2Ck6/3JlyBdaJ6ow7Z4+jS0fgN1dUioC0dfA5Emceck1YIEimTsDBiBjnOFi/1hUmuzn+zRW5ch87jRmVhrp5+TAVS5eN5cLsH77X3Ka9w0IIg=","layer_level":2},{"id":"4ed6b7ca-ace0-4389-81b1-f1e35781d27c","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"天猫平台集成","description":"tmall-integration","prompt":"创建天猫平台集成的详细文档。重点说明kami_backend如何通过tmall包集成天猫API,包括天猫游戏卡密充值、账户授权、订单处理等功能的实现机制。详细解释天猫客户端的OAuth认证流程、TOP API调用模式、消息队列处理和错误恢复机制。提供具体的代码示例,展示如何调用天猫的账户授权、订单创建、状态同步等核心功能。文档应包含天猫API的配置参数说明(如AppKey、AppSecret)、请求/响应数据结构、状态码含义和性能优化建议。解释集成过程中的技术决策,如为何采用TOP SDK、消息确认机制和数据同步策略。提供常见集成问题的故障排除指南,如OAuth令牌过期、消息重复消费、订单状态不一致等解决方案。","parent_id":"d49ad99c-afba-4362-af4e-ff689d5d94cd","order":1,"progress_status":"completed","dependent_files":"utility/integration/tmall/api/api.go,utility/integration/tmall/api/oauth.go,utility/integration/tmall/api/trade.go,utility/integration/tmall/models/models.go,utility/integration/tmall/topsdk/,internal/logic/card_t_mall_order/order.go","gmt_create":"2025-10-08T18:19:44+08:00","gmt_modified":"2025-10-08T18:47:59+08:00","raw_data":"WikiEncrypted:pmN7H1JF4+HQF9n9w8KwRUKDbNdP/de0lI/DTackQjt1dXPuSXceIWbMl+vvXLEu1sxXD8WKbhjK3n2/UhdphhaFjQmpEob6TVfcLAEh+k9/ktbVlygCt2t+GwBc3MuUV855x485AalJt0qEkSZAh/ijrFM6JjhTyO0u4jE+gxHIW7BJBRu191WyfTaM9rLj5jdJ7/ATwDjEj6YrggjBlpGVa5HdOID6Z1Ow5f2HWriYkRwBzOiz57SPk+bEWzk+1jtGGbDJrDlsCw5t6dwgu5iC8Gz9fwV6nIkfT3SV2xKmn13dOZmhkh8Psq0dNVRhzi/vb8v8kGuSt/TqcDAZBZIlD4TLJXaHZlqhBSiXZjGYYJogonk1XJtIauXfyDvnZnIcxzFyB153pduPjANIcZwLhf6W3mLm3WZS0gAAZJHcb7mup8Fv6zDUsbTSeQ4pCUCZHBGavulqwK2QgCjJ+UYZDCc4p11qGL0mEqSNYweHwY1gGnEFok0Qywzmq1lSev4814qgIHEdXbjAVq+JlhrprmItEfKQfD0aGhTQv7cfy2f1ku5zPMxcEiqiLS6OR7xgf/wovpJUdLovk4/7GrhnmBOEeJGY0dtPbzoVpDfYoOf0RB6duGZnvknwhR0U96f/uwJJKuqiEGK5hKQd3Qd6fndnXpthkMVClEMw1kd9qvEXCBi3WPETboeXxwXtyPIBySwEi2nWLytULmaHZjY4RKScOjiJH2f/yQDql5d3MmvsLLPZzPvbmjZndmImsFm0PYq+d+3K/sD7Qgl8DHRFd/3Owo7lNJiafzF2oDS8ElVpFYdoLt1Zr1kyaWfkhPuRdO8P/sjJYqdzyenB7V3HTsPrDrpQjIgKbJGCLuXY+7ppltFI5d2BOuQWOVE12zqBmQ7fAIDohuUaE/RemA3/AXDLrUgIK6jv+3ELcuWdFXIcGsA/7EB2qstDoXlUmfQ9/Vohf+ICPfSI/BJN7MNWamVbZwU0E6xd/Ps4TbJlzhokLaNQM4AcLDTF2DJKHscozedlDZvq39T9mOuUl1IQeYrzUpeU/iPW8QrLS/TRmZlyGyD75c4Iz6RB+xp6FY7X2dkToZ9AJWN6uxeOE/aI8dVJYduVmGVqWEQoUUKFMutIP7XgbRYUwBVzVlGrA2qVeh7N+rENqCzTGfjWCSi8MbxKgu4hK3EkiUvvfD06vBI/pZD4a7UeqBsOeXCnAAWpRMJbpGTtlh3WaKk9jp9BEALl4YwtAj3zajfthxfInITjYSfE4p0ZiOsCUAAAagfxaXxcm3wO1jMojEgsLiuZd45YY2dmgLKUSG6cWZvhW/V1Cii/QAokiEduwUHAUbMsla4gK6ntp1viTaha4xkOqXEEP4B+pe2bf0+/GtXc1VHTLHlzzzZVHYIzr+kmk0MawuPIOzVl/pA5HTmzGU3pdyR0/2Ir5sVu1943OaEWhoe8TB9yU+6lSqzUZK+dze1nglXy5q32yYQwNHC6fvgpf7fFnqKsKJeYFPW+B2NFEtOb8Rejh6j+frPjuf9EEumVtZfe0A3TuSDPqRml2PdhEezeDG/CAaUi9X+5va5FHf8AJ6QdJEy2shfCgFd3q+GvdBXHQNxnGzYtjgXYihGtQpDtkVVjBhA+JOsbmlUqCXcYYjFB/ZRC32YxQznIDa2B+ToI+QNUWt7ojUx2xVUsbyJF64FY3noOwm6c615SQUmCpLXI7IPjea8mJ5+/","layer_level":2},{"id":"745be06d-31ed-45f2-9822-e6cf41730cae","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"Apple卡密充值处理","description":"apple-recharge-processing","prompt":"创建Apple卡密充值处理的详细文档。深入阐述Apple卡密充值的完整流程,包括充值订单提交、iTunes回调处理、充值状态同步、重复卡密检测与处理等核心功能。详细说明充值订单的状态机管理、异步处理机制和错误重试策略。解释充值处理与支付系统、风控系统的集成模式。提供具体的代码示例,展示关键业务方法如充值提交、回调处理的实现细节。记录充值处理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案。","parent_id":"f7bc4c8d-64a0-4c2c-a17e-cd38987a94ef","order":1,"progress_status":"completed","dependent_files":"internal/logic/card_apple_order/order.go,internal/logic/card_apple_order/callback.go,internal/service/card_apple_order.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_submit.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_itunes_callback.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_order_reset_status.go","gmt_create":"2025-10-08T18:19:46+08:00","gmt_modified":"2025-10-08T18:57:37+08:00","raw_data":"WikiEncrypted:ngLqLViTt5zzUmJHZ62DoJjLFzanDnCUEKH88S7Dvv1X32wPzyDcbjDs6v94J5yROMxgiwKYF1A8NRbu9hnKYFd9aVfkxEfnFwMuDDLlEty7cKSzzMoRz1UzygV8UVvWVW2+IKCBpUW7rWmlmShhwmfprYHt8x6A1O5e7zUArn56dPNYVFegZk+uMVhOmNE6BCX3GjnAD9Bdepxi38Zg3amPwrd5qz9YlDIlZ+JLZjO0DCGiPzkc53UOe749lpTDYnXcbOmjL/B4/19XJNglt7bPpof8OPyqPkjobNzOhVi2DH16GYb9jeyTvBGEquy4zdw1Id+hEx+E8ZKvMAnN0cmKRO+cUF5qqHTRAEJIP1CcyWTMt/p93p+2Z2WXCqJWCUyaWa7PvttrVrMvWWCDoB1TabwTslRtLBBomgUHCdUeoBVZuFyKiWf1v/Eyo/p3w9gyaFDOLXfhy4lcaDGHGmxGyRTBhPaVm3ne10bHji0kVz5VDCYXDzb09tusRHuZXnTPg7o2nintITuqnqCz3cO0rAgo6Qng7F3AfhU9+GjrZpOCnNDjGe6WDeuSmdA0MBs9DLVhcOnKE9HkZHUG+la5VO163Yxbyt0llDofyW61fc6yZYNjKD/ruQxr8aNAEQxs5jnuv+i68P1yLp3rfh8GH/XXcS0nWxrGkP3hafjBNFfATe9UeaR/kJSxcJj3r5ASmUf8Ishf1O9F708uiYh0RV6FJUfkaOXdC7JiOFUOOO2ctzJV3KX8nE9n4Erjg7bCtQ60hX/iR+4Jx9hjtHyKTvXuRpAlMGqXny+q3j0Le1LqcvYuwAykSDOuEPzb7Bpj2mX2aOV/q3GAsA4tHvb67PvBeG/F0wEOR+m9z9RU1F6PLCaj8kPBT54MInl5DxB3WnsfQttQzNmPkccznjfBnus+yYiA9ppvEtkmT/Nq+MVcc3i+yI0jACs+KZwrxp2SaLes/0xJClCjIDBcjMXu9/mJUAiOJg09jQOXzWWeURrtqckus6fMlxecMnp7D71Rli9ELDvDzDeIyE3foA+tlSKW44UdTG0vanco5guTAvX/wwp73jmg2Ypvun0l4wGhpR0+Hbs+J2uVFzwC/CPuiaeygsukFtbXtPs8FCdPKeq8GvyUOEJJzB2dShtjkwHKfNUPbyNd7UzTmsIkvssK19oGYsUMFqrlE1kHe2mzUtSnS2dRWoPQR+ORrOyi0iuR+++7JY0mkKbD0MIxSNny2f3316CKlZwKdkouOqM4tTeqIj8YyLn/Qr6Pbi9q2h3IlETzwZS+aHrUFKNp0x8oPJ35iZQujDc36ez6Z/Aq/E/72JMTOiEHLl22DQ2Onh1osqSleTnR5s182CPNLuTEB05p9g2u0OaKaFjHkEFFqFd3ouYznfA4XFpg3+bzZU62ATY6c+U/GRXWjBPufmMbVaboCEXU6O5E7mwuGm1XfP1lj7+L8TExV5keV8MqxDFBtsQgGn+9t8WQrKmNPFo1eA2GRzQWURAPytBlaiktWpvPU+IMkNEKg52ZrOBaa4sgtomzjP5N+IwBiwMMxK5i+fDu1A2HuGxen4HRE/CWTADfotXqp20oIiJHYDdDX2DOcXnrRyOEVkO5t5zwmmlDWZvyfN9lUM6f2slRNX8=","layer_level":3},{"id":"230cd5da-15c7-41e8-9ed4-a0cc2496bd71","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"京东卡密兑换处理","description":"jd-card-redeem-processing","prompt":"创建京东卡密兑换处理的详细文档。深入阐述兑换订单的创建、状态管理、历史查询等核心功能,包括订单生命周期、状态转换规则和持久化机制。详细说明兑换请求的处理流程,涵盖参数验证、库存检查、交易执行等环节。解释订单与账户、支付系统的集成模式。提供具体的代码示例,展示关键业务方法如兑换下单、状态更新的实现细节。记录兑换处理中的异常处理策略、幂等性保障和数据一致性机制。包括性能优化建议和常见问题解决方案。","parent_id":"d56eb845-7c0e-4be8-bf3a-239e3c0eb5e3","order":1,"progress_status":"completed","dependent_files":"internal/logic/card_redeem_order/order.go,internal/logic/card_redeem_order/process.go,internal/service/card_redeem_order.go,internal/controller/card_redeem_jd/card_redeem_jd_v1_place_order.go,internal/controller/card_redeem_jd/card_redeem_jd_v1_order_list.go","gmt_create":"2025-10-08T18:19:49+08:00","gmt_modified":"2025-10-08T18:58:15+08:00","raw_data":"WikiEncrypted:2Tw4z8NsJjOlKl4tOUQ4rRBWcbr4pdze3j1+4HY3S26IQAEz137MI5Yq00cndqaSFSHvFpKgMtWBeU2MocuooTtw+/vbdByTDIm2m6QMlj0YgBjJy7FRIg1NzkZOZo2dBnr4+843dekwRNc4rXV1/WyzTZ0P2PJ6D48QSP3sVRTCYimL8zahcpjhhu5wJ1DCpzXMKRS0S6yE9zk1KbVmaWvcLpDRF5pNuSGch9VhkhRuTvbl3lv3Aa1eGagTfmrN/9ffgkBo8tkME/0k02T1D656W0Ey7cRJDduSIJoBeaM6mA3yT3j9hlXmvG2pJeCfTduDONk24NThZwtsCcaveg+0Svklv73B8N2ZPTlaUuCFlYgBqK9a8qJxVkZpte9lpaZk8G1+8aHCmztrC91WE7QW8jspEMPh5MiQKtzO8H54B9hM7gQ2HLEBWpyoExPTckpsZThAHCwBfdU3astLS3HriwtJRJOmcKSw3aATZ1THHYlUNPwq8jZVBgb04vkosL9/XvlcswEFYBOE06eTvTkWFXiFHvM8cqUTy9fQRorp8OEZgZ+wn2FHM5j+8P9a24346+ldVPhrCwoY2DU+2W0MTdj084H/vRELAsIUVreoAvkRlpj9kxvUjxuhgH45vY6nNk0eU6dfokSMEdFCvTGNvn9WUw7EtE3h2YFWTMMaFcIF0e6AwmgJpPegB6708mBCiJPB+N3DqGM+V7AjS35iT75lpIiBhrNfqRbUehN2vjksWooLFwCKeIzqUpRIG959i85z85YiPBiF1O3LaV93FxMHyB7pVjf955m6am1ebASO3H4uQt55/R1QAgr3wvNxka44+C3DoJQG41xxJzOUi2ixmhUEksYQY9ksSiYxei43GN8bYaqVRC2jTNj0JdHKdjFl2fv4vw6TCLWDQFttUu/sQwvXL87uvnQCaODbvv9pyc0PGQyTjxX3RYIOM4KZWT6MO6EOPPRB0YLtMlXgIkgFguCDMvuTqaPeZKVM0zamwLGMwC/sa/+DixtY3eXPCtzT+J+J7UgQsey9VuF+j8qATagSRTUC2MOUG8Be6N7YHvFzlMSZCgu9OnEkpsZQbCw0HggfkretmqElYXaLWBui210TeE7wM7yrw0FIV1qEiENbbv5N3QZjYve/YAzuufUscM9Mvmg2IA/FvVN8/XMQ1p/WuXPOs1gkqDClgxkPcf4Uac8QieEVlBjotTPYR/RCOtF0edLj5PMOpgj0TF40CorM/HImZcHpCKIHfrTVBYdYJlHTAYmIEzD8Qhoa8VYSaikimVZ1siU+vSUOWK6Vep+GpKvIogddbdc/9xXxkdUtbzxGHQPJ2DDUwhr2Xm1sv3Oh+u70TQfuhhfp4tKWjMmEwqaZtqX9LFM0C4dGaAxI1JlZg2knCT07wjY/e+UzMJrNfJZ7vTj5l3lU1PVHSWgLEZ4gIYRUoOVVl6z9s3/GMH5oM5GGIBC4Nj5QuY/aLZRIMhPbZUa+sQ==","layer_level":3},{"id":"58030d31-a0a0-4431-abd1-4065b0200dfc","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"天猫卡密订单处理","description":"tmall-order-processing","prompt":"创建天猫卡密订单处理的详细文档。深入阐述订单的提交、查询、状态修改和回调处理流程,包括订单分类查询、状态同步、成功状态修改等核心功能。详细说明订单与支付系统、AGISO系统的集成模式。提供具体的代码示例,展示关键业务方法如订单提交、回调处理的实现细节。记录订单处理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案,如订单状态不一致、回调处理失败等。","parent_id":"8137c301-f13b-4054-992f-c556767d7c45","order":1,"progress_status":"completed","dependent_files":"internal/logic/card_t_mall_order/order.go,internal/service/card_t_mall_order.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_submit.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_query_order.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_modify_status_succeed.go,internal/logic/card_t_mall_order/callback.go","gmt_create":"2025-10-08T18:19:56+08:00","gmt_modified":"2025-10-08T18:58:16+08:00","raw_data":"WikiEncrypted:pmN7H1JF4+HQF9n9w8KwRa3WSApkXAR5Fc40tYehasW3oRRWjQgzTzde7LY3UZtxAiPwPZh6umD0hIu1ZxyamO/jzuB0ChImt4fwd/3TrlMI6CTgIwqXZdyi2uZcXeOqr+cxbAih167U94oPG7vP0ynlhZnr9bMec0kuqh/WRLpLnF4vcuws0pDRdrGjPIWvns865FMXNTmBRkZwBD12AI9v5HeuFC/mBSB7bwujiigRKcsIYWzISVjTI9xMTb+wXQOEoH7u5DiAEzaXINxIoGXKPjS1HYunIfG9J+tX/3zCnRIlSG/ZgYGoFEf/KqAWxXGTTDidEywoAaEtsoyEkH/p+fvz49MlshRjhJh82Am0zOO06lkbnHx3CXtY/AmOBkalN40SQNVLLrVhC+nnZOxAQjfbcsLzVpn0k0fBRHw1D7Rgl47TL9Nip8ZGr9tt7vEb6kxG3mGscOumxo5DDzcPHciw2oZmjLLoVfH1wm6WcXKvd5TF/+YePJazkJ/fYq7cseFLu+q0Mrf+5Szk0Img02WDiiJv3/USpD3fIC5SCv9l1fFfzh6haJH+YVntv6VHQzdSfVO8w19NNy9REF5skh6wZLnkuAb35GthbyTT+RrzE+0gfqsnmTO2RlcsGo4M/SNtnF7tyuzSI1Ikc4dbzHRfvBbTuL77Mes48EsZNzKFDP2z6B1SL2WRa03heiT/OwKzZbdJg2v4WQyF9KJUgAjXkxpd21w+XOOeQVnZXBy6iX72BdqeDUHRxOMW8Rft3KoD2rAx4VMSEYlm8yZf05HwnJfgIeQ7FPhDFFtjAyXj206M6cvbKLs8ucEafTjsGGMPcNNposqicSxfBaYJO2LIos4WDfJ8a6ch3fofGBRJYoOlPfMm/E7KdGY11PnkVEYveJsSGG96OY3FZ+skie2zb5Y2GrwfJF5WpDb7Zv4GRWDYj0d8K53mi3k+cg0XmlFnOmLPD1qKIAQg1mwRR4KSO+KVX7aJstFweV5e/0Um5q4VqYLMxQmbVdxe2aseE/XJZY7EZUAEDUh42qi2xQ4/Czer572EPp9ov2yc8RKWtDViOVM7V8mt1E1s2D0abzLj1P2cW3iI1n8zFG47vrU7mddUMpkzCNpAgUtpanjN26fgJuYxkV1Rnoc+A97qS97rBsY5Mw/ijcDep7DSKcn4oE5GNTCekRawF8nmbwXAeEqNZxESHg6HnPDG2TRAa0mU82CUvP8PfHLGFg6+zPW4n3ravMQ9k7JlGW8L+dUBhcLuryFG05xTa6XoW3nUncn4OoYxG+SRzUrSKeunw5OsHzov/HjCDev2WSPerrC5bkCz5m9K+M0ts9Pzl12+9TZimZx0YHqBrlCDaxPdoIB9AecRZkLy3Pj/EKWn5Vua0HBll5c/AXxCj40GCA9q7Axa7wo1DDYzbPs47lwr6Zqfv/cvP91kOFmt/Zsp8D5XtbY/Sy+zFiGnw5WXZp8RwhWdjn87K00yYzlSoX2QkL9rl8PCoJhnEehnRMP3UfhRZufDeXU6lnSHwENNHcARGFOLwKVayg7nvgYOiCRO1XdeX60yUGNNnf8byqMYZhLQBWG+B9ksEfEgBbT3XKQTMv9pm+66dxKzfFssS5kJRXynKAx4Z1ZLChf2TXj2p6fvGgUKiIHk0Qivsc+q","layer_level":3},{"id":"321018b9-e7f9-4101-968c-1818559aeb32","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"IP查询优化","description":"ip-query-optimization","prompt":"创建kami_backend IP查询优化机制的详细文档。深入阐述IP查询的性能优化策略,包括Redis缓存的使用、布隆过滤器的应用以及索引优化技术。详细说明IP检查接口的实现流程,如何快速判断IP是否在黑名单中,以及如何处理缓存穿透和缓存雪崩问题。解释查询性能的监控指标和优化方法,提供在高并发场景下的查询性能调优建议和实际案例。","parent_id":"6810876b-78f1-4c9d-a2e4-a82d03615272","order":1,"progress_status":"completed","dependent_files":"internal/logic/restriction/ip_record.go,internal/controller/restriction/restriction_v1_check_ip_allowed.go,utility/cache/cache.go","gmt_create":"2025-10-08T18:19:56+08:00","gmt_modified":"2025-10-08T18:58:38+08:00","raw_data":"WikiEncrypted:HDzk6pDBQ9qxx18eHV4+ms+O2E4ojmm00kWAnKbnb/AMRZB70jeLhKW0WT2jX3fFE0/z7i/lrUCoyD02Qok5lj27e+0TrLp1DnybseY20m2kdsNivDERjyOZh+dwK+03eYbVnW2mgK85IDoNg/stwG/jio1goT9EpZceMcP6kLCBHj6lJvkGJPsl3X3BxGzqrf7U411Gl/8beFyrNtNNbzQcG6MYI5yxfJ6O4giFhnDV4DRaO+9HeZFouNqCnt/MMtPpIRYj5PceoqK2PISi1/BZ3l5wacazP43IMC2XIlaRim0Xy33sGhYw3ggrstwNyc4a2hil3MZeROD4DpV1pcQN5d2qWP+IYERqgfXMNkb5F8cxf1u95Vwwk+DNWLuhWz9zQY4xuiGR9/Uchn45pMRNGEO6Y0FrkfhxyC36f2DL7zAUy+YGw5DzQr8na4naH4ETSD1t+9GIZ2TwCWwbGRU084daz7FFkZNrfGFOmZVmNWmxhab/s4pAqWhP3kjG2uX4Kdv5mxuKTCaUtPtOFZIMK0njiqH4FihPMsX/T+630oVnDA6Kqu/51IyudKWdHaHQhufXjy1WBxMe2Zjc29pd9XGvrONQNP2ER1s50vZSC96ja/S+swTAQu8To1kg84aWGohPl6vMVePDmsrmee7+/zWLen14DcRbvmgp7lDn1yMb5pi/o/uEp1nZrzmAImKHZHfOfc7QSm1k3R1lgYKM60ZSBnTUD3aXc9q752eLLbJ3WUcHPEe3gqA8P+W4+TuUC/MQ5ViyYmDCc8QP4IOWkrn3IJIPUMY5PFS9DISELmYgVsHgatalwV8vdTqOKPSHsd3QzBX0zePRYfi9+0OHLgvEJHxl8H6z3iTI4C6uWP/l7kyfn9weaLbP/2dZLEhWWEjjs6/wFjxsxjzVBP4kuLVRzMu8n70NFPaY6fXdoco/JeRvY8vKs+Vf69EZS6uyWx+tuK0852DXpLZyEtPcltnSx0g94yM0hvBHd6J/gZNaWWkcMHA9u3CFgfIjI5/R756QqfRcn9ThLtOXea6Q4dtoZoRSao4i69ZV/rOO2vJns+9tMTgfJRekfGHMI2b/m3uigX3F/hMBrhvBNQ==","layer_level":3},{"id":"c66c0c6a-c5ba-4081-a359-7bb0a47ca417","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"设备ID存储策略","description":"device-id-storage","prompt":"创建kami_backend设备ID存储策略的详细文档。深入阐述设备ID记录的数据库表结构设计,包括字段定义、索引策略和存储周期。详细说明设备ID与用户、IP地址等其他限制条件的关联关系。解释数据存储的性能优化措施,如分表策略、缓存机制和数据归档方案。提供存储容量规划和数据清理策略。包含数据安全性和访问控制的实现方式。","parent_id":"e130f1c6-f0c7-4f2b-8467-d00341dffec6","order":1,"progress_status":"completed","dependent_files":"internal/logic/restriction/device_id_record.go,internal/dao/v_1_restrict_client_access_record.go,internal/model/entity/v_1_restrict_client_access_record.go","gmt_create":"2025-10-08T18:20:00+08:00","gmt_modified":"2025-10-08T18:59:13+08:00","raw_data":"WikiEncrypted:W4RZ6LTz4rg+RteR0TdbvLbiAthlqnrmydQ6GyJMt94jIqmJP/dizOgivC+50j5F77ll+XT0xbiFFnwmAAdXa5XvJRzqEwFtbYSi4IM7h+azyRc3StUlklnZwVbQ77701gi4uGbBtEtg/gwIuuWVoJ/Ql6uDqLfY8Vf+scSGf7xoM5+A0A0qrQGyf0N5X6CXcw6qPAb3aD9GL5li97zQy91r5bcdBA6OgWxbLohUbk6fzHA+KBsJYJLi5nq1NoDl4rYr8yem47bNIHTQCenlywS2bPPI20HJHWtv+XzDTy5qSXbkTUW+xdnJrkE9QGss3xQD6Vz0Kf7bAReh+9IWnYlbSqrv/Z5Blw6Yb/z8Z9v3ENw8gNqqPyxVwaX/6RMFwZspFbHSFIpdwdr7lRp27btPj5zbd00TdC8eDm4I7Jt+3ptA4eKdPvDUe2MBDtZxy5H19EubCwPk+uw1Yzt7Qb7vJPFrny6Z9r/mQLftGThKr5nNGEtB5EFwVD1I17ZUtYUgOBsL8dQ0fksaOQWuzVK/tUBdiY9BbY6JpcM2wVwhWknYGQhYww/8dYZS79NtnzJcGdK1j5We324ymLwiaipOT2vopHzYlyJQD/0SRL+ly6bevCllY0M/hIqaJazHTjZTRfxwPQAateLjZveU+KBAenloB0u/zTrIHRVoZtGEm1tYZWnd1qzE83mjUqdyBu5OEyhZ06C7sSxpo6NHaZc4uaAM2Maizf3q6YaT//XaqRD4YcBKcgiRqAIOKqdyTR0iNUHgDjSTytTvE3NFN0cdr3xewzbrbSy4IKYkrhYy4twaz+qi3+j5UvlS9czprctGPSXn92s7g9Anu9JfzkYdgWktkLzQ0bfr38cS0raw8TbM1CXN2CMs0ShCm5DP/8kbh5Pl2LjCJ7iPGr3kr40FN83D+1N4rOqQe/385wyJ3Oo/XI79QZfYFXqPiEviwI2jQmaOhV5NzuUfN5D6cupyMPBJZYMOte49njoqpTXlZ6cS9CcKSqbKEx3UZIsaYJgRPPr0AfPeA4OSP8fbWpZIfs5Nxy5N7mJqEHvD+OKr9hEpcIW82eFNT/ovIzu7/HxbtF1ZSXvLKBIkxvIaAAJIWh1boy9iNT8+4bmfiuM=","layer_level":3},{"id":"beeabbca-9f86-4566-98b3-6bbce10c5df2","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"双因素认证","description":"two-factor-auth","prompt":"创建kami_backend双因素认证的详细文档。全面描述TOTP(基于时间的一次性密码)认证的实现机制,包括TOTP密钥生成、二维码展示、验证码验证流程。说明用户启用和禁用双因素认证的接口实现和安全考虑。解释MFA工具类的功能和集成方式,以及TOTP验证过程中的时间同步和容错处理。提供双因素认证的安全最佳实践和用户操作指南。","parent_id":"0e1b4f85-8e7d-463d-b8db-4ee330d61a7f","order":1,"progress_status":"completed","dependent_files":"internal/controller/sysUser/sysUser_v1_totp_set.go,internal/controller/sysUser/sysUser_v1_totp_image_get.go,internal/logic/sys_user/totp.go,utility/mfa/mfa.go","gmt_create":"2025-10-08T18:20:06+08:00","gmt_modified":"2025-10-08T18:59:05+08:00","raw_data":"WikiEncrypted:vY6Su0EQyZ4UawjR6GSslrl8TerMMRiC2vAH1D9LsXlgGlhSVt6X4lc0ZcGM0XjdwUyEG7Z65qRzodxrMLLnPnQdajFR5qdWB7OnHuwnK4nxF5WDbrYVWRgzofrWcIPnTm/3ITBkBoKIcdEEGsY9hB+Nof8DN9JZkRzJJfJbfma96VCDDGRtCeS1yEhWA8GYgQgJAkAspt3/dBRiFREKOruVTI+4YpbiGQbcefs2j2qQZauMp2PZDvYE2My0v9fpY6iZa+cNzD2Y4SVyFRAzChxQBfL4WdUAp3vuq1o+AtQRIF0VKf9Pn14H6j+fXSXXpl779AEYyMBSJ8FBrARnQLn0vcBAdZPICQlMYP05F+LBaYH+qdPxUexSkF5+BhnHbOUDhuKeUXx/1AQXxaDhBgQl0r91Kcat9Fo5GnKmMxkz3jTDyX0eZa0wDQearidX2HEfS6yLhNNlJ/g1IMZ9UyqjsQI/nJNuCMN5hyHZe8A18hef3KSAUcZSN1zxM7o/42dwzBZyszq7sYbh4fAWpCoNVlGI6dUwVMKFZYuwOdd7wY2zp85IqJyYL6zGVyZlcA870+SniyzCc8XjHAdESUR5tC7zcDoN9pdvmX+kShg6eLaB8ogC877RbyElNpqTigH8jBuscxW+ZNhKZ1nbSxhmrSp+R/HZUIja+E3bX4c+aS9+Lzch2Cy1whBO5sBZ4tBOdTG3Dj7fBgQElnp3R05nZGc+8bK2Gabr/E8aMr8Wtg3gUbbuWjXUWUoIpxNjLY0SwMVRmwq5eT+0a+spmaxaiibH0siDFrh1lE4OVfvAz7GHkz1XtBShCRIZJJwD5ul5Su6sEcVRjcKOfee9bAzW0W/wJa2NA3cttTl3YlsYgmjVGItM/7qifqDJmTEHX442NXZFo3tIy0BKzbzrTeizDbhg4K3i+2WlvsxFduyfdbBQffsvRuHuhMIyT3SSM2+HbWwtv0K97jq5GeEsIlw9BoT9VLKSB4PE0AXcQ7k+qRkYCi/bSGN4Vd1Oil53HvXe/oGlWyJsMKj+kfsbVDnC9v/h3G11nHF9ZnztCHwHIL7LI3T9vV3wuvZn3Ryn8e3I+a60Hw5X4LRr64YpJ3YaCy/9g2yyY+VoFh18p24=","layer_level":3},{"id":"3acdd907-8a5f-4d42-9ff1-61bd6e8cabee","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"权限验证机制","description":"permission-validation","prompt":"创建kami_backend权限验证机制的详细文档。深入阐述基于Casbin的权限验证中间件实现,包括请求拦截、用户身份识别和权限检查流程。详细说明RBAC模型配置文件的结构和策略规则定义,以及权限检查的执行过程和性能优化策略。解释权限缓存机制的实现,包括缓存更新策略和缓存失效处理。提供权限验证的调试方法和日志记录建议,以及在高并发场景下的性能调优方案。包含自定义权限验证逻辑的扩展方法和安全加固措施。","parent_id":"b5d20329-a5b6-4db0-8325-2b83ee9a2c52","order":1,"progress_status":"completed","dependent_files":"internal/middleware/auth.go,internal/logic/sys_auth/sysAuth.go,internal/service/sys_auth.go,internal/controller/sysUser/sysUser_v1_user_menus.go,resource/casbin/rbac_model.conf","gmt_create":"2025-10-08T18:20:07+08:00","gmt_modified":"2025-10-08T18:59:43+08:00","raw_data":"WikiEncrypted:arCjhUL6OOP3tq0tMlrtoFf/RGWFtEoRnhdJx6YcaSt2yvz7R2ny27ALK5reW+2v6HBYXkYVp42DaRmQlw6wk5BpsbZJASnN66QvlIxTtX1GJ9/oYF/PBg2wVhmXSI4E4863QHWaMcIRmAVuem99t+HgIXr/Sj/hAls5rJnzaFEWpGVJiEhXzsspWqm/Ek6IyM+UKLwHHfdJ6YRuB3pVTAMrOjKad8gYWgfp0Q60qez80Z6KPcdV9hSUQHs/NNICNd7XzK7msiKl8l6T0U0osNiFKzIa9RdcE+IEr2E3AdSUJIwTrPsXB/eEOjW4OFIDPmMUekW1Nm6Qd5IQrQwvurEGevh7WiWIB3+Zx+e/kwhAR2w1woh2BkKP7zGZYjslYlVBCipomiH0A0qQJP6riQbewrd7b0l8BG6a+/GETYz+XZvViXDCKr4I9iEPSQK9WeOiOlBQJzkvpQjTJzfotSvl6XgazWIuXiyZioPJ5rHqFg/X3PbNBt+N34h+qOmu/4aOJIm0eKJzMVtA3tzOTUCpcKpr7Y3bWvcEXLU/eCW+bKfgwF6I1I3xLJ+fcHhZWuxY8S7Qlk2bfrAyvYU0NhteTi/cOJN0xKilr0yVDDC3Xc+zff5nNN8qBTG8oDj6fNNkQPQcVFf96skiAvJthx/JEn4t0nzjhzRsBhWvJQOZX5dBCyPaqV0kQFlM6m+fQWUwxgAEPly0awuh1di07X4l+BpYEevW8tF2BEIxQIYcLvyuIQ9neH9yNG22mT5w7/ZrwbMxtbUQq2cL8+sYFU4fvda8QGA/C9OJnG6yakaSO0b1CjCyA//By2BZI37d+0laL8Q5epqq32Tqyzg4P/QAQSRdE9g9RZJLfHw4JS/9jCntJruBscq9BVeVifX+yCE/e/LDByJ/BFEJzenEin8wG+/cL1mWQWPHGDolqCnQMfnJQNj8TRaT0F06CPsLK7cbzqYdUxR62plYNbL62Thd1buqu/C7XyVJWdyY424+uPDQSbEo1EMnhSYIUWfCeDrxRNBPcdF3v8RY2Wzrpk+e7TI7dqWVD+23ONlthzIXaYs+njKH6PrggA859ITkjojfKe6AWL3ThoYfmJ9rtpTWBhxfqUVQqhpuIZXdv3jXUiiUnIfAyRYkpClCGrPsvz4AsHPnuuSpGouQzOfACbgdJvGOg6wG4lwH6uhmnxzyiZGOZ2aNpWaZlBTOnbjdHW/rIyB7MbFTqMMRl5qFhO3gZVnS+R+dEwn4dWKVL2VzZP5S/nYKG1o7moc8cbcG4f9rqsNmidFBTCPRzrm1SDdCxZ25mdVF4MMjMCRaq1wEJgRvF7uG1s3lK3uUCOep1q2IRAa79NfyJfLCk2BwQlee+NemPHNHAL50qhGbqt8=","layer_level":3},{"id":"f8a44d0b-b413-4926-a059-e1ac7b32cd45","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"Apple卡密充值处理","description":"api-card-info-apple-recharge","prompt":"创建Apple卡密充值处理API的详细文档。详细说明充值提交、回调处理、历史查询等端点的HTTP方法、URL模式、请求/响应模式和认证机制。重点描述iTunes充值回调机制的工作流程、数据验证和状态同步。提供实际使用示例,包括提交充值订单、处理Apple服务器回调、查询充值历史记录等场景。解释充值订单的状态机和生命周期,提供重复卡密处理策略和防刷单机制的实现细节。文档应包含错误处理策略、安全考虑和性能优化建议,特别关注高并发充值场景下的系统稳定性。","parent_id":"04d0a6d4-e8a9-4e8c-a8f2-bee9fd409e56","order":1,"progress_status":"completed","dependent_files":"api/card_info_apple/v1/order.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_submit.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_callback.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_history_list.go,internal/logic/card_apple_order/order.go,internal/logic/card_apple_order/callback.go,internal/model/entity/v_1_card_apple_recharge_info.go","gmt_create":"2025-10-08T18:20:13+08:00","gmt_modified":"2025-10-08T19:00:01+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBuQ8gXhRT0hzB3h0Nbh1xIc8vbGqXNlySwlsHA687otrBmRJVS6BPY7gJac8PZeXAsAUuL36qjwvumcmqfC0mO4vzJPpld0yLwP9nKUzByZeABboPKxsN72AHYuimc2vbj6BjRkMxey2MWjbd7zKWCmcBhGvX7aGJZgvRitjV0NbfinDarbhhJnXy2JG8fWQMPVL5MT6As93QDKtWRspAh7McoJm4482mM5530X0q2+/5pquJsvX5TVtIhdaZ9YQ0NVMUw9rRtpicvoJekjYlNOxWZuLmWwLUsj2FGo0lWqQQN0I2qCrLsueyHWEsTrUIE1tcNEGP1SesE9z2GVA2RQzh6Bk5fA+FHSE4yhsvMI/RDblLcl2APujp9eWneAvKuZYvDAULZ8W3jbtM43qVgX8X59wSHDnxfe/iLTGHxobpo2ZY3emYDBUtPdz4aw6Y6djarI1Tug04e0myHz/gBAUvWFuXuzSxrnnWVro4dXM9G93q7dgZjxDgBMUIlBt+0pK3FNWTKt8ypLZ7hcyOZ7qZXEk0SFm6DCxzSadEmnB1/cHvPxgeGky8QtSpttAVJ7QfzJHd1NWP+A85H8VwzZZ1buhNjamJ0FOSidOrszQ9x4j2xPOLXqYpOuF17xM9K3o+F4DxQ7ScG1u2vAmaGOzNgDIdKMVUtGuaVeyOTQmLTObX8XrV6lOE+uEWLHBALC9jMYu9m5mPN4M3HoJtJ4uz0Sth4gVJYSzdXMJgIxDQGRP4vcseqIBD5Vzx/i1Omho2/PT3t46P58JUF1ei3ACBNMgMueW4vpvsIken9QSyshW8MkozNRNpSHaGNgLsZ+Hv0mxz4HZkqm49Iw1BHpKC51pgk3Uks0BUjt6xsKnxDEbbAoh+IFl3Tx5SQfPLU9MdmfgAEUNVUydcdV4RBta8VKRmhQlEpd7u4L2YLOdC3pAz9XvQceBvxc6a9JpFCPbzl7invyujj7Z9Ujz5A4GcukIVtaMKSCBlt53l2LJHofYx2OHrdr/AP+7uZjkZFLBmelj2LX0G7dTMcLILju4QdmFQawqmYJ9HJO15WdO2uz9C/nyK1sN9LbjgMOgVc8eFmO/A4kTYd6D2bIF9TdfzKIhLRdHiiy6ZvlmAMzpcczRB4xN1Hq4Nyw0EAC9Nkf9Hi8AAfxGvABIiNBwWDyXahE9tGdXpB4eMKHZn/5Qt1Z6veg/JG96rpMs35nn4/qtuT5eXQRy+UZdcDC9qyWnyXNKH3N/DnxL2NDRHTcCUtBJhgopB4kQz0fzTh1bZWtylP46ilFo7HswGp1xQScG8DpABULiI3Q50m9CTfBvf42TmKO03cTOn7IxkCEQLmqyOKwNsI4THODt5J5H8ENehAgRz3GhacvV7tATmIbcNLo82ROYYQRADUqdnbB0YbPOZdglgpaoIBJhCym6cpUV3sjLeq+UFO39JT+JDUXVfVmOE8isa7tj+vb3PKn7c/utuSJLcyIGNQ/+Pm4r+w/KjNATozPcmc/buYl0Y4XiHU2xWY6Lptym/XT/1iO2Juge1mI/Il//TytNRDLz1Bs/yqMYiT860ERThWkBlRaRmIVNf5R63uU86tmNaSFV9JXW1nwzRwZJvwPk/lVFlmek7UPPp2dfj6DCmxrtoPqOWCLupaLjEzzAIUhB/fZSGqDo3n6gVa/6Q0kfRoLGGD4NLRVCFj9R6nA54crtmC/F","layer_level":3},{"id":"a255fcc8-4b84-415f-bd11-dc26fa62d0b9","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"京东卡密订单处理","description":"api-card-info-jd-order","prompt":"创建京东卡密订单处理API的详细文档。详细说明充值订单提交、订单状态回调、订单历史查询等接口的HTTP方法、URL模式、请求/响应模式和认证机制。重点描述订单提交流程,包括订单创建、支付处理、状态同步等环节。提供实际使用示例,如充值订单提交、订单状态同步、异常订单处理等场景。解释订单回调机制的实现方式,包括数据验证、状态更新和错误重试策略。文档应包含客户端实现指南、错误处理策略和性能优化建议,特别关注订单状态一致性保障机制。","parent_id":"288b9b5a-64ba-4e93-885d-499412ad90fc","order":1,"progress_status":"completed","dependent_files":"api/card_info_jd/v1/order.go,internal/controller/card_info_jd/card_info_jd_v1_submit.go,internal/controller/card_info_jd/card_info_jd_v1_order_callback.go,internal/logic/card_redeem_order/order.go,internal/logic/card_redeem_order/process.go,internal/model/entity/v_1_card_redeem_order_info.go,internal/model/entity/v_1_card_redeem_order_history.go","gmt_create":"2025-10-08T18:20:18+08:00","gmt_modified":"2025-10-08T19:00:03+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBnAun8ymWT50xr+zQMrdfh+JzQlOWLJm4o1ZqCukrC50DHCusAN/0zL1uDXc/vrzQH6s+pvprxcKT/XPElwdmz6dQ8Qjdb+NTvCbf0d60ZSVdNZn1cZCzjaTkxXDwkUwKfBZAaty3DDkJ97arJJM2XeNGKWOSpcw29gbMfkx2sBWTqtT5Jjotdmd2tVIDWkonvnJ1vA8RzTeDXpB7Mk8YjkTFg+waI+PfPGf/y98gHCNEO/fF1qpBN8vkz+MAs4xkbYJBl92K411F/oX54qyaDCDGt+RDEIYE0GV+kNJ/xmVu9eFvwp/Fkylf4S2X4rMKixtRzRwuyUgcBZjFx+scr0QzVdTWHxpb+4VdAlnyNe8YCn1R35zcM7apkH1DzgEwVPqpz/PUoFISxYyEEPM2ryaCwOAoNe/M8XeXHSIk68dlpJ15NNaMBOuFCVHgCCBweWGWF2Tw38NclAQKtEGfiuvQeetCLRff+NDEEc/XziANOey/NI4PnkQDjMLsDtS5y1pEFGlkzevaULxwOv4Pu62/IFuRRCES4+MjPas6eGbwTm2ahAq7MOwNvUxl1E+oYl9GyVYcqXH2UnD9dWQZYJnbiiIfXAoxhJf8vUQJFV8YpzF7LxPE0zUffUNeX2RjJwq6DOBlH8uBKEnbg/r7MDIJs2IM9MZnpMWulUa2tmbK4aWl2uUpJcyjK/gDjn17XoHysheQllRQalXEkwAbufDf0kDNFzx/K7aMwRd/nKjVOyaKQ2OjwfY/cC6NxPDCvOpuPeglR2C74aHUjHsDkAga817aSC/9ETfHC3IjWSHlcH1ap82au/gJs41NsbO20aGZ6+qarkWDKW0sdmEFqAlJdd0XsS8N1fzyj1unkjosiHLoaV8yzQnLx2oCMX9Yi0TqDAwxq0ZHWcGDgaIDXFb7SxrWW0brOCV3k3ubVAObIM7XAz+pwrcfX/TiXoTbLg6kKMCaw3d+LiAo/Fs1jqVB7L1bdNQsfBbrKPNQMFh/2DdScuVrAAf33hR1rL+DRfddlbIztmuxqyllhL/V1bwR7kD4EakY1sDLkM4aaohE7HaWaGENwI14Ar1oMcjYpBkl2r9iEJFH6e69N6O6Q2IxN2JVXHdDMxCOYytu3uwdmEDwuMVmsKYoLFaEptwJi/v9s88n7rr0LXZaIyYE+FU4/EgMXtVwudLi1aV7e3IU+JKatpMjbLhRpaNLkfNUs5zHCLJx96/VTjaZqogjbqyAdcyaXgw2UWbhpu8AhtS+hk52pXvCwMAUDRyshNvlH1TkgYVttNZN9u+pDO0IEF5kPTA6riGhmt5v0qMfrMETY8Jk0EE3q5mU25xqGe0Dm2M5HIgBFYCzcV0dvCJCZsgZ2dcM7lrHKB5u8wjUN3ceH7aAA7XhZMr6fmA0Cp62hAXM2JvAm7hjxO8XGH6VlduHCeUZODN3M0wVwjqI74BCmeMvxWFpqQBe/uvAnq+TWGM9fRJuqEpwgjZ5OXuBd2HDVRd7OoD44cEFCNykckz0OzFP4UhsTqZZno9bK1TM6Kz93JnP8ZqJtiNF7ArUFxAJQ62924u2nrUOev0NpOqoyUsp5lHb7zh3oiQiLmMy/0jj6/ZbtktpyeOFbHKcth/nPhAuZyD+oKr4m9443SH","layer_level":3},{"id":"c156f2b2-d455-46fd-8a01-d316c8e27336","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"天猫卡密订单处理","description":"api-card-info-tmall-order","prompt":"创建天猫卡密订单处理API的详细文档,涵盖订单提交、状态查询、历史记录等接口。详细说明订单创建、状态查询、历史获取等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括卡密订单提交、订单状态轮询、订单历史查询等场景。解释天猫卡密订单的特殊处理流程和状态机,提供错误处理策略和安全考虑。文档应包含客户端实现指南和性能优化建议,特别关注订单幂等性处理和状态同步机制。","parent_id":"c32a3e21-0961-4618-a256-ee1396eca8c2","order":1,"progress_status":"completed","dependent_files":"api/card_info_t_mall_game/v1/order.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_submit.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_query_order.go,internal/logic/card_t_mall_order/order.go","gmt_create":"2025-10-08T18:20:23+08:00","gmt_modified":"2025-10-08T19:00:59+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBpwp7PBBej0a/DwKAcLvKuicf6vl49763nJQ4T7oW1SwmmHr2nQhTOzIckcABWKSlUJgeuYKu9aMTw/ksiYmKpWoOVkcuA29AjNMeJLCYrxELEHX/RtDnCSymIrpWrpYBEVNL2JhzkgxKtjJv2P3PIQhoddo5srmVnjOAfj6WX8abAtLQIuib2C3CUsO3Jy0caMGiAhbuPgcILgCNYwKb2LoWo1aDROBNXLQiv0h/5rlxBDhiHp6yHTLcozUcyr+nmvqv0xlQJCRm7PF+qS74uQESL0xA70oGIsY7BGSPSPnggle7XjqUQU++v8gvqoIXLYynp8DzRWxUQBEYDmCgIWSWlWALARmKONm3zkvburdzD7ijliod8N1i6eyqo078f1TofTk5QYiq74NexQNcpLTc/SlKN3x9Sj/ZbYEady2ObHD++RpsV+H94r2br1FWPuZZrQUHafAz5nP/3TIwMEVQ04PQUGYbDbi67wBchEuqQLOBk0hyVb5rt/APRH2aMiGColxHHYv2QIQnfsBOJX1IoQLYg1FJkhFuL75dAg27UIigniKpZrgcL8tB6WU8XvTmX6VRxhoE7zzIsuRWp7tLHqnYVb4K0qfRltEj8Wk+Onp3ReryA9nsxefJwSxa8PpMiEQ4ZmPTda1SyM9MR9ylD3gLtk4rJAjKLmBfCcYoBNgByN6s4iUPY3UlojvhzNM/rvQpxaeuqwykhAj3UTYEiTlQP62+tf/XNvc/4xHAL3h29WOWsPwRYXqYDUrMUkm50C8Rsi0jPVYjKHN6b86sEvCaJtwhRF6MjWaML852XBJv4ccMrBtlKmYfTl0L5+cUZKiv+QNN9mNdBH98POVpcStwSEfUMv7A6w71JdToOKRutsTS/b0U581GtgzvMGd6cwWMRghrk0XbBF0xP85DoMxbzfiL9AFigDz3gkWtIUIHlZ/24+dJKVKSP109IGmzIpMNP6te2vMkbeyv/Oeocdu0hsq4muGsW1UD8vdU9P8UDgiNui04pNnKilDvotpgPvE2nyGzlRIX1fKmO/Jtl1L4YShMr3JuNv8kYu+1tLQ9xiJ9yU/OYalmvBsr20bW6MbKmkE1xSqDpo5D+N8O6/cN82D3AmrmUw3tRxadOxo0dPmrk7lpot813u6vAhi5zNSdK7keFZHGJrULsqvepmKT+ImO6D4Fc/zeNLd/Cx7gc9nU23VRea3HspNOj/is0O4OzIiShq/de4xRBFldanayA34KGEQppWM/6JK4jNiRYjk0o1yI+uoY70npaC/BfcVLxtNs1kyLs20fnJ3JdABUqlTffbNbD8YdkxTAk8jtaLHvJpRjY6q3uqCjf4Z2n7Z+bCt+46Fa+8TegVOr9ulqNoqGprIh59PGkpQ1XvZNSXgGyeplvS1Eo5+HBUosyFzDi6uA5NPwKaH56mBsj6IAdlArnOaLbzM7jPM","layer_level":3},{"id":"754a8225-3d82-4760-bc4f-280e0c19eb86","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"运行阶段详解","description":"dockerfile-runtime","prompt":"详细解析Dockerfile中的运行阶段,包括最终镜像的基础镜像选择(如alpine)、二进制文件复制、运行用户配置、端口暴露、工作目录设置等。说明如何实现最小化镜像,包括只包含运行时必需的文件和库。解释安全最佳实践,如使用非root用户运行应用、设置适当的文件权限、减少攻击面等。提供运行时性能优化建议,如资源限制配置、健康检查设置等。","parent_id":"0e3e4dfa-8842-4108-bd6d-6cde149b8707","order":1,"progress_status":"completed","dependent_files":"manifest/docker/Dockerfile","gmt_create":"2025-10-08T18:20:23+08:00","gmt_modified":"2025-10-08T19:01:19+08:00","raw_data":"WikiEncrypted:h7ADvj4WLJHyulzCl+z7kCJ8o09p2tGI8awkVmrWyL2InK1RBcwm2+B6aKZI15nZpgKrnqicGdFRDxe41FImLhKK2ZOgsu721pHM3qhtLp+lD9TBo3B8GW4CdNXlVCXttj52FagEQnWjR7Ok8z2qIK7CUp951G7NrzOiF4BuUSyA232hodj/ra0uTSWpWoKgWjEyiZU/YVzEwJHVhlsCBJ76yhX8TTK64mT7WFwWu7azM7pUoD0M1C7mjaxj7mPfUq2iRCCrYACWhaH+T5zrbk2Gbd4O+M4PEs/ywQdHgjvyZMuFF862ueWawUZiDA8Fy2QFwzQ6LHFk4GXX+Qb35PvW6Hl54tucEP1Rw/o7HTnmoONOXu3go6/dL9+WRA0/RoRyUC/+ak1iXB+N5gZ5zlcLfxPIuOf2i3ptDWkDCCS42di4p7JFiJNjzMaiVwpHefr7fPReZmLQJdjI/O0g5WjDycruA2NO/IYw+vJJR0GyaIcF9E8UCtUx95EB8WRcjwwIHGfTMhRbSi9QSHq6409vNdPU9D+wT6kgmYR5HNCkzdc+8Hvgog2HQlg6Rtb3nQ8imzt8pVXlGQl7T3uDyT0Q4JSqfxwO8Q5QtpBXFkwpNoW6W2APxPoaWn8DDEJB0KXRILGnl+hW9I1uCDVCYA59OdsXnYx9D0Osjl6ixMzT/j7EF/kWmwaya+Mazf+wHMHguXqY8Md7TgEFz2Plqd1BX89eRzcKjzNFywC7AXOw0o34TuNLexpxm5AH56vBRwxt4aEj9ZkU0N1kDkqkyxwAIw2uqGevmMFS6EVrx2anEMh7jlzhUxYY+J0hfbl4/FlW5BSppLyk9HZbImH6ooAeAoIZKrgpmBRSivNGx3vzCRjICr6SbMJV35BXkdzhW8NB9AJjRWevAS6q2Rofw2P/mi1byfyZErtt4gYypYM=","layer_level":3},{"id":"694e73a1-0845-4ebf-a2f6-990acde1e379","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"沃尔玛卡密订单处理","description":"api-card-info-walmart-order","prompt":"创建沃尔玛卡密订单处理API的详细文档,涵盖订单提交、回调处理、状态重置等接口。详细说明各端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括订单提交流程、第三方回调处理、订单状态异常恢复等场景。解释沃尔玛卡密订单特有的处理流程,包括订单状态机转换规则、回调验证机制和状态重置的安全限制。文档应包含客户端实现指南和性能优化建议,特别关注高并发订单提交的限流策略和回调接口的安全验证。","parent_id":"7171317b-83f6-4146-8818-b00d88d2b2b2","order":1,"progress_status":"completed","dependent_files":"api/card_info_walmart/v1/order.go,internal/controller/card_info_walmart/card_info_walmart_v1_submit.go,internal/controller/card_info_walmart/card_info_walmart_v1_order_callback.go,internal/controller/card_info_walmart/card_info_walmart_v1_order_status_reset.go,internal/logic/card_redeem_order/process.go,internal/logic/card_redeem_order/status.go","gmt_create":"2025-10-08T18:20:24+08:00","gmt_modified":"2025-10-08T19:01:13+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBl7AFS+0V9EBoppO4IsIlgmiZp2o9E+nyWzfq4lRGV5l/tcyFnfkBw9B2/mAMxcM35H6yqYgB3970FKC4oT7YPUYYXIhgNKAWkEUnOk1wxl1biDCVdJzQe2eGwQ9rvmvJLFNNIjY9hB0yA6l9NQkvO/eHqs8iynDUlTpqQxm8nwJfpqDwtjgx0bVz7s/AyOVlPg/pBbtDoClx6HKqM0Q74Rp6MKklmdTj3fVSjBx46aTV10dC8GUmk5SWn3kHKLi0ITX1W/1Yra+NNYNaX5g6HPkQxEXX0SsmtLSIBgPYrK0RDXHDvEeziKFi6k0k+zADnz7V7rd+HY90sOadfVfycJuU0b3CcwqHfT0BYGLUbeRt37Cyk4Af9+mwZqcPsx/yEs7VqF0r8rI68qZpTZFRmlgXwMH6qXci+7CzYs/B6yADK+tQ///GPG15XMO714UDfFgzCjnyreeQ4mwpFW7/IDYlrw2nFO49TfwnRoSmcDGNn2o3o1uAoxRa4HwxqtaXHhK2ke1SCZYjONhha7b94kF+u96x4V75vff6GUqdz2t19Qqsn3KHGGo5WNDt06J/ASkZxTxfBCidTP02xEHgsTMDeOrecgJHS/HHPkdLHQZx0wFJTvSSZXM7J2qKwUzJvmHpgp/84E7UQGffMrIpyp0hdt5CDbGdadVCkTJpRqNOKClurVmSH6LDgySUCmaPogMpXr4wdzo0tJRvPRe0wult0AoHd+4zBHVMO5jJ52YfsRZlO3ZxCeafrFPPOYqpLVvRhExaSR8ckTGL+9sYBPo4Gcjqj1Nng/Rg6dWx5O8pIguOgqRJEC1tDxx0ANIZ81A0lx+YJRLA96evM8m+RR7uh17E8l6fGyX94wr77DU4XSpms3GShy1wsXg4Bm3cjLCQJA2Xck4E1Na0j/Yjz3QOLLPeFz0OXqXF2KCNoGgLWOOQFGdrhtxPqncvCNTlsBxDZoMsbXAJ3KH8aJwx/v2PcDDpoQQjh8zInOUpA2lrwzBXM8P6hnE0yyjaRKjLQ97PhTXOq2gDXKHOdD9Ax5jQc6q/jkYb4W9klpQDXJrNaGCOJz3gf0S90niEy/epd1wfolAArqiCh78gA7FftUAcGgKKKPB/gipbw1OJbP+WvEdvKgtJPbu7bbZq2POT7CcjrMYeiRXOeSgBQs5kPkQt9ErYwHTl7weK4RHm3v2IIIso8wKEXnAWZP1J5RJDyiRL5CQWtUjc9+WAxt7P1y3NXLxZKh4a9S3341YEXjKKNrPaSp3pMBDNHtzYlsn3KvWPDXyF7i6fJkadXtc6aCmX/Fy5pMdua0TFCJLL1z38QkEns4+F1sucDGZ3Ir/917cVVys3GHyVdXaZX3EDm5FDaCbBMjqwn0F/IjYZ5MdojWwrbLrZS1HOm4g/Q8WOHCCv17831vexItO8+xhMnwxOlst49F4LQOl+Eod8VXxy85Wy2T5M8skMw4Sm4altwFeVskh3EiHQPkcB1ATyXv397DP3D2AUJCaGxmPJ/AyQ4sxk9FeIYXsKOW3zSlD4J1uE3TF2GQwbSlBPeuHd7ufO3jI2FvuBiWpgxxWhkRj/CEfSdwdP9R1Yo2JCOYbmPX0vomc5VI4DRgO5ZtOyHU=","layer_level":3},{"id":"350fc114-3308-4a56-87eb-6916d2c2e278","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"数据库配置","description":"docker_compose_database","prompt":"创建MySQL数据库服务的Docker Compose配置文档。深入分析docker-compose.yml中mysql服务的image版本选择、root密码、数据库名称、端口映射、数据卷持久化配置。说明数据库初始化脚本的执行机制,包括字符集和排序规则的设置。解释数据库与kami_backend应用服务之间的连接配置,以及如何通过环境变量传递数据库连接信息。提供数据库备份和恢复的Docker Compose集成方案,以及性能调优建议。","parent_id":"58118687-a7d8-4b0d-b788-36481cba182d","order":1,"progress_status":"completed","dependent_files":"manifest/docker/docker-compose.yml,manifest/config/config.yaml","gmt_create":"2025-10-08T18:20:37+08:00","gmt_modified":"2025-10-08T19:01:54+08:00","raw_data":"WikiEncrypted:h7ADvj4WLJHyulzCl+z7kDbH6uJdYYCT2pc08C2KEwMf5Wl8AN8aSXt7ibeyk8vJfbJakXE0fYaiRSmXHov8N6HxKWIlNdIrovG28EnpX4lr0UA6D4aN/Jr1Dw76RdHebznqhp3C8/j+LlS6Kd6rR9GwW/vWIiXiRsELkjk+KMU3pP9ndmdEuLGFQ4uAWPTqevVaLNpxh/cPBeylyu1hIyRorIghw3DHdQgQbx8D4bUmDCf2AZm+xRJxmakYugRwU1t9VT/TTelfjldfNZrjBMWWKaLWFBoAu1UP68mIeriPuYhVhUp7TbCwFH9dfq731iRttNcit6/wULnty89Wqv23LCCh1GxGYgvFscEAI/a5pQW+4FC8OrqRnF0t8aeh11XU4FyDHA4lavLB3g9FdMh3wSkPTIMs5QC6M9YNlOeROdjd4+yHrEWD4kGWMebzgOrb9CJfohrmExlyyxSmnM/6CXtjTFMZOXW6uQZ6E4ZjbWkMeSt9JXGg4DGAulvTRg2IXMjb0ajkRwH7fbt6YQ4P6kr3Xy2Suft9bjfNTEJu5bzOn8eMK4iFSzJ8j5DhciebwLZPNHwJs9DP/OEFq6vl9oWKWZjxP4qfAACJmVn7+CJmevXfcqc+A9D1GfOSNWASKo/EudAN2/T0FD3CzWHDq7qdkhjrS4m4SvzxPS4+VO1zBYO3gRH4lJez77fsMVpCt1CmlWlzv63AG6H1wsn+mrSZb3Yv/4OPHi4XNckxlkhlhqlmeJO1Vvy2EG2D0zs+/OWIt95lxuKksLver02gy6PAEFN3EK6LzE9qRcDjVsKmqtzEvC4ju6cnmqAA7DhP5+T6mhnh5R3zUuypkJ+sAcffjT+Ns5tkH662R8pXpyZmARzeDVsLkrtE+lRYtgxYF2m+vkRW2NNLesQXuGqKY+8v8N1+5LaxFvcwrAMTcby9wDcKaehfSrYCTgWhBymjwMrboclLoRFkQwYMOTxdH6hF73USe9gHMYlZjcxTczTkUeREQvL8EoYdzcOYTt50qUpwQwSkFBeMjs1DExIPTh3dPbh17g8fRGQ7gxewkAXgw0yhrisFa0KsCrpHswWBkuydMB0YUycjioFxUBvq0WQ8wlHkI/xYDSUUAsCWc6Ud7z2i0llFzpxl4o7G","layer_level":3},{"id":"aaf3daf4-4a28-4e81-8d88-4453361c2ac6","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"商户管理逻辑","description":"merchant-management-logic","prompt":"创建kami_backend商户管理业务逻辑的详细文档。详细说明商户配置管理、商户部署信息维护和商户样本管理的功能实现。阐述商户与卡密通道、支付方式的关联关系。解释商户配置的增删改查操作流程和权限控制机制。描述商户部署信息的同步策略和状态管理。提供商户管理API的使用示例和最佳实践。包括商户数据隔离策略和多租户支持的实现细节。","parent_id":"201b5004-c469-41f6-a407-c98892822b49","order":2,"progress_status":"completed","dependent_files":"internal/logic/merchant/,internal/logic/merchant_deploy_info/,internal/service/merchant.go,internal/service/merchant_deploy_info.go","gmt_create":"2025-10-08T18:18:19+08:00","gmt_modified":"2025-10-08T18:31:02+08:00","raw_data":"WikiEncrypted:3KjeyWIVLPDcIZ9hw3jQxyih1hcV0MJ4WqB9XePVqO5uSk87HoZVMGLCJS/ddafnUeIJQvZXh8CiqeZCsOzZ7WWApgQWliHRHf7qJtC8WdA8vY8+vPG1IchuNQxYCmY726D+QWa21h41Q3fVwQ/EbkZ5I5PeqL7fxALsHkjR7bBIGQOIdSoi28zn6pIjvYcJtnoUtCuvAIjXx4lggeR3EdyOcuTum8hNpHtQIHe94pnVGtGcsTmo4ctQw1pIrWvLoU7Mau/SNz9G1PPgih7WOyVW8Ikgmj0cg0hr8q+tzGSk1f0XuA90bYVJoHuVlzYOxgYv2gYUY3QapeKCICUn1agTLEmg7N5M7J5gxYS5Fcvn0PeeH4pP/EVszrTglRxS3bCNec9qgXJGdu2lNpJysa1pHLO02WqstgyamSPXp3McUvZ2iAukpl37D7J8xXX9ObEoHE6BqctgfhJilK5+D9CeM37NMY2xHIv1AvIz7eJgssb4j1tw46j2zytfPPuHjkbhVD9MAgReDPJi6nDlnYLy4TMisNA6AMWQvZ+QgSa8Vcs6rSg1wYsymZ3Jb+Sp0gRTQJ4w+LqN9lQSEZaZAfaN/UY0vagzo/nN9u8qsucFikMgtnrOn0chKR4cdJM5abvOonr7yFX9n2LVA+tLio3/LOOx+lbSMHV6s55bwhoqRLznUUg82dibsXpDMLfa9Z/VNObrrZDhQdrKtRBhhpSWhAiW+wgqMwVxIfoG663sQVvSSn7InNOHftnlVRJNL3PtprkW/ShZqbUoKbMa2CwBC6eYqRQ5GW/XRcObjsjdZ5iC+0/MsNFpt+WhMSWBxEiX+2WDT0VKjxoO4UxDct5AfSeG6orDnF5nYNe5AmUVRtwRzCSqriHvZI+6zcni/Zi9e4iZatOYfyn0dWqCNgh/tp1h1ijz4fjWm5JD0r2iDnLgsdK1vHpeCi8Vek/TmPythReG4WqRW3Hj0WxgJIBsDppKaoGu6DkbCLa20FyVOxMfxPi+X+bYZoHAuwWDw123uRUGPqUw2NsCDDuVLfnAyuaO/angWaDh+r+Boi1QdjLgELbognD8lGncTpHASDOQL0RrGx7E3zuXU05pvtTv/pJXtxz/S5StHSs8DCw=","layer_level":1},{"id":"8d18de48-44df-4825-825a-d6d8797a330b","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"卡密数据模型","description":"card-data-model","prompt":"创建kami_backend卡密数据模型的全面文档。详细说明v_1_card_apple_recharge_info等卡密相关实体的所有字段定义、数据类型和业务含义,包括卡号、密码、面值、状态等关键属性。解释主键id、唯一索引card_no的定义,以及与订单、账户等实体的外键关系。阐述卡密数据的验证规则和业务规则,如卡密格式校验、状态流转规则等。提供卡密数据表的模式图和示例数据。记录卡密数据的访问模式、缓存策略和性能考虑因素(如高频查询优化)。说明卡密数据生命周期、从生成到核销的完整流程、保留策略和归档规则。详细描述GoFrame ORM框架如何将卡密数据模型映射到Go结构体,以及DAO层如何实现卡密数据的批量操作和状态更新。","parent_id":"b8ba5dc4-8d15-4b61-86e8-07a963bd3fa8","order":2,"progress_status":"completed","dependent_files":"internal/model/entity/v_1_card_apple_recharge_info.go,internal/model/do/v_1_card_apple_recharge_info.go,internal/dao/v_1_card_apple_recharge_info.go,internal/model/card_apple_order.go,internal/model/entity/v_1_card_redeem_order_info.go,internal/model/entity/v_1_card_redeem_account_info.go","gmt_create":"2025-10-08T18:18:21+08:00","gmt_modified":"2025-10-08T18:31:25+08:00","raw_data":"WikiEncrypted:UimKryUcsn+gf9HzsspIt0TIkSnTFPxTB2lIcaUYUvTTahsE+f36dmyiYIpjkYfey8DDMQ+BmZ0SzhbP+eCmQhymH25gVp+YgCt1JureApmE5TkiTk2RbLINgqw81oYuaqjVHxuOFT/LJWr7ImO//6hBzRf6kT5rwrtfnbMhZpcgnzdnhvYrshMgYQLG7GmInjya61EcyoSK2g8xCVgq/es4rCHLSk26D0FRMNCM/aTu6Q3HkZhiSsFiNSpsDO93NxTXrDwiqxYZzO8fmCK2WscZ5yz+LCT63AalI2AORs17e5T1px/vEgCNthvL2qcPurZA6nR//CvFRQKkqrDs6Ny8uhNezNQ2muQ366rNdjUkb6Mck+pqB1BihHrYaLbdiNCSdtvmlkQ4o7Jc2YtEQeQp2SB0JqCpI0BapgVIrbHa/ap3At+XPgvjOrM0DkjaBYY1BbaZm/Yo2xaVSipEvZwsJ6Nu1gLeZ/94zGFYd9myhj7tfTOhyDumOITEIVuhb4x4EgjjZNwjrodAm+zNVjYMeJsZl3yDiAwhcqIaqSg0bOBUAb8EZsvjpy0LlWs3lLma6BG7nJl9Ua9mLk89NF4sMmVMwbH2tMv0d2vIYNMdFjiFO1lsXgCM+tDKPwKi27KIN51Yogw1HV+R2LF4uKhdROhEtgQuo0nk7oRAFQ/ebNcn9qFxFbKcmWvj5mPu1yScF0VycTjOs96BwIX5Fb5uEkg9bINW5wxy+Z4yti7erx7Z+GKy5BsrohlZVVudfWC+/EMAGFvoup0d4tXEIA+NliyxBBXa3wLVPX03VyF6ocX3U2xm6R61Jp1oRHUL1QxDFlFyCfDIGr6dQAynjLEmAQfOMqjMj5FZFK99lem8ReSO00U+Jo7neI4Ick0TPlzfxVyVe7Jf9C0GuMlv1tFTa1iygAfB7k0rMYMTqw9ocWd8ZHy1j4CS5wnCJeBfLF4ikXQUG7NY+PbAa/iljAsABhdK9C0DOu7VLa7TC0oAFQBVATzj+4t6DePtbstSXbWzULRqoNA7xplI8vGKRlpySO90g6eEOhvCL03mZCkgEtljL8+NaqrC1zHqsX5RGUr7ecb6V6aTT5wMW5IwgyFlVRgQA66J3hyiayQIUE4Swenep9r7rTady0HC8KKCT8wqYfp3L8WW0Uy8adLSVwKmcQTN98eGDNFyOdDhlPTMslwOldgJwy5XUPKPfzQQaf78PG4780necxhMz/RGNnE2VPyEFdT7FSZOesi+6wjJ0MufPgY2OAVOsadys1egKHEh7N10G37T+ZlBGQSZGclJpwfJjUeTLDwYUrNTPMUKeWYwKF/smI+L4/qIVAUoxOAicOh9NZ04H8RC6zUqnnZQF5sG+LPyx6JwBcpmp0wSmt9umA/Jo3bHMUQkFkjvcIOD2qAkf5+xSUY7rsIY2K4qDZyGPKd0iDHaUGN2XEOkz+gfUmIccB5pQ8y7GEPEoTxl123ZIYHUCPTNnv9IZJ06iJ0UTnw9eWBcuhSS0QPiR5XNrDWa8R7YdXOwSQ2put9iSem2kYb/LJhH1WmdyTUgwzr3A59bH3Yd9j8l3EbofRK/20pz3s8ULT3GxL/JdC0+xhY61uZLj0oas8y1IPHuCbJV6Prqz5MZuDXVYwcD18Duh1HM4sc33SddGmKVEGehJrh+T8l6XuRocVYVr9blG/xIvssdZrx2z0SBclryXwYwIK6NR4X6TAuXiKsldFwNTx91+s7yPlV17QOkWkBkmOrXrORn8puHWpLHabtqPY9IeRaxx05d6b2H6L9WbszqYQqWkFe/6FTXqIJ1o2BNzeNvrmGQA8hej3Nc5OcqsJWsSw+Pj2LOBNsd/1zxr/AipDuF14x05COYbFhqrlO4gth0CYzK+eU4Q/18Lnk=","layer_level":1},{"id":"079920b2-aa64-48aa-a92d-8decf24623b1","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"订单管理API","description":"api-order","prompt":"创建订单管理API的详细文档,涵盖订单创建、查询、历史记录和汇总统计等功能。详细说明每个端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括订单表单管理、订单日志、订单汇总等接口,提供实际使用示例、错误处理策略和安全考虑。解释订单状态机的实现细节,包括订单生命周期、状态转换规则和异常处理流程。提供客户端实现指南和性能优化建议,确保文档与代码库中的实际实现完全一致。","parent_id":"693df6d5-abb1-4b0e-b0ee-fa0cfcf10ec3","order":2,"progress_status":"completed","dependent_files":"api/order/,internal/controller/order/","gmt_create":"2025-10-08T18:18:22+08:00","gmt_modified":"2025-10-11T17:27:33.1352222+08:00","raw_data":"WikiEncrypted:C1x/54IbJKQH/5Vl+vgwI0JvoWx6zPUhTb4HRqSX2wblxy5DfJxLRPGgKRoPkdsCB6p2I5EUE7AQk+39L8I0VQviyQZaImfNEZOtggFwNploSYaTE7l4RjjXzGKiRU8Gj1Mq1SO9gaAVmB4P81rh5y5BtUVjn4cO7JrpGMdRZa8HyHzfD6e8LAA7s81daxDM8gFr/3d4RXXGj+Iiu7EZEJ+rYllow/hMLyPoAwsdrEhhOfP7khzPU1XtnlyynSx/ZQFaYJL+7OCAyGbz+VVHJIh8O2rEcBBJouwdhAb4O5VROn1tu6fgGN7gSqMA4AJ2g6yoqRraOTtGBR19Vmj4uqPhkmqlOy7GriXeI+V30vEPN7H65tR6D2MK6kdTLXiQHx+yLB5YmRpdyKNvSbBoZ0QlfS8KNfwA4xRuEUQ+QmM5aNlReXy1gl3jcyzEQe5/nVZoBuVKrf0Tuno5tcJE4PzNO7EaESiIAd+xHFBi9l/v3zYIoJuzwSaslB3h2BbTY6pLKN4AqTRKAq7HcMHvvdqhBOivNvSdoQnVmvoaRB8Ocv6zt3kjOws92P3iut51az5bZkHZ+pz2Ppr5whoAMP4w4hou1XeipwKey/AxMqw8iZc8ZTCsDFwfkiDobOn6n5BnncbIVfVmgb7Rii9oucNmFYag1K2veaUCqIM5MkPKOQkx3QpKBh/BIaRedPnJMMBcAhmekD4BNjHHLA+0RNpn1j1MGHmRjs9rageXcMrqcMLlY7+inQw1pZO4AC/QVnnxMEXpkwObn3fBPJtE6oNhFJP6MEJGW9BF1mdPmYxl+bqdVsBSuNjadkPokD4Zc8c/HH+cAPqLGdy8Sd2o3+Zz1Sqgc6CVEbE8izb4VlT5yrpnfLEmLTDtMdMdW9YTXAk4rBTdK+/OaNCwlbHqW8ug9CdXbBbJWnDjNRFPFvpk8+P3PbddLua7aWmwSy8vAmyL1C+Xe4NTR9Dk5iDEFEb7LF+TcjuhjT7kalnpzzzmKffJeNbX/H1Bn658W9P8wMDyKzxbFW0TLsP99Bd/vdfOxj3Q2gXLRQo3uTwzZlzrVAC5xicKaq17c1hhvt+KwIMQuY5RQnqaJmDoliEXtS/RcZdZTmIY36OuL7pjBpc=","layer_level":1},{"id":"8b232595-64ae-41b7-95c2-1ae6428857e3","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"数据安全","description":"data_security","prompt":"创建kami_backend数据安全机制的详细文档。深入解释数据加密和哈希处理的实现,包括AES ECB模式加密和MD5哈希算法的应用场景。描述敏感数据(如用户密码)的存储策略和保护机制。分析加密模块的API接口、使用方法和安全限制。说明数据完整性验证的实现方式和防篡改措施。提供加密配置的最佳实践,包括密钥管理、算法选择和性能考量。为开发者提供数据安全编码指南和潜在风险的防范措施。","parent_id":"ad94de09-b7fe-48cd-9a8a-bcfa78565c2a","order":2,"progress_status":"completed","dependent_files":"utility/verify/aes_ecb.go,utility/verify/md5.go,internal/model/do/v_1_sys_user.go,internal/dao/v_1_sys_user.go","gmt_create":"2025-10-08T18:18:35+08:00","gmt_modified":"2025-10-11T17:28:55.7231021+08:00","raw_data":"WikiEncrypted:Zb5TNaG1u/mRrgPr+sDyCughdwXy7VcKngnPrhXBk9mq+8vTqaApkxGNWz8AzfwPDXM3ewLU9f0u8hwciM00IIlZnIcBll6gl8LBLw7BrvO7VDkNrXtSqyXynWajifUYWfxTGnS36tIu4vil/lsQgR4NTt2CZbcOOlZNzJklHW9HzG00HlUwW61cPpRnyoG5q46hWubwOdhCsZT11eNLdbtwMzACYDb6Oym3NHyJxO5ic/6p2oxj45ZAFe0BORfKTTnDtzmLSLVFZ3m+sva00QGegW0HNuZAOb2NaNAq4RHjQczuV39bZ/WP71GHIiBwRt4t05OOjMfAmYX5/Lq55FG8nurl+AponX+vuO/tRQHuiftCVW1pslI7cRIAGaFhm4lzAdyBPQKmgPXsUQ1lZXO6cc4Dvfgmkmm0Yfw8t3Bm+7KVug6gjArizaio4ZU5Wp8UWc+Kl1IfExy3QIjPxr24KezusWbuRxdbSnfigcdz1mksH46rUG/vm2/+9/ho3f+JjrvFocW3CMcH3HUyGfRpdvQWJdnoXWWiqzIyis8pK28c8JR6hhZni+kh8KWr2xomIRXsfNWjSHku+FcT7LOZtr9uv984hom8xnOlkOKBgaifiHwYiW4PeCRv1/UTNggx0lDH/I2uBABfYGhY9M02KDvJQ5vTKUuSs9U2R0tcp59s5BLL2PwVYbub5sYAZyBMjHcXTdbgrA5Al9qKpz8KIBmaFRTdWAUZq0La3fXsrwgVfcdZG9VFaiBF7CNGigiuT5nFFr7b3KDEr/PecHM7bN3QZpZz4WaHeuz5kddJNmvn7TrAZgP16Qgz9Wls50CTic3p5I5NFHIfLMGuxnyCQNh7/CXGujC/fNWvo6+CB8MUn5UXbd0KGMPLOF5Jfs+D5E+PNQO6LhHqtBNdQSX9Cw4HowKiws4vxN4fMwE5E8Ii1qZH/Vn58z7OKshSbnSMGhmbbX1NTUnnS234uZqi8rZ1kzzoSf4XSRSsxQpwhNN3suvIP6TzSS7fzkBUZKJktVDjqqu5kMBo8LOcNp0ecHrco7IlRgj4cz+tlbBp24/gP0NBl/cqVY1oIAw9LtlWOpi1P59XVnrCZjJAqetTfEKw303o+T/ceC3YniYtqloJFHJOswLmwkemAdMk","layer_level":1},{"id":"f5f182bf-a48c-41f1-86f7-12c882b3775a","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"权限系统集成","description":"permission-integration","prompt":"创建kami_backend权限系统集成的详细文档。重点说明基于Casbin的RBAC(基于角色的访问控制)模型的实现和配置。详细解释rbac_model.conf文件的结构和语法规则,包括[request_definition]、[policy_definition]、[role_definition]、[policy_effect]和[matchers]各部分的作用。提供实际示例,展示如何定义用户、角色、权限规则和资源访问策略。文档应包含权限验证的实现机制,如何在API请求中进行权限检查,以及动态更新权限策略的方法。解释权限系统的技术决策,如为何选择Casbin而非其他权限框架、性能优化策略和安全性考虑。提供权限配置常见问题的故障排除指南,如权限不生效、角色继承错误、策略冲突等问题的解决方案。","parent_id":"050aabef-4c8c-4892-849c-74a2e3feb22b","order":2,"progress_status":"completed","dependent_files":"resource/casbin/rbac_model.conf,internal/controller/sys_auth_rule.go,internal/logic/sys_casbin/sysCasbin.go,internal/model/sys_auth_rule.go","gmt_create":"2025-10-08T18:18:35+08:00","gmt_modified":"2025-10-08T18:32:32+08:00","raw_data":"WikiEncrypted:arCjhUL6OOP3tq0tMlrtoOi+YxZ4wb4fbUs7AyKQkZTfv8mRogDaYSFnyXY1kIyaElUfcfdUV9J0wBG/P2Ehs2OyadwRiht4khd2EsVa63C+MnyAVI7YW8jvLO3v3yE+fhVnyBpR/iyNON5eMBSephXFulXENFk0jgIADmhaOBPZXWUgx1LwKHP+payrBVQL/u4CBFeLuzPWSLwZ99ChGf1b26H4avhLUUrXklEWuQ/I2MlcxALqQ91VYa6i9PgzA5A3yllSOB33AlMEKosbjHeb8t+mG88biL6xtusYRFz8mc5QUUUEVyhQxwXC6Ov+EWJPswoPe/iMp7ktb35Ao8TLjxFECClVRorfUdJKEjsSdmeM5Xz67w75bH3C3vjmEZMjy5yw0iFMm0IuU3CTKUBFsK8BM2CpFSHlP1w3EeJUQghY0ta0cfQNKZmcmR2Uj8+P0TAsPwPs7IXfQOMOXsyc0wtZCTxafeOzFt1DPAud7N2bMpcOMhuG470bKCRlPP9YeA/FYdynNY3VZTp57hwKVE8PIrL0W0x/uSrF3o2FHDAyygDIVoupDbwpwZlFV+niyGek3RIsP9zJ1wDhxjS1fmBugWR5hCi43OrrSzhaTBHOadF/oIcf9W6aqfEx0obSFNLQ06bc5FGQO7F218i211bWCsi+WAl8wSxxc63RT3NmBTYT/DFpBVuhkHKB3OTf/bxn65be8H+uLtdOXZNMg1nsFVhwqBH/g6vYy/gCOx7D2bDciAe+xDImRkryiSWKnnMzKOsTNUL04LYwrYXSxSwVUeZdI9dHH9wNFZD7o/Is1PovEvaqpGaI0xfloNr7lhJePlu9msKkv6KJiw0tWIOWg/2LojMv2lXx6wWsDH+0bLFmHV23uw8OxnawdO1lPX6vsM5FIbqUd8tjtowZOjYi37Ol14RMicd1oxm8I0CNAae0Ipg7vtEK4D+hvMoVIVG5oTjS6GCxBomrPUa8YhNrc2FqFd/65QbxOKgYMEtpawK/rrJSRL9adxUHecNKWUKeiAELdITDeCvgZqfybBlLmdkv/m3hOEn/FLhJiZfABYaGKBYk2QdoGyPuN2WvUyv0NA7eYCjrjbw8RCdRyohv7lltFfQFe6SZFgiKLRAMD1i7RAsxQXqLpfrHjB3O3kbOEkS8O4y9ZqmUoDv7CRCiYwhZ70PdX0vUJDpmEpB4aQpevmh5qdm1Gqb2ybxvpCPuepoQnEilBjtLk3TV39FTFXVDsWx74f4SKvJ5nT0AxuOgyoS25l5HYPK27KyUrIv+xPp8ok7VwIcfmcNOPhrIJ1G28YycZgC4ybvDYW+Biw5qw20wRekJt/7fB0k+ic1k0kyaoAXk/nEUkcSoPCwzTh74LG63uAOEH3oe5n6wl7gSJznpIA6R/wmJJQAYxfrD/nCG3vEuHWvkspZzZdd6fTjp74FMStyZWdn5LrgN+UrrgaGiP4QTJjRwXfITXpEofiNhJBEHOcLoF1GfWSz6Ri4azdyiw8pZRhddUfTXWIctgjHwWiOEUdEDkWUBMOv9a/fBAWjO81e+51yRKQ1w5mpiZmsRVgZz2J2O9V22PtYzw8uughfSOTzm","layer_level":1},{"id":"2b16f9fb-3e48-4abf-a52c-5fcaeb1467f5","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"自动化部署","description":"automation","prompt":"创建kami_backend自动化部署的详细文档。全面解析Makefile中的各个目标(target),包括build、run、deploy等命令的实现逻辑和使用方法。分析install-one.sh和install-simple.sh等自动化安装脚本的工作流程和参数配置。解释wait-for-it.sh脚本在服务依赖等待中的作用机制。提供基于这些自动化工具的CI/CD集成方案。包含自定义自动化脚本的开发指南和最佳实践。","parent_id":"519aff94-32db-4783-85f1-071d6c314ff3","order":2,"progress_status":"completed","dependent_files":"Makefile,manifest/docker/install-one.sh,manifest/docker/install-simple.sh,manifest/docker/wait-for-it.sh","gmt_create":"2025-10-08T18:18:36+08:00","gmt_modified":"2025-10-08T18:32:49+08:00","raw_data":"WikiEncrypted:ZCORAne7l5wn5JMRd1ey/o7bkWmPStXjff5imJQAXqphxnBeBXJmPZwisJmizM8eIz7HNdoMBW49/rBkf4pKo2wfKYjANvYUoy1RHJoMcvkl+T7a9UY2qj91JzD+P6W/sfk59RExJfaIeqfZgZ+rQMaLxSQtUuIhyt4mzgGsQPVmLF4IdAyCS/kkIRC78yEzoqoLgwDjrOVxaFsGFSf7guGOTNbeW5qj3HRXzfsOrMBXdHOWUcUTrzZIRl++C3/w0f90Zohr5H3LUM3FkB6I1o36YQji3P6+2m0Y5QYDHgr03cgDVX80/bDeIc+fOZbtm7bWqYWwx5pWiteMMRJS3nQ76LLrfGALYkb1EN1a4sdf6CUQm2zUztLdc85KE6aIdVaq8EbJKv/QBpMkoYe1JR4uu1eA64eotBXkHU4VYwx0SXapkbV8jtT3HkMgMIBXEAT6arg1WSQtm5yHtud9Cs6JE92XEUSUsoLc008qqHqjMXXiClyFKZ5osDVgZw1/8+yK/1z2t7P+lDkkFV3hBFiUhEKvArFdRSqb7/w9pEM6ukPkJZrHTibtKpPd+CSJTzMX00Eh6xjcx4IW0zwNi1M+k09Q2cuwejMkxbMgrBhBMYxxRpSIipS/RfkMVO+6EmpZiYf2i0nDGahSxa+Defz2Xne9m8Ir2tHn5IFauNwMbCjxCoC8PF2pA8yaT74wSHjUpnWPmfm8rxH26mqJoPJyabanEvaSTF6cvil/bczeSjH1c5Jf8K2sPWSbFzE0vwdsPB16RmufM24QhLouxabstQEFXIue4VE4KLXD6V5+ygIL+g06agNyVu9KE/gBs1ynlyxZjKdS0rnNNSF00GwDi8BJjAnNabziMhbftQLSGwEgxkeXLJm/JkjLhVtfSKMaCgryekc9mhDaBaiqRRGgWlsbBmBTldJc3zN0eIzM8jVM4aXYpod/X2oguQnp8nynv37iVKuNG7KgEPWDSAM9Dy3Z9bEHFf0BPHdIbCGl7H6D/i76r097eaXCZFmJah1GoZ/NTkW+WZqQlV5PX1Ot7FhP7m0ag5WO5+SqeHc=","layer_level":1},{"id":"8137c301-f13b-4054-992f-c556767d7c45","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"天猫卡密管理逻辑","description":"tmall-card-logic","prompt":"创建天猫卡密管理业务逻辑的详细文档。深入阐述天猫卡密账户的创建、更新、删除和状态管理流程,包括账户授权、工作空间管理、店铺订单管理。详细说明天猫卡密订单逻辑,涵盖订单提交、AGISO回调处理、订单状态同步、日常汇总等核心功能。解释天猫卡密账户与订单系统、支付系统的集成模式。提供具体的代码示例,展示关键业务方法如账户授权、订单处理的实现细节。记录天猫卡密管理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案。","parent_id":"eaa525f4-7640-4d4e-84ae-7624f8b5c790","order":2,"progress_status":"completed","dependent_files":"internal/logic/card_t_mall_account/,internal/logic/card_t_mall_order/,internal/service/card_t_mall_account.go,internal/service/card_t_mall_order.go,internal/controller/card_info_t_mall_game/","gmt_create":"2025-10-08T18:18:47+08:00","gmt_modified":"2025-10-08T18:49:06+08:00","raw_data":"WikiEncrypted:pmN7H1JF4+HQF9n9w8KwRYQ6tdackApaOqk+2UiPey5Uympesdb3pMU/7s+Qp6tO6oPzMXaUwJg4minT6Xnk6sePRl2JWkJUs+0eVIxY0BG9pcqjbf7cWuLX8od0+v34lp0Zxn9XDzSh8RTI15SkYOSghIua2OYZxaRm/Mu4hX5l6kQTTVTfSSKyPKClM4KvavuPVwUtPmj3jmzkp6+OxGfvyOHHxi45tlQ7sJSA+9hPXVBJv0Bs5vgyXxnNgX79q6xkLTpWKwHh3G9HbmAbT+aM/YMoDKTlpBQatIoveO7Fj4b5lrfF4mq//5hqz7inZBGo9qXDxTG+bHBvV8Gy2QtMZlsNHM+P93RPmaRnLfbs1sgKR/Owrqd3c5hAfU3Gdn/V6HhVnIBe+PUsSaBZO3dOQyqHd0vGnaweozy2yNfkf+KTky4lg0pCrlrz2Dxn+qqOiiLRPGGSHcfUtctCi1L3cd9njdgA45LEi25H+KhWw9n8da4OvHAQxlH5HQKjIUnRZshILDmupCmj4ugHgAqew99Lswzv5acdEtL73iUh7AUvGNXLMbpj5SCo8meYSA9PblqFZ6h1nexkoA4LLO5BlZpHP8aKjFkIa50INM7W7ULapiqxAsnV/qkR29Z5Nuc/zpa5WAaDESeKwbZzWoPc3wJ5wPlFwvjfSehVeLAMwxVGy9W6uMXoL73LOUb3kYjjrycjhDxwDA70gdBAZ3qJvU955H6z9f0/QWRrs7ihikQdHyQNj6ForyX7LpUYS7yieOoPNSNtECIWQZFyeLEQ6ZgP05r1cO9gPDVxR+LyuNGoCdtBTlo/MQScFbyuCjrRoDENX2MXyU5vC/+VhOM1PE5EJMjt75Sd4AEqDgM9w092/WXwdzvR01LAHBXQvPqQrK/E2cj6fXzxOATYgKkQvtYGT4WXSVPfGE37oaMmCQpARSRiPViVe308ZV9avQPCm4WX+RmrXITc9ABnvpRAXtlCyHKEvVENtFfEdJl7we04YVsFP2xnZPc0ewH5p5qkB0247fnAXiYzp3Uakf5FfnJYrJ0192eDLmFxY7WxmYlw3s3X3ZcRFSN7NQOKLEf5cTZpBGiZ74vcH/IAJxjsbqiYQ/Bgrflft4ARYAFHJxbe1XOiGSbManH1eo3ti1puLFxSJ+JtNQEgyR+uwTdaEplerXLbkft/HM6BbUCi/D5PQjeuF8V+PjvoyM1WmRpHAPwArIQl7v0r4P+DI1ncJAo55u7CpPXQgG6AprMnaT8eF18vn9QqQpM4AeUEZAMA3iFMnvnehJD1EvkSdEGUTtiiRIzyM43FK65ZZ2R6Q2hDVoi9Awv79id1D9RtBYT/gthzgG8N89GhEVJif8iojiJclglG7j7zh3AxyOr+uBr+itr5ferH2t9LJgzDq8XfBkqScWuzotO2AfXPAA6aXLT1n2qvWNrgQEAbTokiHNZ3FV2UiG0aclDHvK3RA3uTnWnM+Cn/z6kngnpasYO/Be3ah+v1QIV/ucnyEuzCe/1jnHjL9+fOFe59HMdN","layer_level":2},{"id":"e130f1c6-f0c7-4f2b-8467-d00341dffec6","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"设备ID限制机制","description":"device-id-restriction","prompt":"创建kami_backend设备ID限制机制的详细文档。深入阐述基于设备标识的访问控制实现原理,包括设备ID记录的采集、存储和匹配机制。详细说明设备限制规则的配置方法、查询接口和生效流程。解释设备ID的生成策略、隐私保护措施以及如何防止设备伪装。提供设备ID限制的最佳实践和典型应用场景,如防止多开、设备级访问控制等。包含设备ID限制与用户认证系统的集成方式。","parent_id":"93bada60-b20a-4977-b82c-eca224ca34f6","order":2,"progress_status":"completed","dependent_files":"internal/logic/restriction/device_id_record.go,internal/controller/restriction/restriction_v1_user_info_collection.go,internal/consts/restriction.go","gmt_create":"2025-10-08T18:18:52+08:00","gmt_modified":"2025-10-08T18:48:47+08:00","raw_data":"WikiEncrypted:W4RZ6LTz4rg+RteR0TdbvN6YBAqoBx6vmhNXnYNUbJ7vAEccQfsRXUvrcsUd5Ica1hLwUQWXp/Pckc1X4JzDNoA66D2onB6YIWzByv/B4nSRfbjaSB7sM5WkmHD/fJHdteFTnfZ1b2QAGESqdRvnKyy28PscM42NmgyL9aY8cmYTSe4nohnfq0HoW7tpvppy3BF4ebSEgq5qwXh3mJGqFINPrVHftbrjrPgAd0+c2XTCEyqkld8j5v+0XPQ0dOQ4Mb7yJQvZEAY52bW8BuCR/kWAdOxtP1hJrMmyy2WU97hyLm3Irg5YI85Qy/lDkTxotVPWosAoA9yaV8tIyv8EaMg335NRDnF2rtrX5P446NAbwzZCcmjCJ/t1UYVtCQDt+CrDK105I29wT9bhylEcqnM0u+H+STpsOG6tTb09D+JiGAlDrhGWXzJiPr5ZE8qt0i5NiuCynzQW5r9lC2BGBCQ8mwKUsVXSA4k5B0fVgJtsxAJJ3ocg30aelFEq1ZlXlC7E5tufuh0PNI0CfXakfDay8V6UAGZwZGyKo8Bz8p+zP0qoUCIr120fndCuiZpmbCJagp1x1Pv02SPxoPv8XC3F36isbCU03ygDPhF52wuPtfA8n9l7jvTOpLF2giltwoZLWYD1MPEKjXIZpaAXtrDMxLCr20ycqoM9jG5agOvfVU5lgaPDXpm7p3+xt4XfPj48zWHh2pn4IyeYeYN5HcDzyjOBhf7mJDG+Mn4fh5w2r8fwvtZfEzKA2PXfAIRFmD1e38y1ArMbS5+bmG0cuh5xaFsogjA6T8HLopwiAqfDct8ZyBw/lOUacbWqasTEWh4ACx85OfTJD1hBDJkfN/14QrqHojfgE1azQMRgUnNX3DM8ww2IMfRybwOrwq6+y4wvgQNmKwq8aSsNHiUePPtyTSS/jArDa4aGK+AiOpNYmGSHmH4C+95/Tn4Rrwjl6xt7o69UNsNEUlQBD6ESNR5ckzlMhfbKzf+GNWd8R6PmCfy5btoM93AAP/c+l1QJR3Lda5DNt8PqRC8Z//dIYxhdR7BxxXnXVWnKPJ4nqJoOn1D5j0O6c2PBae44z3wu1c3UhOTGiAatqctKYk1ivn5TU0tOWY6i4YIbCN9xe/klx+RTqPdqjCS2ZFepErm5ECBfxEP4jMo2I+5veVsOVQCJzd7OkOehSPJ7clSquxotKDzc+PDyIqnIM02mLj9J93ZjgPjzTffw6zaHsCSVbVEaqB30+YiJ9Huj23cERqg=","layer_level":2},{"id":"15255e1e-df14-473a-8e50-b20da5e10eec","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"天猫订单处理","description":"tmall-order-processing","prompt":"创建天猫卡密订单处理的详细文档。深入解析天猫游戏卡密订单的创建、店铺订单处理、工作区管理、回调处理和状态变更流程。详细说明订单与天猫店铺的关联机制、订单同步逻辑以及Agiso回调处理。阐述订单状态机的转换规则和订单处理中的事务管理策略。解释订单工作区的概念和使用场景。提供订单处理性能优化建议和常见问题解决方案,包括订单同步延迟、回调验证失败等场景。","parent_id":"5ffd09f4-939b-4b8b-a254-494937471526","order":2,"progress_status":"completed","dependent_files":"internal/logic/card_t_mall_order/callback.go,internal/logic/card_t_mall_order/order.go,internal/logic/card_t_mall_order/shop.go,internal/logic/card_t_mall_order/workspace.go,internal/service/card_t_mall_order.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_submit.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_query_order.go","gmt_create":"2025-10-08T18:18:55+08:00","gmt_modified":"2025-10-08T18:49:02+08:00","raw_data":"WikiEncrypted:pmN7H1JF4+HQF9n9w8KwRa3WSApkXAR5Fc40tYehasW3oRRWjQgzTzde7LY3UZtxxDt9YCxNFsXtULH5ojzuVd9vnuTQsUsGlwPeby53UoJRaMP+2TVlBnpawHqqLyQZmsIaCEBa0KDS6Vqvn+W5/fkhVXVX9ZWv35eZ2nDZVxRX9N06OvWXNmnlgFwDtZrtnykRQYxEsdH87S0WS6nkRGy88H5gvafKUFjtLpWMOF6taMNbNenHgJfYss3RB7DnTw5MIT6wHuS+ZaU4JjMkQrG+5wFdEAdZUD1PSue0jzfaEh15NxpLX1QVkytkWFWRjQT1rS2FovSJu01DE0SX11tKcURB5NvNm4ZGvmOg7fehl8mrIhDcaoIXabkCxF4QnAodr8aJRQgsU3+D0pGKgDs2bNBK0cfAIZkrodMbBqU6PFOGHE50ld4+ikmQr5KmGbQHsuKVUOtfUwt9mk8rJB7IhJyZYhAtWHZ8xk3SRyTzG1S1h8bNcK8J3Utm1HQthqzBOvkipvWIkP4YeVA708Di7n0XMyI7DG6OXY1KkL//Af6gFaLG4/m57mx9WpCFPnRMEKsYbLQ3VeI0H+Elm6Pc4XG58wC+p+Vl3AwSZNm9XmPvgXDd9/I6nt97XKMk4QrQrguiSDFxawF1kWGkf+9Fq110k31gZVuJuJH1LBg3qac1ymngVP1P3Jb92QJz2KbUMgJFFn4CetxV8jxUPO5HHW3G+VhTynwYKx4otPsZQMUlQ6ZengsKFQp0zjnBWF6/+P/WtjkyD655aF4YYaKYBKZQayVIzFTsElEckA9VMM4P0g1dJaMUNfTzM8uw9h+ovl7gYigVnxgmEsrppjOG0GOuWraQJ89qKWGj4jWP7th5aHRtjLYU/lwo2yeGpIlhtQLy4Az7RisMFacI08umgWXM/NSZYjkd9kbUtA43t/ZiUHSUgCIPQ7x2w5ECTQHShtOWKhjBtifMTmudS1EvQHRfw/dHf+892fVxOWAXMlZnneciAcEEEWVmHC/0j96byVrqztM/MjygFKB8+ziEAMTgCGG7GH3GyoLYY0qeB0Q61VzaRPJbzbFPP0wemK3vPaiISKryQx6THbGQ+mFRq/yuUZ6ikHx80C5rj75zXIUOVDjzljDedQmmMucRlgPFyFIfyqFfLk2eD+Leo4z0T7bwSAWOE6jMe5XxvbFFpjQL1MXj4G2nA8WOBMNsjkXE6ExDG62CSDBmNTkPlLSUKYhIbDAl5+Kp42/e5auXARWcD1XZELs43fbGxn2FREszMT9n+Cx9UxEAiP5FdJ+P2Amoaa055YfhtdY7oTThxWYbqE4e1zwx/WQeSXEiNyUS+giHH4RCxyNGDb8BMRvEmjCTBJCBYsZ17AcitHKWsDmiB2ryVyOXYQBw0zda8RiMtG1c9VPyOHjJWS4CPUSSoETLnSzrMmeeB4o0q00xAxuwr2NtlrjOuoYTYhTvLTHdXahJS1yWobZNrOzFC+PoibaT0m55GndT/ry9xDczzuws8NwZZywyAGrouKanzoFiGbLPdBXSt8KGcS+/X10E+U981sSx867gYDQ+foo=","layer_level":2},{"id":"ed66dce5-4de8-4993-bc89-a466abb74f43","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"租户管理API","description":"api-auth-tenant","prompt":"创建租户管理API的详细文档,涵盖租户的增删改查操作。详细说明创建租户、更新租户、删除租户和获取租户列表等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括租户配置、租户状态管理和租户权限设置。解释租户隔离机制在多租户架构中的实现方式,以及如何通过租户管理实现不同客户或组织的资源隔离。文档应包含错误处理策略、安全考虑和性能优化建议,确保与代码库中的实际实现完全一致。","parent_id":"681cb8e8-add7-42cb-8297-72df3436bc74","order":2,"progress_status":"completed","dependent_files":"api/authority/v1/tenant.go,internal/controller/authority/authority_v1_tenant_create.go,internal/controller/authority/authority_v1_tenant_update.go,internal/controller/authority/authority_v1_tenant_delete.go,internal/controller/authority/authority_v1_tenant_list.go","gmt_create":"2025-10-08T18:19:07+08:00","gmt_modified":"2025-10-08T18:49:45+08:00","raw_data":"WikiEncrypted:7ZB9yjzZwc/JkOb5fG5L68aHWPaH9F5LGpC42+E2cka9EswWMfNQznGCsOCwDohduHxVlwwNiPebu27Gv+tzlD2DJk2+e2CXbX4dfJxKGN6iUbX3rXiwgFJEI3tC+P9BDa6tkVW6SDvFBRodPlpM5SfO9sa2tIGmYdoiIQaCCSyrzuMZ3cVpNcUA30mpGuwh0hcBAyezdqNf+XF6K5W2OBNNssVE0ZWipueAut2AP3gQ5pargmXYfZIrw7bxHPayUU/63u9oOqj164zIv9snb3CtKhR+5XTNVjKB3XKD3sYGBWt0Fsf/RNB0iKQHCOuMcvKFNJ8GMg1QXel8Weay2egAt0rFmmvy3H5Xh4AwjRI8Qpbj/voCcmRv+oQiMvc7z9aUOWlU0TEQooi6X7kClFfXBaSD8/rzGXK7nDDrt244bvSAV2nA3DMYPTsSpFk3VFK4KmyQBwrsAkK0rv14GdrZf0wbcT/4gpqfXdUI/1p2BP+qG4Ozb981mOeaRNKSglZAqVqtHjrwvbUEgNRm2OkKKyjzzi1Zy3YacNPZp7w2FDDvGtnMzGaDCVep6iGIIzGbvuJl4hDkp26j2XQgzDbGnoywuxfaKD5CMEx2jRS94b5pT0RJXPBKbKcfRJR23SWk95iuXVyL0Aa0rTjWOA2pqtWbna/sep84jJcYr+0HUsLErLraLR6XakY07pPga+qdyVRckjsyT20Bp7lFmDQ9AF2ptKF3ZIj6powFEPpm2RDmh2PRoUtOG2katpZspF7kypixlrNTRVu+xUQ8KbaI094k0j9A47l2ejku9ih7Tr/F71Ro2HvQGYR3WWE+Q4jjoin2j02mkT4ekHmA8iQ4JTt4G2ovfm6FnJiVQ3xpdayjZm74nE/7Vp36luCg0ufDKLWrfzn16uX8iNbTDcUYbLSxKcPIYCZnq8/xV3msRVkPB8Wx98Ex/uOBqkcWSLYUGN8h2FFXzZrID0OpYrEXXw4s2ctIKTPG1W8O+t4k6WmZNz8/OoPRIRt08L3+XJICLTyu8/yYO37lMxNdK+TPNzHxfxk8D/8DBGaK6g4wKAVaujejzovOMx8N+pLQDh/i/AAgjuZUejUE923/FR6sQAHBxnXdRhE/ckdUPbFc5zFKSy3Wuf2nepPcCkDNYrW7pH8x/wKhaN1hbOI6j4A8tA3ByFN0/KCrCmSkcb0QRqouTNt9VYuEGpia3uAx9l7cZEZKo4nCUTVidhSE8o01GX63uFoWubwxz8vrIeDSDuif29gImVfOxDXRaMCmeUP7Ex2ZjvU/LX+ocYkP88H39YM5YlXhIeroyuo/HE5XUT9DpKEMeRXK7l6dTiYeA+9oQ/KDnGslDc3C0f+ujJFOmr5HCWofJ5haZzePeM6oBR9vh9LcSlHI1Zjl79pkvhYq1a4ZoPMuhxAg1Bvb857PlDJLE6F0D3lp9LdjIK4=","layer_level":2},{"id":"1b7f1c36-8377-4ab0-91c2-52017bc8c76d","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"订单汇总统计","description":"api-order-summary","prompt":"创建订单汇总统计API的详细文档,涵盖订单汇总数据的查询功能。详细说明GET /api/v1/order/summary/get/list和GET /api/v1/order/summary/daily/get/list端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括订单汇总的数据结构、统计维度(如按日、按状态等)、查询条件和返回格式。提供实际使用示例,展示如何通过API获取订单的总体统计信息和每日统计趋势,用于业务分析和报表生成。解释汇总数据的计算逻辑、更新频率和数据一致性保证机制。提供性能优化建议,如合理使用缓存、避免高频查询等。同时说明该接口在监控系统健康状况和业务运营情况中的重要作用。","parent_id":"079920b2-aa64-48aa-a92d-8decf24623b1","order":2,"progress_status":"completed","dependent_files":"api/order/v1/order_summary.go,internal/controller/order/order_v1_order_summary_get_list.go,internal/controller/order/order_v1_order_summary_daily_get_list.go","gmt_create":"2025-10-08T18:19:17+08:00","gmt_modified":"2025-10-08T18:51:11+08:00","raw_data":"WikiEncrypted:9qHpiFX/XrbQzm4K3sHnDG2/5vEWeLFokdGXmwHMfnNK62dfNT/UxNqYsUKg4IQXr9Ziy+qK6wcqxCPYSkXSBZ0Cu4Zbo3RmnZoSYolWzgof99Xi3JgdE7ix8h4MkQ781jRhI+eruRoMp257F/SEC7HsTSYYhA7lKgnr48YMoeXisC8c5v16L12us0oUm0RmANUS5LKkMUc1hWm3Ig3y/TJsLtY0m0Etg0vKodqG0jzEzt3hYCwo8lmabkQ1RXOehBSOV4bXZ87/bKnsvWzhq3Mce36iq8EhqPTdUOiDtQD6/UWYi57FkpDqNNtqGQg7iEKgetSw6T8tpKay7FpwMUKjEENFU1aC0aCoeeO+fhicusalJNWwkRCG05SqepMUai5Za+i/EY1pvEUsZ8sUGCazB+077/m4Cy2Suck7wnLWIt7HqcUtBisSZpHQCJa0K9esOcNPCBV7RYrZKFMlstxIgHaEekG9ZOw4q1GdblhjpAtfvknRGVYM4Sm9LoLGwkDpGliMpLHAzyTS/U04L3Rs9gyhHGMN2to30SPbcUYf20HcWE0U2f0yQb2hXCjZb4rTXrGGIzVDn2CLiJGkIV2LL9P7q3CFc34F7nqNpICm5qezQljeUT/ebs5hLcHYfudzI5gx4cf5QFGGj17ozZUxbuMBfPSQ8mnfWxO2BktJj4Z1kvMAeImmPMYb/1h4a27qGGH/UuhkQi/QmQFw99CUkPn0ogsRRx1do6KjhNOF0NGrQV9wo3yqrD/4C6UuHEYkGIjzBMnb/h9BhkeEiIAnbtlBubeBjuyH/BXIOGAhHWR1sAWbxOpctru5MhJ/MO5wBcRPWeAsIuidmRL6NjbHFVucDMxadZc/SoUurRVN2aopGy+F+xtws7AKxcHnuXDJVfVkTNyv00yg5UwELk23xwSe+RTmVSma/Do9ntHx8/r5f6bsrSleb8X6GF47ZdA/ChJjBqJZZFs50dq6kohWG2rqDhoaqILhIhPECc9PZaiUhvr50hwwi63uAWfNmFlZh56WjIZFNIFOLIsT2QSIfd3pnSN9al2Xomrpj7P/GiNdxFbsYMZnPNcRdMMRKNXNFLaBXLQM0RmJE3rRpd+lJr0YoCGuADbH2zGedbowpr9VZsHZ08SMLTXTg5FtkItK5Q5021PBS2uEnv+X3Q5M3SLKvNVJWrYVFB7y91p/v0mIdISQr9e3x8dCl31EFUIZ3MGH1v5WIqC5AZAYAgjaMFFEaPrRrCP7lXUADvh8T6x0VcTg6pHTbw9A1HkvanKGEQlqdkb+rpQctfnMhoNMANZLTnDAPzeqjC58w3H1itGrxqpCfeXGCPePp12vtYWbIt64YArky4APRKa5JOzlDqlofYj+wFOoq52kube7QqnpFuzLqmvS7t6LNbqhxss1+e2s/H0aHFtagsYbPDN+zqhTH+8SxRCBhGQbDEyOAx4lvRWlzdMkeTIK+SyoYxr2AfcTckRZP/Vy68YFo59hzeDRj5uqFzXUozrkn9brVnp+eMXH/sMmxEombcpY","layer_level":2},{"id":"c32a3e21-0961-4618-a256-ee1396eca8c2","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"天猫卡密管理API","description":"api-card-info-tmall","prompt":"创建天猫卡密管理API的详细文档,涵盖账户授权、订单处理、店铺管理等接口。详细说明账户创建、OAuth授权、订单提交、店铺信息同步等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括天猫游戏账户授权、订单状态查询、店铺商品同步等场景。解释天猫卡密特有的Agiso回调机制和workspace管理,提供错误处理策略和安全考虑。文档应包含客户端实现指南和性能优化建议,特别关注天猫平台的OAuth2.0认证流程和API调用配额限制。","parent_id":"0d28da6e-d972-4227-9fc4-ecf26d5c6b2d","order":2,"progress_status":"completed","dependent_files":"api/card_info_t_mall_game/v1/account.go,api/card_info_t_mall_game/v1/order.go,api/card_info_t_mall_game/v1/shop.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_account_create.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_submit.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_agiso_callback.go,internal/logic/card_t_mall_account/account.go,internal/logic/card_t_mall_order/order.go","gmt_create":"2025-10-08T18:19:17+08:00","gmt_modified":"2025-10-08T18:50:18+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBhDOfi1XULNq8w0FtjpadAUvV+ceSF9+Fz49FHc4BI/wHY1vMagnUmaQBpv8QvE77IhbXlWaabmCE2ntgHj2iMG2xn6ujYVBOVW2WcwN+kfsWyXc7LZw0jyz4gDVPMYNps5QyZVLLCWx9ZXoE5MCdw3yTVPhueAv+StWiFapxus+h78kDi3FaIPsR9Nn6SFMJ5OKTJsTSn5+vf0kwylPNuc/+Kpj4+S4rjyiHkJ6/AkHMKS+z+fyQQ0fjp32p98HtaISDQovw4/NwSSOIBGOOKvGwuLE9TcqkFbnrUP69eyaOju/vnY6PHNO3ceg9Yyn/1HLZ1/I4WGAcmKA4DS4/iTGZc2gs56D3HGebg96AKT8PNFnLMQJiamx5915UQWdh60OOzrVDfJv+QYu1BILz+Owzs68mGQwCajmmc8pFuUoFCwb0/TK/J7fM+53LDucBYx/r89clLpo/qaQw8QMGYsmmnej1ejEOHaAjABPIVLNhdU1hO0oDm93rT9aY3aUpCcz/Vti4anzEkdGsMtsYwcF7r8v3ue4rIHzgny4bDynfCCeog5tMziIesbErutBiY1DfNxO+dE9FusuhVvbSPigcOPcYXpYzqZdhzaqTMExjvXifhIsnSFio/uCxYhMyhwhNVAjVfJqTuSHcsZq4SsMJdenQ9PfoP5Q1ynfDf8oPhJs9SgOqyUC27Cei/bxKvqdqXjyYb1sP2AvuVz2IRvgt52TP8qo3gB+lwZJ4XbIjNSZgTDKUwWcdMzpPHZky+2IIwX+UosDNia64SYUbXA9oYZRrf1o539Pce880X3uv0jL49t7e0QPbrp2LEo7TWXF+qqEQ2qBeZ6TohEr62fapuOoiPBs0bylJaNcp8mg2ueegHm0Y3I044rIew1itqX8NSaRaqlt5fhSrOuGCjX9+HoBCUnOlMuFudHJVF48VibHUycpS03gHGJ94xyqm77K+5+zKPCaVUIrmkx1uju5P/eZS+sO015HYD+2O6h/tF0aJywJ2j/26CQ77i6BZx0kc8j9kEG784h6ghQJNmuLVOBrVIzAgYDx+3IFcZzPayWAWK+y7Zc9MOxkAolM6D7trEmVVbWabNyWFLUUr2ck0tAT5OFGF7ufaJZ7Vhmi2HMvSSWYN7vUwiHODD08eaLEnixCTMpfvgNsloZMsHLRjrjO6dGzl0OAf/NZoT9B16KghJf3jgKSr51FSI1H7j+aw8+U6pdmxWadCTS51urAV7jMnWULfylBcom/XNu9Fpnm4hm/HlGrcIEuD7jN5U95w9n/QWwsE14ddxPlVjLBEa3o1o8Y7GyogxfuHQitt8CLvUNGciIsADU0B9z/WEfmMA32Nz/B2cq+w1uuI9JXRi5WFOEnVrQQGiji/rELtk5/XGvlMH6/QnjYshVbOcaHTIo/Vb/X8nYiQibC4lFYhVW3pa+jrtI72e7MvUCYZ8AbQ2dFGE0KkGOtDjvk8nwMu+OCcqZvBs8W7g4RQmBtHkFxwcUL6lEw0it0RE9V5kLxyIncbh07rZxArIKwsF9SdtPgSqWSd07iRXzJpSpbKWBM6KJ2A/YjmBpj/X+rPp6Y+Jfd85tLwAixDLf5JWHEks9n9zDTD/YEBKg3HUchj5rqyt8TgXus4BbxX7HzKyLhZGtisgeXWKxKTu9wkbWXhSvyP7lrdt2I77Y4JHiZaZaNS5KQdEt336RGvmtv4bLgdu99zuEdp4OERMA6J/2rl8ReXKrbV60uO355I7fadmUGx4XdJFRD8j8onK1P7DhkLE++PPiFP0j9AHSrftMC4T1Hw6rgr9DXJLkabPs=","layer_level":2},{"id":"c98a021c-f5a3-4847-b8a2-445d4b79ffe9","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"盗单处理管理","description":"api-merchant-steal","prompt":"创建盗单处理管理API的详细文档。详细说明盗单规则的管理接口,包括HTTP方法、URL路径、请求参数和响应格式。文档应涵盖盗单规则的创建(merchant_v1_steal_create)、查询列表(merchant_v1_steal_list)、更新(merchant_v1_steal_update)、删除(merchant_v1_steal_delete)、状态查询(merchant_v1_steal_status_get)、状态设置(merchant_v1_steal_status_set)、统计信息(merchant_v1_steal_stats)和记录查询(merchant_v1_steal_record_list)等端点。提供实际使用示例,展示如何通过API进行盗单规则配置和管理。解释盗单规则的数据结构和匹配逻辑,包括触发条件、处理策略等关键配置项。说明盗单处理与订单流程的集成方式和执行时机。包含权限控制机制,确保只有授权用户可以修改盗单规则。提供错误处理策略和监控建议,帮助用户有效管理盗单风险。","parent_id":"c423075a-af3a-4aa8-aeb1-eca97be6acbf","order":2,"progress_status":"completed","dependent_files":"api/merchant/v1/steal.go,internal/controller/merchant/merchant_v1_steal_create.go,internal/controller/merchant/merchant_v1_steal_list.go,internal/controller/merchant/merchant_v1_steal_update.go,internal/controller/merchant/merchant_v1_steal_delete.go,internal/controller/merchant/merchant_v1_steal_status_get.go,internal/controller/merchant/merchant_v1_steal_status_set.go,internal/controller/merchant/merchant_v1_steal_stats.go,internal/controller/merchant/merchant_v1_steal_record_list.go","gmt_create":"2025-10-08T18:19:28+08:00","gmt_modified":"2025-10-08T18:50:34+08:00","raw_data":"WikiEncrypted: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","layer_level":2},{"id":"87378996-7b26-4ef7-81e5-3e2c73c13d78","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"用户信息收集API","description":"api-restriction-user-info","prompt":"创建用户信息收集API的详细文档,重点描述用户行为数据采集功能。详细说明restraint_v1_user_info_collection端点的技术实现,包括HTTP方法、请求参数结构、数据验证规则和响应模式。解释该接口如何收集用户设备信息、访问行为等数据用于风控决策,提供实际请求示例和测试用例参考。文档应涵盖数据隐私保护措施、信息加密传输、存储安全策略以及与风控规则引擎的集成方式。说明该功能在反欺诈和异常行为检测中的应用,并提供性能优化建议。","parent_id":"71487087-d57a-431c-af0f-f9ce8536c80b","order":2,"progress_status":"completed","dependent_files":"api/restriction/v1/collection.go,internal/controller/restriction/restriction_v1_user_info_collection.go,internal/controller/restriction/restriction_v1_user_info_collection_test.go","gmt_create":"2025-10-08T18:19:31+08:00","gmt_modified":"2025-10-08T18:51:10+08:00","raw_data":"WikiEncrypted:C34GewOyK1SlumqKiPsSg9Hm0SYOCvN6Palim0MtUus3FRNUjP5X2DCKGq6+ITrvgt+4sqxszJWV8CNot6oQWekgcQS8eVsvLJhdJdSqYK1/4eLLujPOisKkWSSyE0MbrNLnRLCyhUOTiL8xLNUE+kiF3Wn/RyPl6myAP2CJGriWPhItOWgUSC38Gt4OwaYhJnX90WR1tujcn/wfm0biK6DZGNjYY62gbT8J/3/q0KB91C0sGiJcSPpO+s0i40b172wZpabVN6RrvRIdzLaZaA214I46pvfMwW+XyrBZFsBS7A9f+FT87iV026cSHEM/dv2hDmNwqB8x24otSAcPa9TNagF1DXZ8+1yrQ/9wEAU4B10UJtJvlfR2qttVWVI+sI8ofW2cud+igJZpDKZsngjgh0PudRtiMr18IvHigwdTKWumLLlvQJN2B1HS07YSGF28BeBw/J6P7PPhPebxYs+Nh953dxH3QFrV62BuIXEkHaRVqujfh54QZ+e3hl60SSHCNBuagg9V9Sg3fKXC/Gq/stqK7Ux4zMi7NrKQyDGjxacTeuU1XhFz126uL0OQgz9d8b11sZ9HtssERoHAMlccKzPTB63sv+aHrs3/0AOOE2tWwlNGf7PHdUzbM9tBv3Y7uGMVUMNhZVL/hqHNsqShbPGS2MpFTWlaXiAeUw+rUP3/OxhZOmXYnJNL0BWjZGqrpT4KHDQWdbCyA+P3P2F9j63WiE908Ut5YcozUHGpRejdfp3ynbgOw8n25xEOvteYn2m9r/q6fW3TqhvBzB/GsBIgHqR9w18yIVBxJS+3J2XCbVaQQgq3QerI9Eg4EcvkHhU9YwzRymfHWJZ6S8+mnkmv0/75ztt/+oi3P1XYhxJSn4OsQeAzbRUpclq5+VGNITuCW0QxUPOPVYveBzyuS3RhuBwIkJNRgijrUGv+e+hdmftbRl0r/3xfpzbUvyDitwfN5jobAs3znVH3GbOa3N8odfniMbqoy5Cz9V3kTXZtNJCnZdNrY9yWCGPctBl/RpwIA8mQMhf32EE5zi/7bQCF3gALwp+lSxNBsulPvREC3hm9Wxfm6gPygOmwK2JlX/WSbX4bbeN6tabdSKome/uXenGYsklPX/1Q56wW9cqV5IURChlK6JOSQ6yByrDCgbVt17oAEh85Ek88wpSlBqgO101409FnYgaooyKmO2kTogWu86DCBAjsiAlQtv/7QVPsgliddIiIsxxDUtgKRJ3lRpVIaCx6/tX5YXZtfAx7sVSCTvbfpbZjvhA0P4PlGuwjY1NlRrJlDZF9J7X8QhGULeMnEPHVsNXhWVYBBqDkcqxS+V/DxpNznCV2a5PWF/mi1HLmSC+zWJEjAw==","layer_level":2},{"id":"e0f89cbb-9392-48f7-987d-45771ccb89fc","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"Ctrip平台集成","description":"ctrip-integration","prompt":"创建Ctrip平台集成的详细文档。重点说明kami_backend如何通过redeem/ctrip包集成Ctrip API,包括Ctrip账户管理、卡密兑换、订单回调等功能的实现机制。详细解释Ctrip客户端的认证方式、API调用模式、异步回调处理和错误处理策略。提供具体的代码示例,展示如何调用Ctrip的账户创建、卡密兑换、订单状态更新等核心功能。文档应包含Ctrip API的配置参数说明、请求/响应数据结构、回调接口设计、状态码含义和性能优化建议。解释集成过程中的技术决策,如为何选择特定的加密方式、回调验证机制和数据一致性保障。提供常见集成问题的故障排除指南,如回调验证失败、账户状态同步延迟、兑换结果不明确等解决方案。","parent_id":"d49ad99c-afba-4362-af4e-ff689d5d94cd","order":2,"progress_status":"completed","dependent_files":"utility/integration/redeem/ctrip/api.go,utility/integration/redeem/ctrip/service.go,utility/integration/redeem/ctrip/models.go,internal/logic/card_redeem_account/query.go,internal/controller/card_info_c_trip/card_info_c_trip_v1_submit.go","gmt_create":"2025-10-08T18:19:44+08:00","gmt_modified":"2025-10-08T18:51:44+08:00","raw_data":"WikiEncrypted:UPowAVLR47I9KpaM27BQNY25Tcm9u6r8CQlUx42Oyv9SIsPI+sjq9zcQuAYq4Aj7ZFcqK4G4tONeGwS9wfInT0HqqrC5TLc9yn2T648Jr2XMAcJAFSztYq2GfpdIKgaqAKZJd7Ibv5l0QHPYxLKWD6b/RiKQOPvl1NWejLjqk6eYCh2BIMNn1EAmLMQSRH5NK+lXqUuafTH4mz1+5o1R1cj2GrZrKn4m0UsHuEwOfAbwpMwegFDBf5NxtokIPoJEm04TDmVh81ZS1kv2O4EFdN2SWkS0vMGwv8qd41IRIbkXCagkrPCaVcyRdrDlt9RK44kx3quJbVEYFs7JkwG4ebNg5WVU8H+Uld7emgNxHnfP911t1cv+hdyj2+3LcQe6vENgxrjqjzDUfn5uVH7ewZWuYu689uCA16PorSm2rUgdK3K6dDCwz/gEgYO2P6EErI3QPU3YCbMvCsAb2M2l/mpnCsFXwYJlsdRqbZuOT3sH56M8+aCZ2bpij4hIvGfBpmhBGBwNnsfkDwdCg2g3Zw7HYj++Zoh0/H/0K2y5LSWkpx5quqS45yl+nItz3OOIxxtjHXEDjsYGce+XkStLOHO88p2BDo0BeW1FDEQdtH8pKsfG2lwVFfWlpHEz0uAs8xS4qh8+zKOBbaQvgdxrzoTlcOsSGGlOGZXH6wOkzGUNKBLgenHRrbUC+z00BvJztlFAQaS/qnWgoMudHgz41eHD+3UsuiEB6vvXv/OcBD063rR0DQFjWQwluwtgxDnhf12uEolZoCw5cICUELwvGdqGUc1H3DlRx6YfoBdWDOHCh8zmhb+o5jLh0iduFYGhPXGiu1axWTM6dUQ6KMCTwFw3ej9KyK6amObtogSWVceSBkUHgL8VfsxbbxO113RlhcNQ8yDpJ8dPIzHz1U7+iFGugpjAHnFonBMmvyIrEzHtAOR9DNJL9Cf9lMuZL/GjU6u+rq4bMfTSEyqvOPlKH62kJ7piM/Q7id3t5J531i1IyhM7SkAJ52vm0OyfEOt1DW7R5LmaQgH1k6PALdm0ol6Bk5rRhuEdkid3Q+luOpFlMLHz/dNphKl2HaUazUiVFo9e49hjQB9co77K2v/f+3VW7x8NPNIpMF/3mEVBBV8QtjBzKB3c/rKlhDinvChS++aIzG1n9xBmNpX+QJd2oVxqOCCFx/QmpfKhwtI266i6QO66OkJFRd9zDJuybzmAKsPptIXlKEjXxalWmIAxY8evvpHZ0EnReyuMzjxArkP7gKSWJgc66m9FU+DDR3EPP9R5xJU3ZjYn1kOXPJTgG9SGLaZ8Cp9xnMYmy85oyyi6puprdI7HkLc+/JZs1pyQU4g+0Ho5RWVkXcSS2rDcXGO7LIE0PFRTHxlO22ZyGbWYNGC8xqj1Wy86DnJqzStOLs5ESPa+2qp2VmQ7hCyUvU0vwvtvDCR8sMfftH3WiQB2HbemqRqOvEr6sSLfc+sgGEiu89eDpWBazdQznquG6ZiMAFEtUtilu5CxPwZS1RDkP97rX2DRxOtL+Cw8Lr6yZCSyfp8kZqBQ5KiCeIM4vW344ofIZC4r7T/qTvIsPcThZZuRY421zZ+KKVCP2Ttn/5v9cm2t6HwOTYYzxtq8KVoNaVbMrjkEwG7gED7pw7We/Hm/08jV6xadGySJA0K5XZ+zO7DD79pvYr4VjSRrX4JPsmElCY3/vFRnh99Si31w5MjXHXmN3XEin2Ig7x6Y","layer_level":2},{"id":"677ff050-ffe6-4e0c-93e6-5aa4da717ad6","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"Apple卡密历史记录管理","description":"apple-history-management","prompt":"创建Apple卡密历史记录管理的详细文档。深入阐述Apple卡密账户历史记录和充值历史记录的管理机制,包括历史数据的存储、查询、导出等功能。详细说明历史记录的数据结构设计、索引优化策略和数据归档方案。解释历史记录与审计、对账系统的集成关系。提供具体的代码示例,展示关键业务方法如历史记录查询、数据导出的实现细节。记录历史记录管理中的性能优化策略和数据一致性保障机制。包括大数据量下的查询优化建议和常见问题解决方案。","parent_id":"f7bc4c8d-64a0-4c2c-a17e-cd38987a94ef","order":2,"progress_status":"completed","dependent_files":"internal/logic/card_apple_account/history.go,internal/logic/card_apple_order/recharge_history.go,internal/controller/card_info_apple/card_info_apple_v1_card_history_info_list.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_history_list.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_list_download.go","gmt_create":"2025-10-08T18:19:46+08:00","gmt_modified":"2025-10-08T19:02:08+08:00","raw_data":"WikiEncrypted:ngLqLViTt5zzUmJHZ62DoB3OA1rtdKXDOkAhm5sOWqzA3/WA09WLFVJkUHDwV4FMWdJdNF197MEgGU6up5YiGZBWV78aiz6bb/GDIkJYs2Pu0ofn68MM1Mqb0uAGEtzLsF3qvS+hvKv0PuTIvCeA0x/JV+fiNz0Giz0mdwV2l3/qNo6PlALMi1OK7rUowVitawMfPVyVvcKnMYzN5jQhSmqnw1AJgZm+UAdHSZmgawysFiQw9+tzIa+qP/5eXEHMNeuqM003rn2XwXHb+mviK57f7p29cVF70XFlRDaj2xWLOHACh49c7k0DUE3U2fan0s8F33ONXFfgbMyAEp0ZZIudDmF25zN/eREW8lksgg02E9qMTrXLAdqiiD3W2QUCfsynROPM1gje61P7tUkNX6XAX8fFKhEGYGlPc1aXAeH+fU699Jf/oPNsvmFddpE8D3OayJrFlah49ygdlq8gcWyzA8whPM55OCtD2re41YEo3MhoSOnPtw366i3OYSVqa7fwGfvhkRp9O4m5tmfakSg/tGgwrav0DRZPVRU4n2YGVpuKnoKuCQIlxicONfb5rC38GH5pBcL7NJmF4qsbV+CKQtUMcUfqY/4e4STvEkim8FBjLGn+khlvp5A9w48MOkg9R1TiqshykBp7PuMtkBBI98J1Gx/oRFAuQ/cZ0MAEYnNBEGDdEDXlgzbHfK1l8WUfuxVn6dcpETYRaQqwSQgxz+mQzh4EAtoFXf0AiJ9aXtSV8sJ+teI9QH6mjOKaxbI5+x0+HL9Hke6YorWpVzaybslQ2C5K3tvn54l5Sg29A2rK7VT9CpoH0wrezZY1qo7XG6K6IhVEdrf9gRIfKKIIPUe5opGayOEqyBoADMI9R2AE0jZ8PvzYi6F7cC4pCyR+HfmfBHRRE1xgHf8Wv/Xq2sNpzSBxsmyUZd85zTbPsd6EsLJXR9n4WqADET9xM3N9BsaPSdd4sE5vi9LutNoKZv+eY5wVodnm+kcV0QXPC3CfUHznHcBGvfpAWsbGYZnQTlAUhNXHjiDVp9J2oqBFK51Orc2NQLa0HwMZaHqwrkwvRqprjQ4WLbwWZEcd4a93FkWC4od1B15lHx09KGQQEhZgyXAtyFmrD9L80bkyMpbCaOKVb/6ZZUSvgAjdZygPvWyyMcD4/ish4NYBKRU+URklOOT83ZlTSxpE2ZQA1HyqP/rw8iwW4xbIWMz0TM7hFcy3Lp2LhLELuzpeAIV1EpP3uH9RU8C7ZplVsqrdE+lPlOxBRjY6BMPM5dAd2nXqlnu6TKvcBQl5tQmCOG+yu6Kf06MsYYVQHq++FoO+7lxcuv3y3sj/wZsif1PNc5uQkzUCT9hJEHHw5uuBB2HRmb5ZK2HaDKxufHfRP4H4Kpnayrfwfna5AB2hYhDzFD1zceyLISggD1R011K1/F8UrJ88TsG8jM2A6aTQCgFdORo+q0z8WR5m7sWWhId7DNIGmL3SK6u18f+ii5W24QQtOY9i/4wHHDmFr/YX0bGM+4VhygDVSVkfpDMf9aZHJa6GlFJmqESruc+VgwUKVj07wKE0Tt47Q+gEkEAZeibwg7zKPGVPxnQjCjE9Gjy0SAbXV706+wE4UUTSuHnmcg==","layer_level":3},{"id":"b86eeb37-caa6-4edb-807b-036800419a82","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"京东卡密分组管理","description":"jd-card-group-management","prompt":"创建京东卡密分组管理的详细文档。深入阐述账户分组的创建、更新、删除和统计功能,包括分组的数据结构、成员管理规则和统计计算机制。详细说明分组与账户的关联关系,以及分组级别的操作权限控制。解释分组统计信息的计算逻辑和更新策略。提供具体的代码示例,展示关键业务方法如分组创建、成员添加、统计查询的实现细节。记录分组管理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案。","parent_id":"d56eb845-7c0e-4be8-bf3a-239e3c0eb5e3","order":2,"progress_status":"completed","dependent_files":"internal/logic/card_redeem_account/group.go,internal/logic/card_redeem_account/group_stats.go,internal/service/card_redeem_account.go,internal/controller/card_info_jd/card_info_jd_v1_jd_account_wallet_list.go","gmt_create":"2025-10-08T18:19:49+08:00","gmt_modified":"2025-10-08T19:02:13+08:00","raw_data":"WikiEncrypted:2Tw4z8NsJjOlKl4tOUQ4rdLCKJ6he4t2YUuBiX+duHKsu0bSY6j5XtmWtlRDFLesp7B9t2FDeCzDhF4tjVQoWGbvNToSiArfvZgRhQhttoLMtONWLHnMjRQenEBAi3gU3uKMbVAVeFljYBll520xQvoXqZ0NtQx/im3wRUib4Li+8S/od1LJN/Z0mq+kG1GYo+Lu4o27Ap4u3GzHiKooY3As4LhjGAKZhtIJMx3NNFhT+ADz7+kJheEtwsTDIiyoneYQWowtLsktNUwONgXs7hEK1S+UT+Y6mJ+Wp4zENLPLuvm8sFO5/AR5+OzUIPhZQFbfAlIRTx25QByM6Wu/VKsvfiI6pZkx+cRRnle3NwKKP6f4h9rsJYL4mmBU1YAjDPiBnHrhKbMvys8sElQ93S+XvWbYDBHuAo8qJoO4s2540VnNWryZQAPUBejfvdoxXEv4qW1+TaNSw1CgAP1xgnwkJ4pjZF/Dzi9Jp0Lr5h9dtedNzyWAcbg92U5BE3awlNd5SLwapVjVCyAEjhW6BRi5KEbVamWkcv8r1lM7K+FxjpH2JwcjIE12ss08VsgcJY63zbbmkb6nzHyqmJopJA/QRCFqgbdNos7S+wmTEB6iFBQHlB6kUdTjLc9AsewksLuq3mSISM99nyCEwyv67e+KycKuwx2Y5dbPlSKCBXMAoewC4/gRTUu52365kvtXC10uSkaQIxviZ3tIQzU+Lp9ToWWiCDu0PyHzVBiNciBP/eEZol/E8ccCxge+8FLQnSOuS/a04xUSuw+eElgAGwETH7LuRG9W9rbn/GEZqNyjk3bGDqpsHg8qTxXGXYtx22CGktjyQeWM6MuSIbxCx/MltO61rs/Zsw6wLbCdwOtlhDkxTUvYeBVGJONk/7WcC18hYYsqbYoaW0VI8fzwHD9Q/ghhYbrWFLJSIVYLpfj0FuFwtZDD0Eo/qipCouBkT7EuIppujAlRk6htn1EXnjfHPxLPQeAboeM+JXLTkPKREgiWh9au9YXfsIfhHYiDDHnrXGtaFXEnGCjntosgeWJJFO2klzMfb1HLy4Lz8anm1zJhhCXR6tP0QOIhSd1jbprd4/ZPEgOaS3emoPD1wGvg5wwg1SFQR52NkRkSfesQL2p/t5DoqhNARduABqIXJNMK5SzMb3K0+80tADmqpcEkpwlossbWevFqR/me0i1HEJptn5x2TjaJvmgCxj0UHt61ChLkOFUeHbMkYZuxtRvVsXj5Mlh0sr5Dr5OhwxDOwdGY6MiLmWooApabtnqiddw74+cz/1pWQY61rKOprsDDKeGBQlbZWWHJeyUFq5xKVCxfv83FzL6yVJzhSthvpiFuRyvr4trnvFlfUqSd9Z8fThOOHV2mUDU8vLMI4WH0Qnp4JYQf1Vo49qf4+62N","layer_level":3},{"id":"9267865e-7ecd-4a9f-9bdc-66f3c47cdd00","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"天猫卡密工作空间管理","description":"tmall-workspace-management","prompt":"创建天猫卡密工作空间管理的详细文档。深入阐述工作空间的数据同步、统计分析、日常订单汇总等核心功能。详细说明工作空间与账户系统、订单系统的数据流转关系。提供具体的代码示例,展示关键业务方法如数据同步、统计计算的实现细节。记录工作空间管理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案,如数据同步延迟、统计结果不准确等。","parent_id":"8137c301-f13b-4054-992f-c556767d7c45","order":2,"progress_status":"completed","dependent_files":"internal/logic/card_t_mall_order/workspace.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_data_sync.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_stats.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_daily_order_summary.go","gmt_create":"2025-10-08T18:19:56+08:00","gmt_modified":"2025-10-08T19:03:01+08:00","raw_data":"WikiEncrypted:pmN7H1JF4+HQF9n9w8KwReDTM6Mx2U4SoX+wR3uMBnmUaLdaRPubDduH+iqcINL2F1uVz5fih8PpiymWyOsPjzO3Qey8yIXLoDGg/WTheetMHYoKhIvyZu6pbbaNAyK61SCxJNNwF/EHyoZFQPylLOta3kgaHFuEH7RGJE835QK8BRaPwrSAAzB+ZiFMTk04e8iWcaKdykmjCtO+9EdIARCuLs+JEVcc/GCxm5irW39IU9Sq9o21tO3Gc9lE8pXm5S7QQmQJlNeHsJUvwKT/rcb36wYlQA4H294Y2fKMcYWPnY19lKjJOlS54A5YpkwIDVrBf2JAnvHy3dKfCmCltaweNs5W1nPhB99CID0yC6RRwKclk599rzEPP9uQcMho+ncsqATPxffkpDN0ZSRz6xYJeoNBkP0i+h027xzaM1LTNShoiL6rjaZKyhmGlwvB+p4NqZthrp4zSR9vzdf9E1Z1lQfJ+1kDHKaBNyk8N7YbphhcsK1T4YGoOZ8kUj7JTTDlhNOK/ulyhDY/6RfKqXyYOKfDyJxDoTFM6PHl27fqCuaQDefSjzVOcK34HOi917aWeTxrLhCKUOHI2o/RiOtcMeSDHLDrrs+FK1ZgABoIR+Ba//CmGoZIuBo3WyrpunFHTDMw5QiMlc1GwbmwFz1bu1ST66DuvuFhnqy6TH97FEW5llBk5OkMjOO7359IKCkqXCchGhXFFVGAhatkBD6If6cXhJnux5uF5xD/yiGt9JdSV9FZkLpF+8OUWxrlE2rdiM/vF18w4PrGqRENA+XZQDyuxTIEXCuHfermrLGleSD2cLNANrx/6IOfIgjSiD7Hgz9uzPYvHeqQDM9TGjPItqR5e63PZKxIXaGfkkIj8hZSOR0IvlljXIdKULszbxi33SVWUMSyqMo0di5toQDQVI9+HKTYkS55Bj4OA9iIerZvVKl9/x2DdJkXksNL5LocFKFeAuGhmigZj1Jqpjaf3OiZSPXi3B/qoor3Ea3woUmI9b7OW3RmJQxYjShTEIy2Gh7KfAXc/afdHm6sD1Mskv1AUWlDwR6pGtzWwY809btuYtkA4XxaU+fDLtLYuUbc7glBGylDcndTjgRXxcS9kNWC4NaxQqK/nXjG7qxLiRyBL/aALnch5eb+TI1tjd48lbUQnWX085G90STcsymVAS9See5WUxEIWawYlgAhbHVBjGaTuVEBTEDXv65DipF9LCzobfTRsu+iyh4YL3xl+NipnjZSKiqCL++PtLK7cTpEg+sGO/sxMoiN3xpnYW+a+d1crOwLBIAIqZSSaJrRra0p4NKxFwKYiYhvl0fxKU4Ms7rElsigkjVy0K2v+iO21FBG2InZvMAPpC449SbG9nBEem7L5U8oKJGEYkNlbRlzZeQRXsedB5eoQlyhjZK0Ugtql/Pf8euHHPa+RkiuBR/YR264eXgsA2C8x5KBdnKv/m5adEZC6AEZ2WdXHXUqs+SVr9BUJ11V2x5gxA==","layer_level":3},{"id":"4de9e641-e754-4df4-be5c-96bd78e98da8","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"IP限制策略","description":"ip-restriction-strategy","prompt":"创建kami_backend IP限制策略的详细文档。深入阐述IP限制策略的配置机制,包括黑白名单的定义、封禁时长设置、例外规则配置等。详细说明策略的生效流程和优先级规则,如何与其他安全策略(如地域限制)协同工作。解释动态策略调整的实现方式,如何根据系统负载或安全事件自动调整IP限制策略。提供不同业务场景下的策略配置示例和最佳实践指南。","parent_id":"6810876b-78f1-4c9d-a2e4-a82d03615272","order":2,"progress_status":"completed","dependent_files":"internal/consts/restriction.go,internal/logic/restriction/restriction.go,internal/controller/restriction/restriction_v1_check_ip_allowed.go","gmt_create":"2025-10-08T18:19:56+08:00","gmt_modified":"2025-10-08T19:03:06+08:00","raw_data":"WikiEncrypted:6hVxnL7axMQmHgJLo0JNgXroZS4XfIcI9txs//qPFg+UgB1QVZpinkI/9oxfW9tPotJf/5BTyF8XCfAyLA7+o10wprGeKJwF1KwCWge7URyS6iBsJc1lQYVLzkprQ1jUE8cO5rpOjgyC1AA20f6UT11yA1zxFozgy/g0LWVZqwOTRcGh+5yXvLGbTIxDRKp8p7pt/JuDSzO5qTu5ypX7rWkkH/Ups0tZBzzh8KCM7WGq88jgY1gbBfHMqDQyCgAqZNcIcUwmlLKjk4PgKB0qkQ9cmZIfkS+fHSj6RMDGc03sD1qanuKGk9ESxwY21oWzpc/3wI+n/p+cdeMFNTalWE8KhkaGlEid4ydyq6Q3KBCtTFLn2chxi6nNbNbhR/oFhb6UBipCLFW0jjQKQ/jUYHiYU3tx2uj7sLliYtY19p18ER6Q0eeBzTY9x6nJ5BHpy/cDqFEPbiO9W5r+DPrP6vYT5cEPKpIowqt4W5NGOjvKSzqfvwE8nIWzMdP4bsrSwJtJwfsSEHBZdExKEtWcW/tbdT2dRxkYWfQmhI7cY/K1wKL764SlWVFpDVN+LSHez15/UO730AgIR2e6oqt2ubbB0A71eBp6Qu1o7smfperkg7P67OyP6tINwOIIAIT/xNd+7CrePcaWmIzDfUWMrQxspxyNaWctU0QgSR/sPFkIhxzsg7LIShBmrEH8tfw15U5yDFSTvuMUgYw31xprPAGUtKSR0uXZhTwuMmfaKTu6u3Frny5Ci+SIa+CQ7eLxurjMgXLzc1ZZkzt0xg4POwjzU9cbPVRqDBYeI51W/Jd60XoQOpn3PaYJH+5URyIzfWw119cEIMboj5KPdyxdd9RbkyB8rcUn8jIb0aiGVpcpbXpFMap7ZvfLCNKd/75/0k1IoUeZ4MQxILjkca8+WBgoq9iAkOcm33IneMzc7ySgTBgxAlw+q0ecVEmBEU2N8pVhCnBwtT/ubPGSftmicQOKOw0Y2f32sVWMOx927CIe8Ia+lc/UDbep8rsQTvc05NQYljd6ImHHvXErpYqND6Rn/VIbHHLmN3pdHLvgfX6BmeTBIAJTuADvXyxsroxWyc9xMTd8URXX7qi32k3LtA==","layer_level":3},{"id":"1072ba9e-1fcc-4ea4-9598-564f965be8fd","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"设备ID匹配算法","description":"device-id-matching","prompt":"创建kami_backend设备ID匹配算法的详细文档。深入阐述设备ID匹配的实现逻辑,包括精确匹配、模糊匹配和相似度计算等算法。详细说明匹配过程中的性能优化策略,如布隆过滤器、哈希索引等技术的应用。解释匹配结果的判定规则和置信度评估机制。提供匹配失败的处理流程和异常情况的应对策略。包含算法准确率和误判率的评估方法。","parent_id":"e130f1c6-f0c7-4f2b-8467-d00341dffec6","order":2,"progress_status":"completed","dependent_files":"internal/logic/restriction/device_id_record.go,internal/consts/restriction.go","gmt_create":"2025-10-08T18:20:00+08:00","gmt_modified":"2025-10-08T19:02:59+08:00","raw_data":"WikiEncrypted:W4RZ6LTz4rg+RteR0TdbvGbxql1VxGvXj8wXXJoD2jUkzw2IGr4vc8v4wXpMfAxM2i8Pu8fZQDbDACIjUvIa2PVuqqdtSsLu4AJ9u0PM176QBtkhz5xzzYCLIycke55A/EUOP2wz2ZNWE/Bho5s1esCxg86joQ+AEbPAnr9y4UUwrK5FmZpNj+5GIwqmWtRjK35+74RSPESBv1ntHb/v2a2wcfXK251Ny6Dp7MPayMWlDG9yeyKHWz+gvgg83t0mNRySmYr+wYO7EOi5jEUt5xOpBXzx163xE7VSEVoLhMc8lwsJ2znxTW9Ol5h3jHAQHyDf3PAwJHBvY7VTIonMDSRTcTtHoN/ZQ/vHjZcKvGxzN5NWQzci9mKua3WKZxVZrzeXbLs2uP7EjHKBCKdSn+klV6TqxAbX9IupDuZZnlTIG7uOpMmBFxrNYucDVnE3E1DI5K/pgGpCovf9M1KvV1S88adX34wxLsK9cVPO3H5vGBQvx7wI2iH6iQwtkhHGGEQcUC3m4f6M+IH0iqiLhYc+zS3jSdXy+/BGTg0wV+KX9Kygmetric0/m/F7hMm51IjieiNNc1axMYaij3qP3bgmWwj/6ktVEE0PpDUs2GGZo6r8vDnhobdxZRBzSddT7YPfnCF5ddjO/F3cP3fLrAT3Rtd6Mg3tyCdAT/aDqAx3L9DwuVuw1tS0HnsqVvMftCwo802muaLJgn/FC+hiUl0Umk2nwNzL2AWXUYxGof5X1fHBYcg/zwnkUD8dJegR7x9y2el9apjSKOScDn5eIL0qF8eu5XasmUbk2oCnZxefc1BHrCudzZbO3DAZw2HM1/Wo3vXNZS8hnvPAquMJu8ehFcPVakBQEDC9/pM4sdhD15dX1jl1K/KT3Cdr5tF/mYSlJSHSi3Z6i2nLiV03DGx8L5rt6QQjlUEXIHY3jvDFgIwqg09zDDSZUZrucbEpXbmt4t84YgDNLAMSKZBsyVhzkleMWbVLt6K6WSlKDE8CrUFYDQV2wKmy+T0lnUpu","layer_level":3},{"id":"282f094b-3780-49d1-b057-75345b1de3c1","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"会话管理","description":"session-management","prompt":"创建kami_backend会话管理的详细文档。详细说明用户身份验证令牌(JWT或自定义token)的生成、签发、验证和刷新机制。描述用户登出功能的实现,包括令牌失效处理和会话清理。解释认证中间件如何拦截请求、验证令牌有效性并提取用户信息。阐述令牌的安全存储策略、过期时间设置和防止令牌劫持的防护措施。提供会话管理相关的性能优化建议和安全加固方案。","parent_id":"0e1b4f85-8e7d-463d-b8db-4ee330d61a7f","order":2,"progress_status":"completed","dependent_files":"internal/controller/sysUser/sysUser_v1_user_login_out.go,utility/token/user_token.go,internal/logic/sys_user/sys_user.go,internal/middleware/auth.go","gmt_create":"2025-10-08T18:20:06+08:00","gmt_modified":"2025-10-08T19:03:57+08:00","raw_data":"WikiEncrypted:0Uk4p/ZIoJw1paXZ+Fb51ur9+BiJ0NP0cT7pD4QVBe+7MMhlz5M7a/p3drxSwSHvY8dFGDqDL1NRl4IgWhD1zXBn1GX2bUFf+oTxEhJhkYDUEYNU4nAACLzPI6gYMpw5QuZ1FZd5Bfv9+JPo8JUI4/Wsnw12tivlRmPEWuUj2hS/gIdfFzjw33l92TOweftqv2Or+uu92XSaClg+hTtpkPfRQ63ISdketIPowsTblGDxkEJW9DQoG01H810yoQkh97osF7oShLX7rTAqICvr393BB2UQO9dczlsDlAONcq9XmHogAGNsXSc6ee5PXC4RedEYh2856MODoJZdInm2s/IPVcAxgetGlgi7JwOCSuyGfDoisLCkTrycX7msEXgR6G1Ya/cFKC64K9k7b9c+hZKvWQLqDEm1LtVtUdng7zKto7hDWCexiw7A62sSPiJCMM4AjsTj+d/6qUCNOPIpMJeHiTzUumQGyjuX13AX7KVx8X7jU5gzlLv8OxgyBstD91uvBqMkfrY4LTJrSMdXwObD0CyWGCa5dXWtLx2tWvBd7lbCjZtvKzDOK9UaOg8/xCORlP0hX4sRMwNjUMAH1jFyEUxO12zItHHTYuqU4bJyCsYj0Yxrbh8xg/oKxLH67+JkwTqKnXOG1JXHpavpa9iMp6IM1SM8PMYaYIucJ8+FeJP+I0od6rjxON8kaZ6Nto1dA6oQl3JVHSCUhVPriTHXURowCQsAVK0zHULWLVRzwBjFj2bM2CuunGe8q/wzVflGRZzu6mmD7aW6pB7y1+XVyx31rdwZ0vznb/YlgpS+/eCh55SCgUynS/chV0HlZBfhoISANahRO7FJW0ei9/Jov7tdIIt1K86McWKL0QDBGmMqjLLtRuqYdxK3H5tmyBWuB2k+BR6VVJvTUsfElTXCpzsqWIGrvpPRvutDudUGla9WwmG+hzOe4zFEW+y/6yY6qzurPLhfxcuvt7Q/MAV+wyQ/UPVTlmKJlXxn0N699jJrNZTLNWjqlgOILkpNlBMG3Ic8iKMNCRujrINna7YGVF5yHCPXMy2zZA+Rg2kc9PwDJRSRiOMhp7aHalBcM8w1Jq6fAIx29mUAqkVhrSu43W2H+UF60gQHvVwAb7cSlL9JIhIMm+FLRQ30H9E818+NAlUrdM4h9jOZY9G1Fe075L8z9cVHAzmqSnnrItr/U6ULv3pAMm/cP2oxeCAV","layer_level":3},{"id":"0406e349-1ce0-4ec4-9c86-6c842ad5b1d2","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"权限策略管理","description":"permission-policy-management","prompt":"创建kami_backend权限策略管理的详细文档。深入阐述权限策略的动态管理机制,包括策略的加载、更新和同步流程。详细说明权限策略的查询接口实现,包括分页查询、条件过滤和结果排序功能。解释权限策略的持久化存储方案和分布式环境下的策略一致性保障。提供权限策略的备份恢复方案和迁移指南,以及权限策略变更的审计日志记录方法。包含权限策略性能监控指标和异常告警配置建议。","parent_id":"b5d20329-a5b6-4db0-8325-2b83ee9a2c52","order":2,"progress_status":"completed","dependent_files":"internal/service/sys_casbin.go,internal/logic/sys_casbin/sysCasbin.go,internal/controller/sys_auth_rule/sys_auth_rule_v1_rule_search.go,internal/controller/sys_auth_rule/sys_auth_rule_v1_rule_info.go","gmt_create":"2025-10-08T18:20:07+08:00","gmt_modified":"2025-10-08T19:03:58+08:00","raw_data":"WikiEncrypted:arCjhUL6OOP3tq0tMlrtoLDUXcFN5JXkHFkoIAmNJ1/s1y5qg9P3LBm2T8ID5ZgmWBKUZ3Dbc60bKc98HGzCgFy3CL6WPzz+X5mP2XoNn8E846x/EhAJdQZ02CvSPcKWPjLrj9WB8eoyVAuvgRl8qvRfFLq1eqvUPCEblXl7axcaXWZj0WVsktrtxjeP/8QhdCub63OC8xdv5YBIqFSFE0oLTHE5odO61XXDE3a+d3HsN53R9hJ+10EH/5OdJhONztMy8eQQaZfon0pv1NWLPRZnis8kO+9Z9WH1i6QrY2zlOkpNdkdFeCle0QOSVdh9sGbtL5aL92/dC8NlHB1ObwAUA8FXzrtEoUSOfuDMKZBr9vKSMJKjOtv3BkSDfVryd1MScwzyjMLbWW2LJSOTsFwnUPs6gU5Oi1YWEkIfJw4jNvAtLwjPSYIcy/FLIwjc4HYzUTMo/7SEue6uUy2nDRL6KKcv9ct7EghLzVG0vkdGSZOIHjhw+7+yGiWt+W2nJX5hqcTUhN5+Ts0vQKmgDI722zqHvkU8EugwGYrYtXVx721cK2w4UnJUu4EhaojW4NCIjr2EUsOYHQufzp2o2PH6xB56dIfdT55XaRGx9LkNO4wwDfy+82V+8xZpk/jkuTb3TGmiXJutwYEp9GKfv8iR1GvwGL6gD/GWgCFGmL2QrbD7pUAMye+/xftFOYjEWIA+U4Jsz41MGPcaqDUz5H4R4vMvPmqmNPN4oa+1SgSKTPox4GxqWLVB7zpYFECaTCYa7jDT93G++8fj+ylqpmowUhayRFsamEpavdXx85/5MTQ+rC+BhHRWd/N40oojTXddOFBSKH4Y3V2+jrDTxrzy869oxTgbkOHWzNsCM6ogDa3eFzH1oyVBAG27NWT38UsHvnsTDOO87YgjDXblTftC2lgQrc4JrcG77dHDTDp+symmhHngwOpzmCTwkkcUVCo8aoCNWHSBxxwtEWx6tYhZqR2N5JHuJHuBaLU1ipUc4OhJsxvZ8bRdU/UqA11Yly3oVljYGG5C4fzweb3yB0/Z4RqWP/jeQu3Q8NS5CcYttqraoI956pNJzJPnkk7TGBG6pbhYSfLP+86O3pRo9XIpqTxPYPbxTiBp1B4iCcWbZ5PpPeUurauBX9B0scUjl4Ct3C0W/arnRx5JKF9Lp1l8QajNBGdXXmWMm4V9m4k5qNJxVAv799478EZFGRN6UB/aKkW8rr7emXxhCreCL0HbB/UPg14brYONlQ3CHPhZ3Ix1nPJ+zeKVGWhn2GHxCuk/hGvb4sI0IFpRyQYTbSaE4zRaDYzMR0mxPeT+qOlyX1eGZfjLwsZKtkl6F9WcR8EoepjX6l/vvh2R0Wid7Q==","layer_level":3},{"id":"6d3c9aea-cd8a-4031-b3a4-7491202249b6","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"Apple卡密配置管理","description":"api-card-info-apple-config","prompt":"创建Apple卡密配置管理API的详细文档。详细说明配置获取、设置等端点的HTTP方法、URL模式、请求/响应模式和认证机制。涵盖Apple卡密服务的各项可配置参数,包括充值超时时间、回调重试策略、防刷单规则阈值等。提供实际使用示例,包括获取当前配置、更新服务参数等场景。解释配置项的数据结构和有效值范围,提供配置变更的生效机制和验证方法。文档应包含最佳实践建议、安全考虑和故障排查指南,特别关注配置变更对现有服务的影响评估。","parent_id":"04d0a6d4-e8a9-4e8c-a8f2-bee9fd409e56","order":2,"progress_status":"completed","dependent_files":"api/card_info_apple/v1/config.go,internal/controller/card_info_apple/card_info_apple_v1_config_get.go,internal/controller/card_info_apple/card_info_apple_v1_config_set.go,internal/consts/card_apple.go,utility/config/models.go","gmt_create":"2025-10-08T18:20:13+08:00","gmt_modified":"2025-10-08T19:04:12+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBuUbm3n/HylwaNIVUMKnhGi/Hgcopm/oQ4lcWfRCIkkHsiiTeu/ue9QAKwdbXpDBVY/P3Qigua05nKAQFPAwVn3WVT6n8PyrbxbmWxlX/Dr9E8oxhzTn5RaBjXjsaww+IOXyA37lEwC4a5tWnw59MOF2aurMPzaSawPSQ34tIgQmu6Qn8ETjIv1cwEItfDy7Ibtlk/RELXp791EI0CwKOC5X7yQcy/Qgwcm5Nr18sS3bULKQ/1RM1j5/Q6iPNSTKWyEAHUgcC+hnoha/jhBaiiBFLTW31hjoUkzVARhihUKc8bjyzsobI2sDWbda7c+fh3gK6rUfQevMI98h/QP43OZl7Ve8M7Cu+Jlj0vxZgA1WeGa69Rsv4nAcbWfTor8uO1utjzDpJauE5fRbsS4/FlayjbskXg/O+QtyiBEqB9equauoZoQ+ZhoxvaujE1dZOJgB0N7hleHBoPYV3LNI57UtJs7BBHTtdU4F/DgWAYMf6AP86/SGiGRIoaSBAiuXF4D+MuNmfIDZjvIL7N7tboGmG4HN6ngBGx0kfwGOKeKq1ZEoOKgLlZXQ51o0O+K873agX0cfYx6P2sXT55QpyKyv/EoPF30/aM0z7crEtLJrs4tBHLKQIuiKfjA2Z13sChBPIFHKYCsO9M9ly/Eiezx9jmuntNp47cSCZM0f6uRGaaI1/aYeftBkRAV5/hhCAfq5fUiE7aDNHLx0fpwpi+qMkpl6gqwLIcL4ZMPN8yPPL6RL/mdDxq3I72ZsDGUYMOfRlDFZKExEHZDRy7Ic89Wk+mEjZhTnZec/hEsoMan6t+8CIpBHoRk5axvE2mgzY68TEDb+UykPBvKFbNdCAi5+buFYqIR/So7EEbRfJiZY4crBbwR5YmbmWMvK8KIPYsC1cXhhMNKP9LTFDi9kmdvQWq3woH0ZFxMNM/WG+071k2ZKFVVwzTzR/TRNNAFEqwJyA56J0cQ17TwzZp7VKxeGBLI6+esXEhJScPryxNVN8hl79PFX3pj4uD/a1Mze05MVVYU2K+a8qCd4h1ZpaJJR9RomPHIhXxi1XUupB6xur+PugZWExABg91LfdnS2CoCERGkHpDjSlBJMc3o4Fz2J7iyH3O/HjdqBDXhnY7o7GvYBFzBfr1UOLcyH6l9VQ6JHLlI7OA+yAbyB/TtX3LDqesUMzusgP/8tMhcoOrnQ1F5Xc8Z8sDKcs10PNvZeuWCkyxASCirD+bBHG9wWdxod8BKgkWhFwO3I7IOzpuGIFLmOCGOkt2YA8BrJ0KxCi4RQmgR35kPYVQlHIv58VVFFjrhPN4KESeTWyOq+ZgghpDU/ZBW7CVifbND8fzZguEpprUzAognHKAX4uV8z+4We2CYI5M3jfAWm5U4OAgE2hBFAcoNsP+YdC8f7Il8PgulhjJCUtgodbkbJWqEwCG4=","layer_level":3},{"id":"45710fa8-25aa-4217-ae14-a73410f49c30","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"京东卡密数据汇总","description":"api-card-info-jd-summary","prompt":"创建京东卡密数据汇总API的详细文档。详细说明订单汇总、账户统计、交易分析等接口的HTTP方法、URL模式、请求/响应模式和认证机制。重点描述数据汇总的计算逻辑、时间范围选择和数据精度控制。提供实际使用示例,如日/月交易量统计、账户余额汇总、充值成功率分析等场景。解释数据缓存策略、查询性能优化和大数据量处理机制。文档应包含数据一致性保证、错误处理策略和性能优化建议,特别关注高并发查询场景下的响应时间优化。","parent_id":"288b9b5a-64ba-4e93-885d-499412ad90fc","order":2,"progress_status":"completed","dependent_files":"api/card_info_jd/v1/order_summary.go,internal/controller/card_info_jd/card_info_jd_v1_order_summary_list.go,internal/logic/card_redeem_order/summary.go,internal/model/entity/v_1_card_redeem_account_summary.go","gmt_create":"2025-10-08T18:20:18+08:00","gmt_modified":"2025-10-08T19:04:46+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBqF/AgjQv6sM0ab/eWm9Zc2i7CrUWQErn5CVnJDUSAmvbhzvUotPoOifzRMm9owTgiZzFXf8qg/H7WNy+vMKY21byd2lSmn06NgdDtFEAjS3aLRCCk8nGUvX0YWM5O+3y0Jwn9eDcKvfVG1xTNvbumyL67Azpb1QcAI8x8ReYD3s4A205HtSKca8tiqyCsl/ceYDq6Xg4nSvm0ZT21L4vjiYz2RsI6zQf1WkOQtKqEFSoeqKNcNxP/Pmht9nPJkbUtb6OguOmXiRwz8CP7BR7HUjcUKXPUujoT/Fba2zEWZMa/q2Odh/tDg+JUiWSXdZTZPwpURaAjsO4d+yn7JWxeJtGpvl5Y1+oQr3+pxgvYExfD7Pktk/0uLIXbUL29o+h5ui6SzhyNDIfNrvyy+IKj9F8IfYCq9+hJtpzO2tmTz2hS46eqoX66HxcC081e08XNsrjLF09CdmHXEwSUjZZ9gvLocabptJ/DhoKo5vFfAM7tV9T1CgDpD3K2gAusHRUOg5GLVBCjcRVippewoSb6q6JyF0Qr9aV+ktSvuiEhVc8MR27ywdDm92JG00+A4AJItDSFPYfJM2J1knKG+Vj2Jqbhlm1z0IDJ7oEy+b0y1EkpMnG2y3/+DSggZSiZbIQvO/uYG/Cab/zFkbELifNrSVrdOr4Z25EJz55VOhYjcq9fxEC0hFGLowZmWUQZV6q7yGFcj5qQcBPKz/UVyFQFTAhNIpxL0sDR+ClaiHFGwotrSeqUyPF+TtoN8UyXQTSjbdDfA904H/il3JIqltti3+FI4On7WWHgNNuWL4+GrMrqVZuR5ore24S0OcJz8OaZkAnl6ISaC1LZ/0S+Ng3lqTOxvVlzOvs+TMuWK80FBcY6ixKthxI3BzeOx6KuBhdjI6PS0gpqtxEzvXxWff2NUB9YuWymP0o3NMFlXBvJZRR7Lds9P9WfTxe5SK12GEVdWuYoWWX3HxVfOvJRIv4nsl10xQru1mMxf8f8UnT/idBs1cNJ0v4f3eiEUvrwspVYzYjbsDza7h40I9QIItp2EUVVyChbWb+wXkNF1LvS6SdAU5V9UD+sYu/GSjhxNAHNpmAKXmgbEAjDJyEH+4/WBv9KCvpujORaZcdTQoNq0U39t864GLh+4pW9SVMehu5nNNMoOJ0iG9TiwueE+kqJm2Kk9P+A1pOyGlmbPIA1BJoKKhxLe12AnelH9hPoUj5ZzQwR5mYjqsghmq428peD75K78JtJKIXtMN/Y75i1w10UusM5jOQfQ8gc72zC7MC8CmkER8HCT9017AdwDZWnRdl1Pa2g1hgaDZ+pVe1nRwcoZB3ev7N+XmRnJhAlbt2SudhELdmp9mq1/8f2A/JtkEJTMdybogDqanF1yg1S6FHRUvbjjslN/dQXeqw0LeUA==","layer_level":3},{"id":"1bb36bef-7cd2-4cfe-895a-726588a9a89b","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"天猫卡密店铺管理","description":"api-card-info-tmall-shop","prompt":"创建天猫卡密店铺管理API的详细文档,涵盖商品查询、订单同步、库存管理等接口。详细说明商品列表获取、订单详情查询、库存同步等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括店铺商品同步、订单获取、库存状态更新等场景。解释天猫店铺与卡密系统的数据同步机制,提供错误处理策略和安全考虑。文档应包含客户端实现指南和性能优化建议,特别关注数据同步的实时性和一致性保证。","parent_id":"c32a3e21-0961-4618-a256-ee1396eca8c2","order":2,"progress_status":"completed","dependent_files":"api/card_info_t_mall_game/v1/shop.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_shop_order_list.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_shop_order_get_one.go,internal/logic/card_t_mall_order/shop.go","gmt_create":"2025-10-08T18:20:23+08:00","gmt_modified":"2025-10-08T19:05:04+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBtDWVCx1PqAct37L9oLDN6sZVjNa9Ch3OShCJn/kzhZeficIBnIrtnenIuXfUtVRu54GfaWNfbXdZe6evvtyGUfLvBB9ZYagGxmI0e7fGNTwVebDYlI3vfj2gZZT+8AlmtTVcgmrN1XVtiBaxzwhpwmuOalDR0NLwHMiyHwbWWetbQf5t6OWMtxhbw8uR5sdShhBQ69i8kMs7gasHO3L9ef8JiQuzmZab4jt2/xrfjl4dZ0a33GiWO3s3sRpWIvHNJRIOrV6hf5IffMdcZ+R7hrSNZZScyPUg65QcCziiCn0h1g+lw9ryli/75CUEtdbQOfsVaDyth80KMQE5da5xEO5cCTXJMWgpOUz2FphlHtIWaRc4KLjTeDDHJEcsT3KcTB+HLPmJ9Bffm6bu9KYEZOiYE54St8xhGgQ5aFx3DuxS47eI5mm2c5dl70QwWPN7feFwV8k699umCHjkpBK9VJyP9Nx9y79++Lfib9iA7DeaelrZrsy5A94TSKWBeyRHyIUy//kyJR0yTxXJMl2PzYCmzhe1y6kVeZBj4CEnsou77ZBf6Wv5QiomP7c3NEtjyWLFhj6DNu0aHK7UT5xwpuTlIrquQkJKImYvh/iwUbhs2+D9R1TjMpMw5YVCJQ5q+rLJfT95TApJ0NtQ/gK23lM2fHt/tolP9xWLnZDlSWYSV6iFsNWRKoAqf9BHDgJ9le3vZ1FPEl9EgjncBN3bbnJDq9mcz5yz68bnS1Jll6eqr93nSxeRfsT2THN+ocDILhi2/m/iQ3eiE64QQD9sdieF20QrUhBPas/aA+9yyaLtKOioBS2R/6QPfXfHzrZxEFiXBgFwsq/bLVcuTePzmiJkWAQNlshCdn08Gpl6ofPGXLcaV3vjJpAzxmysSPJxfN/9ubB7na7J+oZsrX1qknTBfOmSJR5kZVH7IMJ0xvrvvjt1BHLjbLI3AVVCRFLrcA72WPH1h7pwhBLZMk3p2mL1wcOjUJbnEPniayx+ShuePbZ+pPKcF5PNMLRmoi4beEULlRKyfD9izQo73oKV33Lhn1wmk/Cie5kwEUxD3VS6F4iaXoi+GluVFSmgFF2drwnDjMqCLRfzUWAp1pnrJjRiv6TjdEfzWl8hpMkfaRrkKtAcZTN7KylwN39fXVoFc8N6mvNTPmoQSdFV7eXp0ervzriGjtKZI+kuCXrzl2ZizKg7iir7yyK96aM/gVWH9FdYboTNOtqshAL1Huz2zB+NiQn6Rs/haQcNkTjF2wimOwOXKWLFHWUPnv3KMpLZDS5eXL/T3sNHKkkwqj1ZTQN71hh7utbZNZESsx66lxlah5v6nJCuPRXBaFw5Mr7PRN2A/mN/fXNv+K2m8nSvRUZzG32wf46zNfQOM8lMSfhh5fucX+IPUbJgoZ0jy/nLoTCVmbnlI3gfTZawah36s9OLG1zOW8nU1+9wvKzzfpB","layer_level":3},{"id":"25942f43-183a-4e00-be2e-c61ae84373a3","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"沃尔玛卡密分组管理","description":"api-card-info-walmart-group","prompt":"创建沃尔玛卡密分组管理API的详细文档,涵盖分组创建、列表查询、统计分析等接口。详细说明各端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括创建账户分组、查询分组列表、获取分组统计信息等场景。解释沃尔玛卡密分组特有的统计功能,包括分组内账户状态分布、订单成功率统计和性能指标监控。文档应包含客户端实现指南和性能优化建议,特别关注大规模分组查询的分页策略和统计计算的性能优化。","parent_id":"7171317b-83f6-4146-8818-b00d88d2b2b2","order":2,"progress_status":"completed","dependent_files":"api/card_info_walmart/v1/group.go,internal/controller/card_info_walmart/card_info_walmart_v1_group_add.go,internal/controller/card_info_walmart/card_info_walmart_v1_group_list.go,internal/controller/card_info_walmart/card_info_walmart_v1_group_stat.go,internal/logic/card_redeem_account/group.go,internal/logic/card_redeem_account/group_stats.go","gmt_create":"2025-10-08T18:20:24+08:00","gmt_modified":"2025-10-08T19:05:31+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBl7AFS+0V9EBoppO4IsIlgmsc7A0SALqjbDeilIpHRL6DsPwTdRjUHYClnmKJSuNfACUdp3TkWYbmYMcAGm9QFylogt4mb2yDTK0EN/YLlt/RBQR5SZ5V/KHZILmc/y1KU6XVB6sUYTM82cUmNQnYJGXhawqUhz9I9sjWCuKFxN92r6Ts+uEomIRqNu/nLp1DP/fXR/mOoM/aL/nRdvof1psvVPnHuOq3PwEE0c0Hl0GJz5ZjOE1tuhqSyLAbG5/z2gx3mdUK1vPHi2QuksMlMBPg/06zzpUyFvktulAD2TJpcvz49m6i6FPJti6DITE/BvLQkCwmynKNFHOlZwhdmK7peCkOww6N9EbHudcCRtU/FFyiqSV7pudlOxijj7dyrPR0WaptsYxGjWxXYg70vzVBWXg4baAVjJOv7cO9T5WNxxDhRhnd7/VHAyAcxadzPC/kpSV0f5HZzQbjuiCCG4igGvWZnvD/DXSZDQVz/fXO4DLHglL0OiIqBsp63nrnxLcIl0cTYFEByRa0MWtRBTHqAumz9SkyMtqCZCHtEduLIvSCEKn7tdDNyt0eSpjQjkdflGkrzxmBEQPlZUfmVUJ2leNHBhkTHKOT8yDQzMEdxuFPInwNF+Jl7eLrZjAZPqhfEm/t4WEWxqOsqPa/E1/kiJ5Pk7YrmdqE9+mWG87PWLlh9ex0u0lKQ655K2BOzxxvnrSiMeT8pdZRtI7hK0SxAvC3ARDNt+eFmV9sH5hFs6KNNKmeU21CxBOja+DiP7gkwaFHRJJuTPYBWogRYgUzm180wMZq1N2/UvoPNu3Fu1Kyqpr0vsPi0BdEaclfsJuru6qg6bV16dOiYW41Fy5HO64a+GwP69rp+vdj44Q1TZO7e9JhPhTNH3T6o5fORtAqUlC2Zs4rBQOlhYbhl5fooN+4HfqjQBPYnU4lMQrbR3dbhX+mm2c8pjcOWODEF9nNmovrmY8sLff7qYbdHpgsBkWZ9D7LKlPEANGF0psXr6ouYyHA/+a3HceDZCJ6yXv2XKSgfni5u9x99WpRFCth/GcKvlzJou4D8ukkFuR0lFo5W738+St2i+O3SXhiGn5FagE/jO6SMOy8g8QnxJpxRrku66rc2kbCu4I3RSW1dXWk1L+Bexw2BUqUhsMjWjFkLVIl72YEac2I2n77kuEa+sUa+OscA2Uih6FeWBvnH/CkPR9cMPk1g/EW50Tll683aCYkQEqeyW6XgHf6EW3s/bCLbnFX9Zdzn3wfuRdomyBLf/sNKrWMHW4+KJNeYPvhhlXK4S5Lz8aGlfgGxrsuh2Vhy5bC367+Lvk695IsAYLi1b5PVIk+UTBVEsGflVvZfaNIvLDZns4z+i22NR6V4AXyry57N0EGLATzIKiiIbKUHtr2pwj06mnJoCJ8y+8DtdT2VZN9by5vIfsmkiOF1Z7irKQgVA4Y56qa1nuKZhMlKFY3IEXNhUIzFo83qfMw6w+3dzuELr5iXCHZOB7Hq4y9t1oKmw/UIGOw2qXtxKAJonahaTg40BEdOGB/ghKpe3uvjVtoGtCTjlgYP276fVmezwd7jeAQOHteUPQDcilw51riNjd9VUdCaD01w==","layer_level":3},{"id":"f9c16741-f716-4147-9f51-cd748e8960a5","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"缓存配置","description":"docker_compose_cache","prompt":"创建Redis缓存服务的Docker Compose配置文档。详细说明docker-compose.yml中redis服务的配置,包括镜像版本、端口映射、数据持久化策略、内存限制等。解释Redis在kami_backend中的使用场景,如会话存储、限流器、缓存数据等。说明Redis配置的优化建议,包括最大内存设置、淘汰策略、持久化模式选择。提供Redis集群模式的Docker Compose部署方案,以及监控和维护的最佳实践。","parent_id":"58118687-a7d8-4b0d-b788-36481cba182d","order":2,"progress_status":"completed","dependent_files":"manifest/docker/docker-compose.yml,utility/config/database.go","gmt_create":"2025-10-08T18:20:37+08:00","gmt_modified":"2025-10-08T19:05:35+08:00","raw_data":"WikiEncrypted:h7ADvj4WLJHyulzCl+z7kAZDiR5uyhkNoy9DDL9YABhaEGF21FDK2lTOHOfPDhj7T/FDn1Ku8tga0alrgEkw/RnLRX29SXM2cScpouF3wTSEeO65NpPQ3qqRkvoVmI7/Eeg0bM/cK2Jd8E6G+CfBMqrXmpBoSlfnKbzufPSADPQZvbEn9P/riWA9fe9D7wnl7nDDdOyAETPdiUlfUJm0zdfQTXnm9zI+xF+HDJLOPRbiCrOtd3kCj0kpsHPy1dyDK0LhX53PpQrvYy7mVOznIiAMdEi0sxVdvdoX/hJ2mG8QALG9fBdajYUdDJJofEnYoEn+pBMge8BFflGFtG+8KDidpc+Z5MbIcyZ35zpuG/L6+UnzjQqYYmL0hY8Ii+zFjMDtyqWBW4QQBWME7ad1l2KdOSYL9T39EG/6ETY7nKYnrToEXLMH8diq8/LiZ8wLQ+DzXv6eTXG+kmCbkgICkwSRrJ/bPyeOe79Rz9MUJSUA7VflvcUO8U+LlJxpWGMQGGSSkqTs0yFP1zBHKLLJZQEJLrwPnacqmqi6JipdZRnDub9T/812Wb3XrCrmTaya1QcyE6gxdHBdL3c7it5mfTFia24pNkk6uot8k2m5242PnN4Fqdp0YtnhZResM4sFUc7qlNTfjzfUxafk5AJgP6lzaFJsnJf2I71o7DbODP6h5yhF0V5h5euEKDwfCic9MGwS2uVK251XZrmCLrZveGK6yKr/yZMKPOfF2xj0Ybp2FaLOlFw/ufSP8i/eNEvSs+p1uLteKwhCuM1ka3iRjtq+BboN+u/1EthGBUXo9c96Rh838yBDN9cxDVWypm4OazaaN0+SPOzlW6Fe2+7tOxj3fylS3oyDM0KC2YkRchVp8ouMtW0P3dXAXWNFx+dEel7qOuLgfcRdOdkrQhfAsbwSUcjOuksYygd1j4gPTTxYmV/Coj4nzMfaOKq0seHLa9x4VDssXqM4XspnrDeaUVYziL0OeyBOfdlWTA7T9aR8+aCSAnHbBkQpqj26MU/V4A7qmIX6I8hjA6yAtuZS3GvtdbIM6Pr2+6b9N71D40Y=","layer_level":3},{"id":"b8ba5dc4-8d15-4b61-86e8-07a963bd3fa8","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"数据模型与ORM映射","description":"data-model","prompt":"创建kami_backend数据模型的全面文档。详细说明所有实体关系、字段定义和数据类型,包括v_1_account_info、v_1_order_info、v_1_card_apple_recharge_info等核心数据表。解释主键/外键、索引和约束的定义。阐述数据验证规则和业务规则。提供数据库模式图和示例数据。记录数据访问模式、缓存策略和性能考虑因素。说明数据生命周期、保留策略和归档规则。包括数据迁移路径和版本管理策略。详细描述GoFrame ORM框架如何将这些数据模型映射到Go结构体,以及DAO层如何实现数据访问操作。","order":3,"progress_status":"completed","dependent_files":"internal/model/,internal/dao/","gmt_create":"2025-10-08T18:17:58+08:00","gmt_modified":"2025-10-11T17:25:03.3720868+08:00","raw_data":"WikiEncrypted:Zb5TNaG1u/mRrgPr+sDyCrIPJ1Zxavjbt9nmnu5AenzUzYPN5uc5C6wzIS8/PeNcv6LLiygnuF5xUDWa8XqJE7IjIV6eXd69l/JtvP6o1P1jy+3cnXGgKfnOxR4u4Q1TA3D/7OQWsDjnaDKwT716Jt0VRpxvRuCniy/osjCX/ffnYvfk9AAIeI7UGuqdi/a/Q0ZNu1ehBfpjlzXvUksWttBcvkkogdMbgQM+B43YQPtYWBrjQ3pwYVOsigQGO4N4gyWkvlt2wL2okMZNmY7VOjMavyD60JAJ/ZKp+VwsJ1qEdZcOqWZRrpeZ2wQKv1saav1NxwksIJpuCEtUQJYLDelN0JnDXA3SBXf7v7weR09c0STFwo2g23KEApdXKD/PRFJepZ72hdodaaVfJCuRdnjC4sGCpX1re073+5Vrkyw3Xom/qjbKTAN3qbH34xa9LnE8/iCyqvJaqZDwuX9tMjlRMhPrQPB+ouFqkb/MzKN9QNbEvTkmEwcWFupDNtIGPRxUoXN4tnwrvfljbgLk6y53vb/a/K+uXmb0u/boOg2Bj7bOb4lzKppPvHOyfuSpPVb3FO8sPJqBd3Tj/Lty0azBKxr/wnC4Dx5suaOY6QrA63paR2w5oEKyxmilj4gu9D37dIez1SA7yVdWcFoRP+JIwIGqiGbAFJl00aOaMPelGtOdwYBlVDp3fTUf2Nw15essR1LYfzzmoS0v9+gJsw/vqR4Fu96KwBr69F4q+4ut2b/gEdMtyGK5nuYTKPKmo3zcjudH/jr7dSyTaC32/Hze8omvIei4x+zrCZHvqUgkgMwD4MtGeC8uMU52QxNoyNs74Xi+flRNtOXAnLJMyP1cZG1Cj9NTnL2jtufAuvPxQK0n1Y+C+jT+l8npdzsFmuI0ScA1PxwuKEbTTTTXih9+pWvY4f/dRtzHEiLKmKEqNjho4x9Eb59qaK4cXiDaalTAZqVh4Dhp7Mj2L6UhsZEDW5njhNwA3f0oWolJ6kChm49sIwpWcOZsh19LRSYe42TuHcQUa0tRr2ueRqlBercZSw4CF/5VXd3LkOziPF8aCmtNIyYTbGpIG8Qi1SN1KQdDpGBFOLe77qCuRe1cDay3STIZhUDzGX/J3YraqBu1EAxAHbnjBJtPyPsJ7Wpt8H7OqqWEkFcK+dWqP29W9etK1hnqDuLCIwJjGiKerIDItCmJb6IWwuaj07jWyKgNpKVYoLPfw+8ouy5op44yeqEACM0hftf4+jpviiOqtoPCOE2mYjCr1CoPwvteOWj95x80op60xi7UPRjRqsCWeg=="},{"id":"93bada60-b20a-4977-b82c-eca224ca34f6","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"风控限制逻辑","description":"restriction-logic","prompt":"创建kami_backend风控限制业务逻辑的详细文档。深入阐述IP访问限制、地域限制和设备ID限制的实现机制。详细说明限制规则的配置、查询和生效流程。解释限制记录的存储结构和查询优化策略。描述限制检查的性能优化方案,包括缓存机制和快速查询算法。提供限制规则配置的最佳实践和常见使用场景示例。包含限制逻辑与其他安全机制的集成方式。","parent_id":"201b5004-c469-41f6-a407-c98892822b49","order":3,"progress_status":"completed","dependent_files":"internal/logic/restriction/,internal/service/restriction.go,internal/consts/restriction.go","gmt_create":"2025-10-08T18:18:19+08:00","gmt_modified":"2025-10-08T18:33:33+08:00","raw_data":"WikiEncrypted:rmn9+OO+cFYNLeMVIfracfb63BkhhjJRyqXSuaq50u8NkbHHDfDUH3Ca5Nzi7BICsqkkjM6/JbGxGiDJum6puODFwc0XVrFGf1U+T3ppY+/l7ubsf7Cq0hWzVGfofjO8CwBujarPvK9ExMiTDu025Rwb7jUN83Lb/JtpO102m/RriiKTWdi9aNMMkkp3W1AiSykNwum7Y0nIkZrCVumEqNV/igPyvwAD93jEa4oNpXCarHJ8DcdrJwfPvG1U3r65KvfI6jQostXVwoJJylWNL+CJOyoYXBZqwbZZ4UomSfq0cn02py2oooaRW0XhIus1SDN2j65f333RgJCZjNPkF2JNAMF4diAzD6A3QZHj9M245QSoYy0/jB5M/CWJ/bvbf20OMhNV8ksFDKZqZ8vNXERLVA1Ji6qNFmyoBuojPd+ojKjfbXkFmHvKRYQSEsK1CrJ/o03kvEDiCyCWjWqGg1B5/kSYC+eUhE9akwTemjnQPmiPwDPyBhW9GVqAgZpk7/W3gEJz8sIba4wStaHry9+Wcvq4oZGOcxL3eccP6Cw6xTpstRyPkn7bQuS/B1+CghM9X5qDMhZcsFLAVmXBmkMnUckcRmK6BFd6AZADu3Pn9lqRed2eOoOkjCT87iJCw47E58Rm5AJh9+zo6JSiCHhS/C3C13ZX9LGMgTyrisHtz+73RbcV30J61OtJbpAu4GtbyWNDhSc1k4uanUxHKDQvgligLfogEbLuOB4nJB6ziKC6Ho+xkMdnsk5xDHr5+RWwDLHGQ3NLvIKl3eBRjKOM0zu9DYtTytEQVHLkAwDQUlaRz1w9FZR732JXjtbwR1x7DZGiSUNNiltyTZNlpvBQ2iCPqbTZ2hOAdetVTrlCqYfOBPpeOQ2W62vYDXNzO5dn+RvQU8N4Ullm2QwmoAA+0GnWE2JrnmMXwmjcHCvQCWRFuPtD6FAl05M6Bj4+4HTrCsgpDtULVpdsgilGafLN+ARsqMvPjZRZnEc0fJM5jOhW4w23RWJLz0r84z9x0m4Q/ko1yBSoLphHozReNnKcjztw+ayMsmwD9pUW+AIzVxamjFjXV2B9cGKmIo/h","layer_level":1},{"id":"f5173a3f-1bbf-4ffd-aefb-fedf3a92a65e","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"账户数据模型","description":"account-data-model","prompt":"创建kami_backend账户数据模型的全面文档。详细说明v_1_account_info实体的所有字段定义、数据类型和业务含义,包括账户标识、平台类型、状态、余额等关键属性。解释主键id、唯一索引account_id+platform_type复合索引的定义,以及与用户、订单等实体的外键关系。阐述账户数据的验证规则和业务规则,如账户状态管理、余额变更规则等。提供账户数据表的模式图和示例数据。记录账户数据的访问模式、缓存策略(如账户余额缓存)和性能考虑因素。说明账户数据生命周期、从创建到注销的完整流程、保留策略和归档规则。详细描述GoFrame ORM框架如何将账户数据模型映射到Go结构体,以及DAO层如何实现账户数据的并发安全操作。","parent_id":"b8ba5dc4-8d15-4b61-86e8-07a963bd3fa8","order":3,"progress_status":"completed","dependent_files":"internal/model/entity/v_1_account_info.go,internal/model/do/v_1_account_info.go,internal/dao/v_1_account_info.go,internal/model/card_apple_account.go,internal/model/entity/v_1_account_history_info.go","gmt_create":"2025-10-08T18:18:21+08:00","gmt_modified":"2025-10-08T18:33:34+08:00","raw_data":"WikiEncrypted:3dIsHCE5EGeVKP2C6D6lOCkvNeCOXjZSxEjRTy1S7+/QWb+uLuqEj23E3Do63zz/VSQitRzz21hs9T6IKnBpbmFXXMfSvZCOf+XeR2xuRYb1wH/WgEYG1zwq6ZO9CTp5cMDe6P1T/h6F0mbTsnvCrSvEKO1R4fPO1j5lneD1/OwacDkV0fCoAoDz+bX0fIwhOjm/TH6hjDIgEJxqPJX+FgDC/cj748gYlAdIVVehBDfiZ2A0qRNeJ7QLMjxkgtpMDnB2iX4uTRow/hXyREEEK/kCS3G95VWuqp71XOAZ1Ez6C63OQ3cIF8KqI5pxvkeO/Xv0KaIrRRsj7AE+MB2EYoh55cH1jek5Iwn7tP6HRyYfnHa/nnO1xK/+17wlcLkf29pTGgu5PLrzj0+uJirjORrc3SJflFtiR4BSzSrSEdT7PNVcMhc3fViku3v3GUuD+56BPacBo7+KZLI6nJV+0qHbPv4ENuxHLu3TxQCqgjwJtscQ0GjsZFx4wm5+jOx20DHHQaOFsUymNgjT03Si9OtMZPnSIJSz5L0ypcgifxGHSh5D4PuO0cxVgWA+xSyOLnx2WRIIHEFgXRdGmwzvx3gE5/4EVh1ezImJ+4JhY0/lOuvWaIWFANAQvxBbcUAPiPnzlwcMWHEk1kPqmQ/LEIJRBQY1N8JxaqtCxaAUK+Bp1a1Ufr4cDO1lMI4Jjk0Q6bP6gpuSkETykx0rxYSvhzQg4ZwdG536wrJqFg0GaMMMfXJlSIeBh0r53JKdO6+6/km6NM1JYA8jFgychcjGcay6DvFDDgNCfSTJClp3sZybNIbWNT692xtrfAL/tLvkmM+WPGdIHIaLLD0OU5jacGmK0GKQwUetfgUG0KHrQkLe5OjN7j71O+VP0EokXMXnF7UkvBFEuXvjFT2ceyGAmuG7NSdtryzFM+oJxhzvS8ybJd8MA/cyDsij0uHnD4dLoQvc4E7Ree3BW5QEAIj0zfp2+dZSpkG1ynDuLVc70jV+eJX3znkvFeTx1nAzEFzeyiKaD3CsU0LZihc2TxaPMKtslWoGKelrGN1cPJsfwpuxRemP2rVcLyldPD8PH0XCT62SmfejaULlVU+zpO2za4huGsByfK8xYeU+tKUJ03leKqFSC0ql/ggakUhbQ+gaID+PI3Smt1AkdzBD/rRQHaNGS1XSAeXLOo4xclv0Bg+6VFm0EStFrMc4K9uSlfje37HPvFh1IOZK6y2vsZE0kr1FgcFl7F1F4WKJeOm6LsfaPWfjvwpcxt+Kd1JoFy+c1ixuqNFpT9K+4fsxp48ww3R7+FSY/7n/vVJFByuMerlKpU0S3Ad3DcoRg8SUs61sHHrIiyCd2LOZjvw4cTQwm00dYZW/M+1BNHluKGWH7bH9tMOmV2EZbRGkdB4kMfRAiZqgR7+E/fa1IWyBA+UROUr2Py4e4ao6WMhqJMwG+s3mMH4FkDfCuckeqje5zrUAlB81rWBIA7rlXui9i2eAIe/jQRlse1kP7mCieLhwFHXD4tGmzjXMdL3TaFP6a/ZlJw3rS70yZnloNcsJx5ABM2vD3qKVomGE6SJ9405a93VNO+tSxIQE0VwP5baf8Vv+9WzExpT4NhHCYs3htDB+2RtiPJXFL8GuS6UhD8Df3D7fzUYcVVU2vjc6avg+ekXV9k15VzJRY4fkOwo16GBMhz18wToI2o4TQ0HMlFOBU/6UBCh2D+2bxy4F9YqYSZvDNE5jhg7gA8yngafc90aA7w==","layer_level":1},{"id":"c423075a-af3a-4aa8-aeb1-eca97be6acbf","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"商户管理API","description":"api-merchant","prompt":"创建商户管理API的详细文档,涵盖商户配置、部署管理和盗单处理等功能。详细说明每个端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括商户配置管理、部署信息、盗单规则等接口,提供实际使用示例、错误处理策略和安全考虑。解释商户多租户架构的实现细节,包括商户隔离、配置继承和权限控制策略。提供客户端实现指南和性能优化建议,确保文档与代码库中的实际实现完全一致。","parent_id":"693df6d5-abb1-4b0e-b0ee-fa0cfcf10ec3","order":3,"progress_status":"completed","dependent_files":"api/merchant/,internal/controller/merchant/","gmt_create":"2025-10-08T18:18:22+08:00","gmt_modified":"2025-10-08T18:34:16+08:00","raw_data":"WikiEncrypted:BG3lFnKLVTvBR2vGYwCPybGcuuvxRs2CfAl0PFcG7KpCNLgP8WOvFGabZLnsy2GsEox7gQAXhOjRTiMKQFzbYy/K9GotmGX2DI90LPZsAe9sSXhANcWDT9nqO0uGP02OTRTaU91z8NAKkJzcQCy8lC1wHEYEHYcWf2Lx8YWDaX7dmfJr9Py6QmhKrP7IiXXndM58ObteVahcfVS9RkUFhR2ip7tsNTVUDpwvtYtKD1jquWDRzjcmvWx3hCMXwiHOKKnvVJKzJ57Eiv5h6yBL6MA1AVQ8cz4wASjv8ELaAah8GB2VFp7+UuNl0h1Om0WF1CkUQDZ+C1+4LU6Mv5Hj7rRrGCz0Zopyo8fAF+VJBGLijJ+uszi1hpN92Sbtam8Qd5uzNQalK55BPCCDCb281/lA73rAZVZZQbe7RlLv4Zi4xEw+OgQjuu2I1SzSq0+vu5JOZfep9xjXL9ULwBdna1tswOf3w1mpQo19IRcjaROAJHtbKF+hbDSCi7vS038aD100gLwN+uG7ZQfgMRVr1QFURn9cVHuyb26Z9NLxTwGHUHj4tDhqXPa6uUDZBbTMGF9R+Um8Hj5ARPqearUCzBD3vJig5KF1yeLYcrGh+WBpXpyGD2wlqNWsxcppyRjKz88diapNRnTa21zs9oQpSSOsTfAGUTQLpQvsSaV3kLIDV07sCC4k4fKapYgoCCMeJmpNqAPP/6M7D0raWnNf2DOKMQdyWzbfn/upcYP+lX9+X5uEzBZv6YzEBQYfsK1Ah9FjHGValRvXCKHFFSgmxjcfUEHF8vxOHPG4ODKAcjLz0VHQo3Ec/EJE67BXpVP1rEz306Io1vwGLsQc3YF1qdDimMKJCcxgUSnYjJyhtHOHNG17PNQfNwOOf6lLJsEXjn2jR0mO1/3hgpgxXMlv3tQHcv8aFQ5lyjjuXFjies/ZQOnLQ5OWGOYUN2WtrxyMf0OA35tMf9WUgzkIY4uYeqNskZqV7jQcaqB9OTOUmVPO979hfZZemNaew+jBfMu9Ib3NsGds5XeAp+ep4qMyU+NErQiZShZaLfokmfng9Pb/OYBWHCwMOwvb1TVpcoZKxBQKCNSo/8y2YUOQiUrlng==","layer_level":1},{"id":"f6a6925e-fe4d-4480-858a-b25ee0c9c478","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"双因素认证","description":"mfa","prompt":"创建kami_backend双因素认证(MFA)系统的详细文档。全面解释TOTP(基于时间的一次性密码)的实现机制,包括密钥生成、二维码展示和验证码验证流程。描述MFA的启用、禁用和重置功能的实现细节。说明MFA与用户登录流程的集成方式,以及如何在关键操作中强制要求二次验证。提供MFA配置选项和安全策略,包括时间窗口、尝试次数限制和恢复机制。为开发者提供MFA集成指南和用户体验优化建议。","parent_id":"ad94de09-b7fe-48cd-9a8a-bcfa78565c2a","order":3,"progress_status":"completed","dependent_files":"utility/mfa/mfa.go,internal/controller/sysUser/sysUser_v1_totp_set.go,internal/controller/sysUser/sysUser_v1_totp_image_get.go,internal/logic/sys_user/totp.go","gmt_create":"2025-10-08T18:18:35+08:00","gmt_modified":"2025-10-08T18:34:59+08:00","raw_data":"WikiEncrypted:1mQkBhU7zMZB1o4VXQ0tIfCPNGelihAe1OHsrdClRIeqyrooM3s/X6t2e/65cFvRA3wivlmlEYtSHLhr6beRpNTaPYgjZfzEefiNa064drVQuuctg/mfwIsGR35APO/VDcX9ZFkziinBYT5GRdGH5ocOSmcRtk4JQHpWdkRRlQrMDfe7USm4d6Oy1bKF+J5efS6sSNrAkUe893l9uLmJNJNDuX8NQhkyhtfomjEQPi9Tq2PcSrOcevwppvH6NtuSalX5ypD1YIkUl7ZaEU/1zObuuUwph64pUX1VrHBDvkoVgczCFtDgixQzLQFkh/XRJfx8ifGiRBITvz03ll9cPtj4NlDkM/IAiuYfHRgnRQ248qf9Z/zug9sf8V/9kxC5a2c0uDkwN5ZEz9hBXultyzCfA/PLYJioazACT+wyP3ijM01HLzgMCnj7tORPOujRUXAtsibTde5zPgI4Oy3+oHYfDt2DvdaiaYXnnX9yTTFjKiI57aPg/ib/mTwwclY8DJAwdLBeyYDMceMfL8lm+jNCEGmKZ9CIckBZtPvoe6kBU7NwRYKWs7g+u9s8eBXs7AP9tG5j4RzOAWlrCHlKdfGxmluqwa64nimel0aXHugmUxB0Ge7ZclnFH0eP7+8p2tm+kmoMeRTeSJKeipKT2+Hxgjax3jvErOcMx8nV7srzcSx1hEyOVaJdzmiKetumFY7oJmRlw3d7iMbAX5ucyYDBLaKt37QwdApq5oN29uQqZk0j03vcas/2T2gV2G1Ob2jEU+U3MgQhM0ZjcESR6TfqVO5FjNVF10M+EGHnIsbiMD75Vl5inoVYX8CdrQL5r2Tj43GB4IfYDl9xD4dC7AvdBocGwVGsNe/N7DKKbNAiqb2DBsy8fVoqBBR0GfiPID3yImKzC/4ojNba7ZDhr188T7grgn6L0Wq5UF0OWcE3jZliEtTXueK0BaoSomqRtELn4g2fivTK5YW/cJf7OyfQTG5FwHXSIbeUrQlAjkwVcIg3JQ1+kdSylLxeYK6r5TALd0O+JvdCBPqyRIbQ+d6db5NS3SjCVlQJPnqrx5g08XCdGkU4pDyMtxAcCGAXpMG+5zmqMOMTdqJQ3S0myMT9yM3z6eG8PMg9FVk/jA1OcL4EEcHrU+sdjY8TrRM79veEkppNqBl7WquDxxhnybGGchFvshdWwZQjHVlZOvDxCQkBww0RzyvWA5HI/jCd","layer_level":1},{"id":"e7731430-b57c-48b6-b326-56a4297fa5b6","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"Kustomize配置管理","description":"kustomize","prompt":"创建kami_backend使用Kustomize进行配置管理的详细文档。深入解析base目录下的基础配置文件,包括kustomization.yaml、deployment.yaml和service.yaml的结构和内容。解释overlays/develop目录下开发环境特定配置的定制化方法。详细说明Kustomize的资源合并、补丁应用和变量替换机制。提供基于Kustomize的多环境(开发、测试、生产)配置管理最佳实践。包含Kustomize与其他部署工具的集成方案。","parent_id":"519aff94-32db-4783-85f1-071d6c314ff3","order":3,"progress_status":"completed","dependent_files":"manifest/deploy\\kustomize/base/kustomization.yaml,manifest/deploy\\kustomize/overlays\\develop/kustomization.yaml,manifest/deploy\\kustomize/base/deployment.yaml,manifest/deploy\\kustomize/base/service.yaml","gmt_create":"2025-10-08T18:18:36+08:00","gmt_modified":"2025-10-08T18:34:17+08:00","raw_data":"WikiEncrypted:WN+mr5UPYRkQAIvPkaSGEMgGA/r6qHO++eNCqp1GOm5Famwo2gREIdrRZbFYAcnVfzuhWGEYNkfqjO12Wdtn6OVY8JsLHupd9bhIih9tudckvDpIpZj4Ki88PM2Oi9v72mz4Hdd04K+K1QMYq4IH9xDjfo8RW242uY5KblUHeNf44iajTypg96u4nFfW7x4bKOUcMWVXoDEDC7J3vi6mGwl5XP1ojo5qwTFE+q/LU4euWP/RJuYV3y7VXwgXNWLnS7DyzXbbgmWexxK1a0cO49xAF+IgBzPUSRwJQDm1x/p2IaVPaKkVxEe7bgdLGaLrjO/d2UAmGlQXxJzTZafLJljR72QxsZvQPDpuTDgtPEClhtk55C76kYSlCtBZO04L5ciAnhrlH7Du0N88puX1lGxLJ4THQP5l8sQt4hvEcMQnbnfC9j9kGpCJKdcoyzPlJ+nbHvge1aEXA1UR/kkti8qNaYRau90WS5hn2y/bMqBKoww0+uG81JNWK3QSHXf8nZ9TOtkial1F6sqRgNNa08N4YuUtrf1Ktjyqb7kyQBzi/dQMasCJsb5lYySDv4eXApg/Kwhpal9B1omiTGg2GVo8lhpxGmUl8BnlWZDBVu0OnjjY0Jh6mlpqomtXjDlRfX49va7iImq4tmiZ12r7EWgsV8W6Pd8aLL0nC3jZOS/5hIcZ+vCU9ihoiQor074hyDtzDUFPRmHzXg1Oht8DYmiaWH5MCHj/kmpJDZrFw66nLe4IU3//RdL+HP3+1UUx2AkW24TKb1iPzflOWY9pvdIpA37B6IjcFJE8Gv+90T20Htw1nkFFQlG0QsNClNVbmhK+Ra9EPzOl3giD2IAzvx+S4oHbefenQqz3KSBNsV8IVoRbi6af9sQKjSjXOuqrmMefgdKvg7F9LJGWIvhxre7RilxpYZR5WGAwAKoa2G4qy1DUwj4OzkD8eH0r5TvowvEuCHHcYUC7gc8Vf0rqX8ZbFO6bUy3pjzRsgeX4YboNgQ/83LYdF/+YQ0Kpno6C6od0MbxPWfWz3pswD1Y8cSOuDHGDkx3pTdA02QFKnupx1wUtTzwTjy4n6B+/kpKURZSdaZf3N3YL9vLaiXkJWC21spdhL0UQyo1qnNih+AkOsbQmT0n3VkQtxOekCvPPAUkvmvi0J9ES87PKNzsU0GQKPyjv6SO2Q8Mgr+6KAeoim/7T7OH+x+1qLz9+T99A04ltlDvuEdmlMIABxVmhTPZXvbQOxruqW838L6JrHQZVE6i2iBOd2BXuFiSoSxNN","layer_level":1},{"id":"7171317b-83f6-4146-8818-b00d88d2b2b2","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"沃尔玛卡密管理API","description":"api-card-info-walmart","prompt":"创建沃尔玛卡密管理API的详细文档,涵盖账户管理、订单处理、分组管理等接口。详细说明账户创建、状态检测、订单提交、分组管理等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括沃尔玛账户Cookie批量验证、订单状态重置、账户分组管理等场景。解释沃尔玛卡密特有的账户状态检测机制和分组统计功能,提供错误处理策略和安全考虑。文档应包含客户端实现指南和性能优化建议,特别关注沃尔玛平台的账户状态同步频率和API调用限制。","parent_id":"0d28da6e-d972-4227-9fc4-ecf26d5c6b2d","order":3,"progress_status":"completed","dependent_files":"api/card_info_walmart/v1/account.go,api/card_info_walmart/v1/order.go,api/card_info_walmart/v1/group.go,internal/controller/card_info_walmart/card_info_walmart_v1_account_create.go,internal/controller/card_info_walmart/card_info_walmart_v1_submit.go,internal/controller/card_info_walmart/card_info_walmart_v1_order_callback.go,internal/logic/card_redeem_account/operation.go,internal/logic/card_redeem_order/process.go","gmt_create":"2025-10-08T18:19:17+08:00","gmt_modified":"2025-10-08T18:52:33+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBp9VMQPniJjC7MmBrb6ZdbLGBmfEuxNN9Ju89NloKGS7u9sYWjyr3dXMhm3kDUSOZPZC9/KLRjcFlQhIuYfLO7R3L1hFLamXrba3/G+Nzuj/bA/n0ZCcGJ9Dvu+Nuxym5NVi5sleNwjnsroBcq0g0gN7jqYlqXUpRU78rBE12fWrFZ1r1SGkcQ5G3XsL2baLn0N28+pjVfzwy+BupbPPYcsQJiZ4WhRuSzumI2qBhiQuJwD158bGgEdHMOXShVwCItaG3UMtNncIIQ2xZfu4QBG5haVlAYHLXLodz2eXh2KTAH+LDtNmL+lnjDSC+PcuOs4m0eNaH40XLWCr8wm/2xoHW8syTo8k71o9BL5tjPbkAWBdEqGUX+MSvYAqSImwkr8zV+bwlZB3Nn8u34UNS2r7G9nWjj0PAJDbIFdI75aDMbE7PL4k9rbqrUMnYsE+Zkv3t5kw4SgVl7kpaBujJTYYMAPSDwxci+a5k+bOzCBigKeT6/833XPzDZUhubutA+gAzsbuzfe0Bp717p/RGgii242yhpRT7FP9KBT55tplJfmyjrA36i2xNCzHUhmmJ7YrjcW+8X1Xub8JqcOtwch7kUcBA+lcela+Lp2fvDYA8C5OtkULqkus+CLNSvQiOmPuwb/FoxBv9zNyqoM/1hUAmKArkIGgcApFbz9NXzgpztrL8N3/vqTfZUCBIPXc+xNcKfucg5073b2evauSihZKEYGedMWHOplNMgmA6HU/ft01XhjNFzf/PDpj5rZBlSHF0eLx+QtVif7X0NuMVUpZlBm/Sc7z4eAM6s3LMQHu7plPbUmPvo/32b3UJwYbmE4dbfO1lDrfcHub8DtESVk7Hhcf3faojPEucgecblz3VioJ5WZJUE4qMNmKn3zIDTZ46pg985NGUdnntnViNlkLBz6ygGygmeKaevxHa2Oa4/85hNG913mc4XOv1RdZ2AcmqUy8DXYPv80lSkaYr6BjFW+VBDH5xqmUI77J12dlCHzfHYq0kDDUj/JXk5CKaUg2bvQGs2Dz+26gCfJb/4i7Ypi8lM1MScG0Fwezl99C/DaxBJ4zZ/xxTn5giHLPHJdqqs64z5gnRs1rGd9d8KDE2GYy5Rymp7U6khgtMMdspybPgYuSu9aU3nPBFpk0WFm/V+6UOWdxyBqncJvDQGvJ0SoKZo0FcV6lvtsrMfF/FuiGEYor4goIcRNvFgBiOcW6z4dhjdUYfrOrDWA/GV+uhvca+HPt7kOg4kWyHlgPDfxLqotFw1cImhvx2+yfYg7c8WiQ7UXMA/3zQuTvWgM0su3coR5fVgIQ/nLjbMO1htzBmHY5bB+3qCo7cfXmQeG4VKLx9nS1x6FEn9cd3vF1fYkftJ1yDINMXmFYM6hcXTo3F74IcLBnZ4RSUrYHIus31uTllKogCJuHbm3vBsJqXxYmc9qQSWxgojRPXyY1HOh4vcM2KyvBPM7cIPXxuM+peTUEFxq4kSCDM6fz0s91MLxiRy9O0jnVhHe09SQ6ZA1T0pl0m45y8bx8FHJWBG8XHsi3LgE3aojHYr4yOfFjLUCbogu3SrQwuQB3ec1+2lRtFrjXKZR+KJDHFbtSg8z0ZeMzLY8HIXtvDLETZeN+n7LU6tuRkCoSgVSoaDsWzBxg4cRcsesVzLbUVZ3mOCO6LKk5UHN9VwA4NuPM0GMImGM0JbzDddtEIp5AWn82LWho1gNrTmRb5j4VdNb++5JXh2fs4dHPY4VifkewjiM=","layer_level":2},{"id":"6c7962c8-8824-47d8-b89c-e12e2ab0e54c","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"沃尔玛平台集成","description":"walmart-integration","prompt":"创建沃尔玛平台集成的详细文档。重点说明kami_backend如何通过redeem/walmart包集成沃尔玛API,包括沃尔玛账户管理、卡密兑换、订单处理等功能的实现机制。详细解释沃尔玛客户端的认证方式、API调用模式、分组管理策略和错误处理机制。提供具体的代码示例,展示如何调用沃尔玛的账户创建、卡密兑换、订单查询等核心功能。文档应包含沃尔玛API的配置参数说明、请求/响应数据结构、分组管理接口、状态码含义和性能优化建议。解释集成过程中的技术决策,如为何采用分组策略、批量处理机制和状态轮询方案。提供常见集成问题的故障排除指南,如分组管理冲突、账户状态不一致、兑换速率限制等解决方案。","parent_id":"d49ad99c-afba-4362-af4e-ff689d5d94cd","order":3,"progress_status":"completed","dependent_files":"utility/integration/redeem/walmart/api.go,utility/integration/redeem/walmart/service.go,utility/integration/redeem/walmart/models.go,internal/logic/card_redeem_account/strategy.go,internal/controller/card_info_walmart/card_info_walmart_v1_submit.go","gmt_create":"2025-10-08T18:19:44+08:00","gmt_modified":"2025-10-08T18:52:19+08:00","raw_data":"WikiEncrypted:OzcNx2L0Mri06+ni3EZYPtfJLNsyrYI82HyHl2Uze3V6HVRrHnrR/zAu9X4/MF8+wiRjtDmvfbBQUsMyVrZLoVe07Fw2ndFvLNrct2Aj6eGECUBCYp7R61S3B4Y+hvV9Q4JWZJ9VXmj7S7AzIdGyDwtgTPN12QeXWddNScmrLGJR+i4xUkmJYb0gH1tqkMMgIJOkBgS0kp4W35of8tYiqPg1AEsY7UQtWisafG/Tcf3nKIksjzWfa8IFwbzk7ONbiFYEsuL2DuEdi6Qb8Dj6elJkBs8UohFPMZ6P6GhL/xD6qPXAjKccW5g6PGPbGuAQeDUk/KDWsreIMp517iRJ6KwG9uWo4w9Pv1JQAbXz1VO61jK7xLF1g0yuqwfGKNSXgu7RspOz/GzOJJJyim3elcYnwPxeEalrwg7MHpLI9axAT0Rpw3ucJGe162x49x8UpXh3dMwbv5onPNGZMJGSlkA1r0Zxt0squJVI1DcRvThVo8LqWfb/DpT/cnMS9o5etN2aGljW4pcst8YmHMz26NixB4J1qCcujBX5zq3gO3j4LdVwUft/TY0UUgk8+GWPT7ScRIscW2fQ4ZqkPD7b+8scY3Jyj8zj5cwxsuPj+CoApFOM7E+2vMEqJMgk5FOiR3ifpe1Wi5tUY9Oxi5gO8BZkY2kBDf4Wsi+O0LO8FMwRYX+mRC+vurUDehJS/ZE9oF0D9LN7EbFP1DT3H9meuOfxLgweGLEyEAvl1YOP+Wmx0bI3tS03IG00iub+slBIkaIw/icokP8iscEhH8R7yJIypFs6JABPer7FyFe5ReA+NgjpOMO4i9uU0ikaHPTnrx3hweE9+73c+fEMNYtmAWXQTnVtKoD3GNFIbFbrTEasYnt7LHcUTeQ8+pE3nNcLpnYgtAKF2GPMZxji121Otiuo3NNhn0xuPYl0exIBH0/BHf9SrM/Fl1K1MvjWefGpuG+u+kwYx8Ln4tJGFjlovXNBue04DRpSSSweVDkyRZ09evR1UdPNbw0eUXqMBE6WR1LR+xI7AdjMhQNlEIfsGUQkTAKIl7OdqiXWko+aOzb0NwMXmZWW45HrNvKqKCqAD9vf1rGQCR62IgIlRXHNv8hJvYELm5qMX0dQgNe/QMhPAE9eRF27Vf2rgFRXeF/lrWrU4/uCUQnWCWxot2ByhBqsbzkGDCtU8mbw6ZJafAgaUvTjJO9PlWtRMwmbQvDCrMdu0zfX3Jstvo7M5qQh5szfZHOmWYdhfBLhCgt+ES9SM8KCT+W38tpypaFDsyvVYGb+kW5Chaka+quKwil7m9+U/Vm3hd7IrZ6zSFk36cCDg1h9i1QXf1RVWZoI5ou4Uqc4NJUy9I+EknWCnKtwc/qZonk59yISaTk5RWZx/PMu2RgllCz6dpufR4Wd154rdJiCw0aKbSdvG6o2gpnFaL4RF2YiEZChOg9NLuFgImpiYt0c7ND4vj8MxGflwX09pWKJnVHxNX7eCbdkC9rUX82bD90fgosEcQ+lEYtUY2/QVbGyDpNHAFUPUT2RYVjWysoqM8BKAawuBKw44ADOeZMgQ7SbsUKPzMet0Anyai0PUBDKB0JfXPnAxjIaQN6CDIc8Cg/ZHQySooABrL5cf8O35gqIdYMvBd9q4dgmSBwITyTOxQyrin2MVbfSKYSrerIPUP+PtOBz4uk7ccLtZcwAyhsJPqvMNVW4z0Dpy2t6idwrzuY+4+wKe+iLAaJ4OM3yubgDwvO2CT7+33DAzKqCrRQY8HsA00Qmdu3bM6k=","layer_level":2},{"id":"f7e484b5-92f1-43b5-8bf5-9cd33a035658","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"设备ID隐私保护","description":"device-id-privacy","prompt":"创建kami_backend设备ID隐私保护的详细文档。深入阐述设备ID的加密存储方案,包括AES-ECB、MD5等加密算法的应用场景和实现方式。详细说明设备ID的脱敏处理、匿名化技术和数据最小化原则的实施方法。解释隐私数据的访问控制策略和审计日志机制。提供符合GDPR等隐私法规的合规性实现方案。包含数据泄露的应急响应预案。","parent_id":"e130f1c6-f0c7-4f2b-8467-d00341dffec6","order":3,"progress_status":"completed","dependent_files":"internal/logic/restriction/device_id_record.go,utility/verify/aes_ecb.go,utility/verify/md5.go","gmt_create":"2025-10-08T18:20:00+08:00","gmt_modified":"2025-10-08T19:05:48+08:00","raw_data":"WikiEncrypted:W4RZ6LTz4rg+RteR0TdbvI31XMJ25/L+57ZIBwtcM5REl4fdp7GotkDn/eZBYuqu0ocnWyJMPttEZL2wffxtzrGN4Ui+cCTKiBWUAo/YRtlwF0BHrV178pSyDk02tHmtG5z0OE3VwCYiJAdRPQan4N5o+RFMluEyZnSqhiMHlih/kRM+hUbdobEMOB8KEMOuGBsv1+stUGRqQp/R+OuGBcQ6wh0+z+YLolv1UKhmH6UC3FEZhPTSTvLxcpYf6/vCfUJS0zOrHyITk4yG07g/Y3QV6o+STvgQTbZ/4zfY3fQbayuef67C4oGqkMILUajosDtVQmhIM9zAaG5H7BVxzBKU8EVyco3rHWCjrHJhCGAqVuz0eu/PIrTAwib9TMNCzC6WAsIZ83KJancA5x1IL3mpFzYPs14z8bghK+/yXtTc4jVGUTsmUvRgt/Yy49S+PjswW2fOlG9BsQV6ztPfjhifouB3UQkAwx6efk3f425Rv8cntFg6hJ9DyVXcYEbQVixu8LBhSoqvm0DCJPPffQ7ZDVbA9jAtVYbvgUUP3SvX4nVW4KfZeLG9YZ7Zd8IYYGYL1FxlTYFSA6m1377dSYaNf0aQA6fziWmKxi8r3iAAEg61ULS3H1pURSRFOBwyDfEvLG16/ztt3NqiMxJwgBv0POoSVRSQ4M0kUivWxi9Jq0VHWdQ/ZKqwev4OcVPqFnDL6O8i01Phw3IqdbK5q1LnCsi5Qgxm+t9H/wmEi6TcUJcXx7r8lP6KY5LLA7qeq2jb351tTLZ3vdwNOauB0hobuExwq0nlPfrSlZxWwl5rhX4iRD+kFFZK4iYXK+Sdqi2wUxIZDDrtbK1HEau3mmrvVrso1VXwZIe+w0Xj1y1iPqAr1Xq/8v6/WejcGriMp7ciotcoeHcOy3ffTSoV6lnAlTlZQ8EGETczBAGi96ReFFLjbsaxqqvtOmuYR1WV2ohPO6DkUKh3GhGUNNpuIqUpN09dkl32ETskx1sUbTF9VkP0fvDido0h1Me/EgC2","layer_level":3},{"id":"e5c8c7c7-0135-416c-a55a-80655940b9c4","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"天猫卡密回调机制","description":"api-card-info-tmall-callback","prompt":"创建天猫卡密回调机制的详细文档,涵盖Agiso回调、订单状态回调等接口。详细说明回调接收、验证、处理等端点的HTTP方法、URL模式、请求/响应模式和安全机制。提供实际使用示例,包括Agiso回调处理、订单状态更新、错误重试等场景。解释天猫平台特有的Agiso回调协议和安全验证机制,提供错误处理策略和安全考虑。文档应包含服务端实现指南和性能优化建议,特别关注回调的幂等性处理和安全性验证。","parent_id":"c32a3e21-0961-4618-a256-ee1396eca8c2","order":3,"progress_status":"completed","dependent_files":"internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_agiso_callback.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_call_back_order_manual.go,internal/logic/card_t_mall_order/callback.go","gmt_create":"2025-10-08T18:20:23+08:00","gmt_modified":"2025-10-08T19:06:43+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBoebvwpaHfPwY96ZsYHNOSB7YbW4lEnnUYmwTTOYlPJ4vFdOgmYHRlja5WAsIIMSiChhgejNqh98FydD01AfqU7fcD4S8JSlDh3f2l6XDHMsJkUVy1hXRwgZQCn0Ezt9vkeKjs/e6IC3CYyZvT02aI21wgkPUt83TpGKLP187ArVUlAK/TznGcJjC4y7KFkDTVLOGxzn5fvyuCOQecg8p3kMIUh/K5A/GFm+jA+bb6+jwwUhHWS5JnpXJypGX2mX2+YEhLShHZ+qSgJTL++AkYqlCO7jAqme0get6lTfiYjoGBTpCAF26VECJDm0bdEVpHHk2zaeUoIUKBAWL9r0zq0B3tv9iWLODIzmCL4Ewosw+ZhpaZgDNpXxD5/vlbOTtBMz3d8Cdz26chtvCpU+X4Cl4FPDhiJ/t8zHDKjsoWGQd6yWmTAujUeQT2VHEGO0CLznXRmj6phog/bLztxYbcwoknZzQ7YRe1BXgU977CAMyaLJoyYYniWcI889Ml4GWFIwmPvDPSnSU13PRpHgJ6nYWr6LEbFRMzR4N36PLzyTIEbSOLhLXhB6DTi1f5oC6bWAFp+S7bXi4EzOePVFaa1sF3xwhEDpbl3LCUoXb3eYJrfFEmw9ON8TQrRfO0dD0pMCsJslU4/kymto9cNk3wF1AnlZKVdPhgKjA5nISWn4y3qEd0QYqHlkn9x3Tj9p3gQw1T5eK3cjxz73UkeKzhaA7rm47nu5162jt63UFPieRudaKG6Ru74Slq8kWgiOhZeNlkdbJiMcjXRc2sZmDgzerXou+3Obqykaka2KjnItdiGnhETAK+R7XYjpgNZs4xh8JG4buz4qA3o33fFpkJ4X21y22PfMdINjUWhM7lKlDHNGWGTKN2Fo11R6gBqmNKHuV2dwb29TQvh7rM1MbVaCQfRUx4kCXIagpJuumDlgQJD3Q0Qjrja8QDN37QrwzFObq/UkW2YRIJQvgN0CVJQziPS9kkK1qZ/wKy89VuCrrZ7vOb8Cu9P+vXdXkZHbWCmpEDxNj8/6H5LMKhjjbs6rfF/sI7wQpscsl58UgmG6dNNd0z9JClD/IK7T1tnQYcI0AxI+TiUiA5omRw2OAxAiT9vVATsG/o7mh1tRzHFX+mve+Eaubn12x4txqcvHN8fTp5qf7dUlhox9Fu+9C1d/Y+7ua7/KC8xdSRT1WLy1JCBXEDrCeNt7QcKc/V99jFxEmybhld5sQrweYYjqNBqGNuFW1KMzjLSzkCvs7qunv5akWJgCnq5vRPqVo9YXdPH8Olxatyx3T+IR4SHo2QHov7891HAm9HqPoPQIeCmPJLkaWQAK1LrAHKeV6DrsTccJatqOd479X+bmA3H0lf4=","layer_level":3},{"id":"f72acdfa-67dd-4c2f-8c3f-17f119b4be62","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"部署自动化","description":"docker_compose_deployment_automation","prompt":"创建Docker Compose部署自动化脚本文档。深入分析install.sh、install-test.sh和install-one.sh脚本的功能和执行流程。解释这些脚本如何自动化执行docker-compose up命令,处理前置条件检查、环境准备、服务启动和状态验证。对比不同安装脚本的适用场景,包括完整部署、测试环境部署和单节点部署。提供脚本参数说明、错误处理机制和日志输出格式。展示如何扩展这些脚本以支持自定义部署需求。","parent_id":"58118687-a7d8-4b0d-b788-36481cba182d","order":3,"progress_status":"completed","dependent_files":"manifest/docker/install.sh,manifest/docker/install-test.sh,manifest/docker/install-one.sh","gmt_create":"2025-10-08T18:20:37+08:00","gmt_modified":"2025-10-08T19:06:32+08:00","raw_data":"WikiEncrypted:h7ADvj4WLJHyulzCl+z7kJNHi1rj8bPlcMDc2oqYiBBB9d9qOfkyH8LrF6EG2Q+eM1G861Cke2aeXMWBKIHmIfk8qnnXIkNGF44BMoK2xo8tqhB2Q3qwmlBoetUgkgwa2T78PgfgYO/dn1F/QxZfSL6FtNPIV3kx00w1lLb8+ZJL7vsA4eLT2ieTW/24xeDu805exuttMjC7Yw6NbHRb/Yj5XmzzXj5utTiAt1HG5pZszLt4xGVf6C6H6T6gXZ/9gpTCrrqOWsc+GsQFZnb1yAb7xXQPbLZf+uGGBOO3NLzB9uhH7uce9XgxyYawq2zqct6U4uNmE1fvKT8a/tvt/mllajWpBJ8Kum3N94MSOq7kNwzorrV+uUC21z4LFx4Dy8KPQPJU70I3IxfnXBX5Z4/0XpDkmU7+GjswBDAb0nDk5mveoEDxbJGWH8A24htH7LnKqRBGuX+0pVWDGQd5kP7TC2dIJ86FgVI6HI2PzrWPSg3OiW7XbV7wCVGxxXr7jgK3i/BSZZCU7B86R+eBemj+GkGqBBirtEslxAchSPxOlLCMmZfKn3xpMyPRGk+qyvqBYuteJKtgsMbn6vISowhit3nU8hRVbpfmBAaaOIewKafx5OOEr450ugNwsizm2IGHshwcf3UDHN8DlBkz4rBjHWifKKKHzwejgZaLIEdWJJMMSWB6FNeorJ1Uc43uwvthBQOiOzAyqdtVs9OJMydzNMDXCyQr2fEtrJttKfXRM4scFCvf4ph78vqqzZ7zsLq+ZSwi9pcudBdRTpJToQRHDOqVq06TBNHJ47wYvo89b1vcWoGSLtwgomkrT3QuYlwpaSRU0mQ//N5E01Lq/AI5MKJMgEhcY4A7mpOaT1Zob60pyt62uYewFQZzmSjptDaOjZplIb37U7FQbHDSzLSqwfV+4PZ0CTq+yzraNK/CBfr4zDdSYxbRUAtOhoHPFRPeZE1qKrPrn/Dn4D+1aAUODb4ov+GlHyHLjnfH5V6Kj0StrTEbu6fIqXO7U8zJvtxpjo5vv7B/IfS3Yy6G46CLLtq5wTCA673BvZNc3fgbs8olWBDFQkWS7TZgjy2gz132pzOB/SpvY1pJq5RMon/iRS7G84tDq7nSwtrSuyFMMjYohF+4CyvFj1AQCwLo1bbore1aDHq51xbJqAG0EX/1ybieglEHKrOho6z9VQo=","layer_level":3},{"id":"201b5004-c469-41f6-a407-c98892822b49","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"业务逻辑层架构","description":"business-logic","prompt":"创建kami_backend业务逻辑层的架构文档。描述高阶设计、架构模式和系统边界。详细说明controller、service和logic各层的职责划分和交互模式。解释核心业务流程,如卡密充值流程、订单处理流程和账户管理流程。记录组件间的交互、数据流和集成模式。阐述关键的技术决策、权衡取舍和约束条件。包括基础设施要求、可扩展性考虑和部署拓扑。提供系统上下文图和组件分解图。解决安全性、监控和灾难恢复等横切关注点。详细说明技术栈、第三方依赖及其版本兼容性。","order":4,"progress_status":"completed","dependent_files":"internal/logic/,internal/service/","gmt_create":"2025-10-08T18:17:58+08:00","gmt_modified":"2025-10-11T17:24:50.7531479+08:00","raw_data":"WikiEncrypted:nTJcmZGR4n7nsIYUWzxCEBy0i487lDHI27zzkO8s4GsVEQVKXcBFabpKr2XQ6XJKtlHqbrE9PVqIMhgcfiOvMabk8TbZAsCaWeJzv2ccsAsgyCftb/dB0tmYzG+Xik0ZhR3UW+81zieL8Swo8dtHFHP/c9V/DChKEHqlNLt/LR+LdHQVeMJt8/4tYX7Iko0b2FfNPdbFFEDYQMdQ0vqLHb4uA6e5pDDVP/pbzgI7v4vovEwZVCBhgJwUhQNqhzrKC713fo+znzpLhb0QOOU+J6KBBVBHdePw5GXI4Glzq0YMFNDk0/s9wM7hOrtqrm0NAAWfXUBwxUBhSEMV6PGimLxIkDpIHcwWR7VIdiWxU2TUdPt+tMYL5Qw+ko0xAWAvsaWJG/clR3TJuaNaxMPMaJjVkyTsWdJF3Uf44Br8oAmuaOUtHrFXFNTHnCFVnhLjX52H48ibArhi11KOqoMywYi0Um1gSvxkRkyRfskLrif2l+C6XzmPgGCONPIBhnoMenfw4JEkcUCPK4V8MzAs6kHdEPjhXO0eP7NTViSG2iLZjmxvySpPhXUnXo5sNgosJv7jjZHrN6ZSRcESQlbAR/lVpZdARFMnJeqGSZ6/BX+dwok6Ys+Ac+E8PVVgBJ6EBLHL/i/8LmhYYfgQebhhrQUTbWb5LpQ6IVHVvL9uPVfO3hq1iUqvZJamUbr1zwky/9gOtOKXEn0uQia6fPE6Dt3Vf/oeECSJgJGtBL3vovteGRYsVpL0gD1HzN1ONJ6+kOmb/3xP8QPIX2xqLNWWDznrjiFMfEzrYtwGir+o9YtwnrHAyrJcLWnD7az7h8rqzeKjNkA4f+8NykxjDPBfoJExkS8VBhcLdSaayXqTzY/H9fp2zSc0Xm3wOMgTezgq+0TRkNGw66dr3zlEzYvcITtn/eTfqBI+PtHsUTPKgBT1uoEE4p3thhe8YY0Ip0WXduO/Aa5HSeM65Lj4jBV0GWwUgMHW10C/FsXZH8NKkOBiEdiyGeA23AiqtBSzAxZBPrD+CPYoH7wuzHuTQL8BjhTsz1pgHQA877ThZ9Sdcras/xe9VywZEdJcihcSeWFXCRQvdJjdO9V2ZAOAiu+jsvI3F6yiASgTYm8Q1riiEHCIisg96Ex+YV4Iw13sHLmgcuWi4fNpQxBVhg5uCV0zstSpB8oEgaTlLyzS3LynZyBV8O399OT0NyXUVz5pl6OS/fUlYY2BUIeBGbW/eRetlPdDxGf365lVgQIY5qTHGetY8bpSVzHcBYg44JuR5u6c"},{"id":"495d1fcb-e69f-41b5-b893-4efb8ffae28c","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"系统认证逻辑","description":"system-auth-logic","prompt":"创建kami_backend系统认证业务逻辑的详细文档。全面描述基于Casbin的RBAC权限控制系统的实现。详细说明用户角色、权限规则和菜单权限的管理流程。阐述TOTP双因素认证的集成方式和安全机制。解释用户登录、登出和会话管理的实现细节。提供权限验证中间件的工作原理和使用方法。包含权限配置的最佳实践和安全审计建议。","parent_id":"201b5004-c469-41f6-a407-c98892822b49","order":4,"progress_status":"completed","dependent_files":"internal/logic/sys_auth/,internal/logic/sys_user/,internal/service/sys_auth.go,internal/service/sys_user.go","gmt_create":"2025-10-08T18:18:19+08:00","gmt_modified":"2025-10-08T18:35:57+08:00","raw_data":"WikiEncrypted:gWB8HBj+8+/15rQhXgtMjJxill0Dm7pr1ti6WpojZlBntM5mCZ3svI9SgZ2utFjCFZC5Z+FEI6aOz5Gj4A3aFbuhD2XPZL1bwaqLneqa1L4WLh4KTENL19+xdVNs4RhZjD6ZJ7n1M9pktzRYdEXoPx+WtK62h4BKAZ0CxmcKe+iDWgkzPAQdKVBpjhDesmHLcMHBH7+qeVJ7Z2lQF9Tg9AnP2CTNteWT27HOIOr0I3SaYM6k65n3Z0vySmltobX5INahUuaU18V7hzjdbCpc9e5UHoC79ydglrCuB6262LMQvfH/HvilWFq4jVC5YJbDO8PJk1Gfq54roM0WSjUbhYxrGp/UbDq6+C5hqExt5Y061mJXxmclsJBxX6zoO1P8x1PcEQiNH5J9mCgXblQrg3YrhaFIyyjoVfVVRHz+uT2SeSswzwmEIOZ86/OdiSf5Ng+xT7V/fkPevbgJVr3RkKckk2n5GJwGVJ2uBXK6ZMZor8iMBjD7CDIrTCGT4m/YSesNCfTYm/qJSandEHXkNe5yNg70qSJ2+S5+V4yIIxQPG2D5dIt6cKC0ppsF0YpybkQ3ONoINWaT4cov9e/FZssbGYOztwGx2gb0RNdxoMWQx2d6tt8NEgRvP+bidzO/SDBouGelKXOmdJM1cQ84ofFHTLPNxb4HbzIgPPLAOlNQyG7wXIrR+qRJWn8+b3laIVEpguIhUuWU7jM+tD3vuePgZnnuJV+d/zI4U0Ot3Z6Qa7t8993FQxzdKPU33UYh5JLxnLI7JwzMkncaT8Y4yLk2QLb3GqxdlUfxuk4byEiRjK8QdgorcuF99pGDvJ/VCV7m3Yc51cF87OMVYx3/fpuwfTPdnTOKP7hAdcvghET4DdWsBchrPEE+3FNLBfpemPgvq6xcqnVujyE8zRwP9JFlEuBg7aZggJMXhGx4HI4xlKTKIMStOyBJa3O9u1VsMRFpdsj0ubLd3wJx4cgxon8lCNOZeQ5YTQGBbkl9/AfzC7Y6b4mOf3P7otMfSeyaDLBHqJJGNHZ63/k3NmTSk0YPvPM+bFukpsWqU1417uUFwYSb20epfNpwYYt6O+svxIDRurYoRkjNu9OsbUIP6Q==","layer_level":1},{"id":"c31af7ce-10ef-44f2-9bb6-b8772f1bc957","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"系统配置数据模型","description":"system-data-model","prompt":"创建kami_backend系统配置数据模型的全面文档。详细说明v_1_sys_config_dict实体的所有字段定义、数据类型和业务含义,包括配置键、值、类型、描述等关键属性。解释主键id、唯一索引config_key的定义。阐述系统配置数据的验证规则和业务规则,如配置项分类、权限控制等。提供系统配置数据表的模式图和典型配置示例。记录系统配置数据的访问模式、缓存策略(如全量配置缓存)和性能考虑因素。说明配置数据生命周期、动态更新机制、保留策略和版本管理。详细描述GoFrame ORM框架如何将系统配置数据模型映射到Go结构体,以及DAO层如何实现配置数据的高效读取和原子更新操作。同时涵盖权限规则、角色等系统管理相关数据模型。","parent_id":"b8ba5dc4-8d15-4b61-86e8-07a963bd3fa8","order":4,"progress_status":"completed","dependent_files":"internal/model/entity/v_1_sys_config_dict.go,internal/model/do/v_1_sys_config_dict.go,internal/dao/v_1_sys_config_dict.go,internal/model/entity/v_1_sys_auth_rule.go,internal/model/entity/v_1_sys_role.go,internal/model/sys_config_dict.go,internal/model/sys_auth_rule.go,internal/model/sys_role.go","gmt_create":"2025-10-08T18:18:21+08:00","gmt_modified":"2025-10-08T18:35:37+08:00","raw_data":"WikiEncrypted:gWB8HBj+8+/15rQhXgtMjHo3Cfllvrq9dj+VS2LjLU+XipU5iS8bjftNtXgNkjAUuhoBjsDPl9BjrKUtcrFkS+Ysf07QELqCRkUaE9W1TE2R7c8Pd1omOAa/LrhdmLcUIIP96HDPywGNUVLCkClEpXPVZjr5yV4lRUGn6Vd4AT2Kz1qx9Z60YINVebiHZjal1ZSSIEFUhg9ahC91CkdhbkfPsFPYo7zMmbdYpPuVWMr6ap0pycHPC2HK/qMDmiRrncLGuHUk1wvb1uo+ICF2w4nK1LEbdLGMdBnwT4IJT1/VKtcxo2/pYRnXc03fs9K/Ygz4/XEi/NkXdxC/VqdAyv4d1CfzIzJSvNlEQ7q29GzcswCh1BY0PcFBwO8cpevtwMseZAGbVXoYQm4DvJWiuPzb08JC731Ube7hPRcijJDUEI6FzXVqcu7qngW0DX7qWoZkFKtveIpW9OxNAeMloxr/k1e3Q2+eIsAF5AUw2OGwbpBtaGsu3uOQreqGvzlwo++/8n8bml/QCk5HQT2Y5qhWAOEY2IvCK1OMB1ckrWn32rwWkPhSQn0+oWqtWFkj1D+Y2FNRZcZCijgId6mwgVLXOClH97C7v4Hm/CWvUvxwcreNuYjJKSlQ0GFwWBBvXhrlRSHF5zBKqux7NwYZsipPHjNF08UAhCOLm18HxVfpYB+awS2Axa3d3fK79m/oZfPUfyNc82Y8bPFwNUP5/hMSr/4qU+EqzK6RHaQ8tbdTzzfDXEwUCUK/BwE4Mjl9vdTP1mfkfjvfb3SokJ+zqi63WemXEQnH7NGSRFNxNdGMFRNKzDmmrApwYZXjztqqdDxgssTXGg/rhy1dSGYaS6H+ToTGp8c9/MH6lKhx8ZNdTBMTdbG8CibYcK9suxALPynvOq1UqP6oqOXPpfxfgOce1FzA4Rrzq9nTHIQMnw4QCdV9/126aBKVxCPa3jLY8mBAIOH0B4YZhqyBo83RfL/4vY8G3VkWs5Zo2NJu20B/7M5Qdyw2ZtirWKJHPE8v0rDmPA6/9DKI4Lv3enLKeIhMIAqZebPwwk4Zh2wA6oHlk2esnHqVw2Z/5BadsNJFgBakyMMnkrUxaesU/frMcRJ1jLsN8YHKOATLE4F/RDg0ZwxOSu6zy1LLm2k6wpQWgegMovr8kg0Riq+YHAdz5ge2gTtD2DOGpTfbHWVQlwXDER72hgcmSJSy81lE/TLcsT4ONAPXTLkDAXTTJOv3gVnQeYvISQ8Cvg/eqncCsIKeDVWC0QSg6cUAK0GzhCSXJw5GVzKMgyzelmKtqiI/jX/Q7V3CVMGP5V56R4wC4eVlP4Au2POc5fEZ7FY0l0x6nrL0H80Sk4o2reootBU5tBzcE+u5f7MhAfetwZjOAzh36C9gdNBv/Ifrz4QMZRDaVmNunuMpHmL1QXPGLjflQ3YHGIWlc19NJ+isI17zfse6YSGGbkSmo7ZZjYkvhWzpUIqTxaqRNav/ebsmWVlxtpJZiplO2HMkHY6acUOBnYJY6HbyUv0FGySPMvwY4nPGH07tRkC1AZV3qw8LLsbJn8DVFeJrKAwJctcsn5xqfaET5PF/NPt72tuGx/6k/RrpkxcR4lelfXNeV9htOdisaPesSw4Pr7lvTDzSMpA0ed6iRgFptBW51AhCUXUP+bK9e+gHK+a48LCXouUt4FBb8gMCDgozFYPIcEQto55NRVPlyQg64fORyVH190r4M8KpnxUqe4GDrywDZsH+6MkikYbcwibrb04bdsPHvRd6xSN0OZuGzEo1TA9sL7Se0hxVHB6yvpgFJmFisuwHEqIvZkoKgCgNlAkkYri0hOJVS3DyuQ2PKQV/hIHswEOBdcoCwbrq4wjJqa0LN3BrqrSB/9Yutb/OS2vIuHtpzhQxowpYZTlb9L5YATj9+RTo21L5H/qdRyYYhWd2Zk0WStnU8b1MUKbLHRG8qxd9PMi21Ro=","layer_level":1},{"id":"71487087-d57a-431c-af0f-f9ce8536c80b","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"风控限制API","description":"api-restriction","prompt":"创建风控限制API的详细文档,涵盖IP限制、地域限制和用户信息收集等功能。详细说明每个端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括IP访问控制、省份查询、用户信息收集等接口,提供实际使用示例、错误处理策略和安全考虑。解释风控规则引擎的实现细节,包括规则匹配算法、缓存策略和性能优化方案。提供客户端实现指南和性能优化建议,确保文档与代码库中的实际实现完全一致。","parent_id":"693df6d5-abb1-4b0e-b0ee-fa0cfcf10ec3","order":4,"progress_status":"completed","dependent_files":"api/restriction/,internal/controller/restriction/","gmt_create":"2025-10-08T18:18:22+08:00","gmt_modified":"2025-10-08T18:35:55+08:00","raw_data":"WikiEncrypted:C34GewOyK1SlumqKiPsSg/Aj/+xQhog6A4luCmyduH9mLQCMR1txLqnqXtH07QvTvFpjblyIOlgLn8a8ai3D7Ewm7QQOAJqH2lPNcwyVaNI0R5AYYnLv/ppJRFtq4rzXS7bs6R9WuJre+34kpQbKpXoIpVWgwRPZYMpoRIFHyVDRhlKppZX2lYuhs5kJJ8K16v1qjWj9EPaec6JuobLvqnJqXTaspOxb6DYL6t/m3ee8njSnivlA5TBb37QHmL++obh/Kk5h+4xIJSe21L4nnMWNpRdMi7z9OddGgJdQ7cqjcP7zr5ABy4IHsnW3EFVdvfC4nm4/R+qMzBqawYOBP36gHMj/TSuwnGCS8ksNGcXZEP8EyUKFQlgl+jB+M3GefG6k7XcYpWqRoluloNsAXEVElsPfuwmTgyYh5u9u8bX3tLoQ34dZsr+GxKBIlEJ+63G0NlMMECxLCro1+wlTlTWYgRk3mTd6Q/IpJs/8ulLW5Wp37GDVOTkmUAOcljgtKaPqx9SaC3n20GBxh4ADqnjaElyzJQDD0fotl50FyTouwJhWwA7R/eIRnGvLV2TcfAzUFza6PHYAf93AqvaZ42N1PVZ8xCqnUrKUMm0nSk1kszj0ZOdIDaTB2K5Oqdft+dEKlNql3mqK5Me3nm2U9LT1LiR0/nYzGTyPc5i0+rAQH8IuTDjCweeT/XzOOos5gzbbNI2cNK5+zPr5FFweiGme/ZpOI5xUrO6GaApl+nLg1RNWcO/9CLtQ5MhinBOcPcs5EtOSUEf7B46NuVQVA0Ng3iG6lgMtZ/iVfcyuMJrScMVv2LLyTdeKGRtlCn5Nh434nWxxoWacpf0Lp/+ohXJzuadHvVjKZWmqJt6TlrP/AlI3qMbKvISLZKY8b3UCdwJmfGCB1eCKS1rQCLNGKIeRuEhYqXm+8ENWPskUauLGtiafNJrxP3/OUVrYJ+ZnpCC/CmxXAjYKn2517/REXJbpMv49iNGGkvnOfo6tN7DcJVykM1JV4vwRALkz/d3c86mJq4sRWuACN/FXwolQ/jzh/NEYtylpIQFu6vihdAyH4nmm78l9BMlWQqqJ7dPRvqlHFA9pmbti/d7oWwTJHcehGaRHk2wcBAQoibim2Zw=","layer_level":1},{"id":"4a2f1ccb-e858-46e2-b051-4b553c1e2f48","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"Ctrip卡密管理API","description":"api-card-info-ctrip","prompt":"创建Ctrip卡密管理API的详细文档,涵盖账户管理、订单处理等接口。详细说明账户创建、充值配置、订单提交等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括Ctrip账户Cookie管理、充值订单提交、订单历史查询等场景。解释Ctrip卡密特有的兑换配置机制和回调处理,提供错误处理策略和安全考虑。文档应包含客户端实现指南和性能优化建议,特别关注Ctrip平台的API调用频率限制和数据加密要求。","parent_id":"0d28da6e-d972-4227-9fc4-ecf26d5c6b2d","order":4,"progress_status":"completed","dependent_files":"api/card_info_c_trip/v1/account.go,api/card_info_c_trip/v1/order.go,internal/controller/card_info_c_trip/card_info_c_trip_v1_account_create.go,internal/controller/card_info_c_trip/card_info_c_trip_v1_submit.go,internal/controller/card_info_c_trip/card_info_c_trip_v1_order_callback.go,internal/logic/card_redeem_account/query.go,internal/logic/card_redeem_order/order.go","gmt_create":"2025-10-08T18:19:17+08:00","gmt_modified":"2025-10-08T18:52:54+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBsi+sn5XqP8JBkcaC5gJFHJK50Ht+k6VsfsVf9W/46ar2nyfG9aPfFuj3OqAvsQ2zOP7QpzVJoUCtwLglIP1GqQDfx2qCBmv9YLB3RMP78a9O9+gzXuyc6BxhwnZvmIessag0UDmHRNFDHWh/c+FW5GBTkZyHeFnwgXxp51yK06aXkjMzyn5eA4CvzR4McCvvmNyaoVacg1P7xKnbquq9Ia9uZgXZeU3u/ggK6JRkZkCVh1Zumh1AkkQGrdlfCed38c0P9WvhTtkOtaTUUgqVgV4kPOHQE7eMtvhRDXeWefnUTHsLeLBkhUnsPQh57JVtL9penKtwtZMS3ZdxKC7mBE3nQcCUFLJYE/e35/lJQB9x5nfbWUa7jPIsOajHYZdkiCN21fYL0V/Q6EPksqkB4+mB69hkPbaNChKgjBxEXViBKw0mCVrIPIm6A/3XUaOmVerm9BMmuw3TjuBiNmedKD7KGcoTVWpcKr3JD4Re10b1RuYSXVFtF3QNJf42tGl4STBHVWLQxdDzzUSzZ9a5V6O8L2nlcWzwNo8t5ea8aypotVTvuXGPCGdOfAj0oMWRzyv3UkWfkvVdqjQGiq/Awvpzm1ehEGWAdHK7Ybq2QiH9KFjzZE/zHCQblXhwJIeHrIxd42fJnxmgtzKtKkKKNLwubmC0ACReXOzkEeq5yqyl+k4DFST4612/ohoShJdbmS515Ktd/p872+kvMkvRdFL1nZyX90FSeEW+NHE2msG57PUE35eBr2HDzOeZ0aKZG8hN1kM5bx216br0hSytYUwrBk1+zBfBAxtFpFOwo9mCX5lR9ZIm3wEDL3IXMIThBbX/zEgayD4CyED7uNP7HETLzga7E2YIbK613r7V+Oo54uFxQeMZY59omb87gcgVD24gyqVYjuQdHbkY3PyT7FWdCZJgHNetaXc441gHpJadv/HvApPekkTG1aALw+qVPjAxTw0WkWMAtkqHmzCchMN6pr2UxFzp0CutbgFkzckVkztczx/MtG62+q82XL5gCUx27bTj2k/pXL7ptnIvS09Kvo4u2HGl2yTmwOX/mk3z74LDJrli3RhwLbTLZLt+9oLIyKYFJGSYgUTt4PZPAfbOt31mm2iaC9zx4TivF45d7eBwjwAxXRGJDA/0FabI+UODLt2C6Yq6FMYgT/PiDqyGnByH1VFg2sflHRsjcBjn1bEhQN8BuPrQczskgR7TIVEfyKuvuJ8D5A77vM0jeNN4ItGIwpekB/dEYYCz3ImYgXEpjtckpM8q9eCIXdL+/sNzWUMVwYXZBRYRly/8cs1ikZzbpYJT/174qCZJz/wVZTCXo1WXL+WdLu4wbkwMe0xX5kysB3MglJt2NEXqQ9PDSXap41Br/jR6Qx/2WX2+yXerLvNXS8uz6duY4F6EgJlTzzzJ0MatuhpTNRKWushr7zk55Lhuk0GQ9V+hIoTgnmGHMfVJr3sMv8H1ugeKslOpRJkKU08CEUoi4C91/YLLqEodWJ0uu2U4CG0qf6xofEmBZFmte09BxNSghJqqhCoITeAbctcbJajy4hgq24=","layer_level":2},{"id":"fd83f8e3-9940-400c-9e6d-de5f5af056a4","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"天猫卡密工作区管理","description":"api-card-info-tmall-workspace","prompt":"创建天猫卡密工作区管理API的详细文档,涵盖数据同步、配置管理、状态监控等接口。详细说明工作区创建、数据同步、状态查询等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括工作区数据同步、配置更新、状态监控等场景。解释天猫卡密工作区的架构设计和数据隔离机制,提供错误处理策略和安全考虑。文档应包含管理端实现指南和性能优化建议,特别关注大规模数据同步的效率和可靠性。","parent_id":"c32a3e21-0961-4618-a256-ee1396eca8c2","order":4,"progress_status":"completed","dependent_files":"api/card_info_t_mall_game/v1/workspace.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_data_sync.go,internal/logic/card_t_mall_order/workspace.go","gmt_create":"2025-10-08T18:20:23+08:00","gmt_modified":"2025-10-08T19:06:55+08:00","raw_data":"WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBsdm8AkKOxMEeYHksr3yo/imcaxTypW54rkWuc8ok+kKMbSlF2H953r2+WhakNMZcjsjyyB7rKnqmSG2mxBDLCJWe9iaXwfbHFUvq9GbhvS4IjS4kTKCcbQ+sCUikK+7FfwbN1kjwSJYZyajiuvyySsnUbdPIeDE1F3uAgmGyh2uecVNUaDzxxoZQQCTVYlsQu3uXE9x6nf3mJm7bRTUzODojt4smYpecVIV23Xo530zZC4lJoFvu3VihPgS1mBaAyeC0wUq19w2gQv6Yl+IRv0BewRn2X0XuXoQAA/bEQkxyvI/ZnEq7Z3Ht1XjYaVwMYfnrqx3zDJngO9dGCIvutLPeWc26nTjlF9AHVe9CstGMfDsbYz2EYxAgd4TpcoxRbY94++BUXFFXjvkJVwOe4LUP1/dFcNQdJeO4+n04TlG4kCOXbKE9zdsoPSEitnEnB/ZZDfT8EDeJXv76RwkZfFLIPJKLLjbAygECbOMUx388ePp7KJlA9S2mvSAYo3fDT3UMJG4jvW9UObR+sQ0xVOvlYsc1klhStSELVLxScBsf3bT/a4J1aQu+0r7ADJBd0LJF+KDYyddEbPVOq8asO5MCI2xKVFQTSvitDVgEE0j2fUm4VYuzkx+dtP0STq5UsqNoZWJgH9QCcOWMD8OH3e8EZ401QbDJ8DQ4aXuANeMw1FSrJfj1kfo3MSfn+NlO6sq6G2Y25BdnK+4OHQCjGi9l1vEA8sb5coNTeMZMnV255/WW5jxJALdfWfT4cw50URsj1dji1e8B5YKS5tiNF8xsXSMqA1nFFPvaRs853/38eTxl3Bbb2k+wIL0uAegEpzLYl/MIFwWZYD9fv1AaAzvKWLGXoWoiTPlpdvImM5NwgHaGiP8lEt+mTkJ3TRjRInKp22n2TQcx1Mmo5R1ZaD4XEyCJqbQmy0/3Hwa3o1wshqcNGwaeaQVwHZVkij1DzaCIk3gRcxtfka0AJQvPZWEycGiLVBBNQd0ipwSLh/QeQU5Q/GEen5grBuQ9mJzDoPrNqozcgxHSW4NSCeIhkV9ZsykURjNvAnTdgq/4g914hp7dJ3gANT+uBjblNLhqJEhEBT5cmIUSHG9wA9d12q9CUdVLM6KKSs6OCmIr7uJEMtFqt7S/LyYZ3kDmcY70Z1ooUjaXBWPnjpHMMH6jPUl9Rm2ET+HD2jYR2+qCEkZYi+mIkXmagYULy9jBW3toNuMoZu8NCiwo9FwDDom9HYBHWY+WBxPd+c7QCAAHuy1siswdIkMes1uZXen9UsL4ve5wv4IuEY4ExInxqiQCcJ6r9wLjgfv+ZA5D2MqV/rtdKT5gs3J7qSM38Tb1X/s4w==","layer_level":3},{"id":"e71856cb-fd63-47f5-8f0b-2dd3d29fba10","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"中间件与拦截器","description":"middleware","prompt":"创建kami_backend中间件和拦截器的详细文档。描述认证中间件(auth.go)如何实现用户身份验证和授权检查,以及错误处理中间件(error_handler.go)如何统一处理和格式化API响应。解释这些中间件在整个请求处理流程中的位置和作用。详细说明中间件的实现细节、配置选项和使用模式。提供实际代码示例,展示中间件如何与控制器层集成。解释中间件如何影响系统安全性和可靠性。为开发者提供创建自定义中间件的指南和最佳实践。","order":5,"progress_status":"completed","dependent_files":"internal/middleware/auth.go,internal/middleware/error_handler.go,internal/controller/","gmt_create":"2025-10-08T18:17:58+08:00","gmt_modified":"2025-10-11T17:24:20.7292132+08:00","raw_data":"WikiEncrypted:AqpSPShNE36Xgo6VuqdMl5aF+VgV8aILolR6tO6geQOv4rIik8VRwkyDUsnMruLqtWT2tLSI/ajurej/9aj1sBkNS0BQYdSIE30Piw6rw6EVyMRGtX0LS4U/g7sUZEJ0LUxms93QTwszPabEL85pQnWEkV9dobHUpmkwNdecI63kSSncdIdLjByZ/fGShR44SyDBdhI3Od/uInGR8eDkqB0x+jUKVaOqNzKOBnSG9U6dcEuC+k4ImYV1zLCcDu+BT8QIViHujr1Yv8t31woNkKhqDSfW71jYe4zEIc6GoP1p/wIhUtXRHGklEe0rUln7DnB6uIC7vWx3dbxtLat96jV6WdhhtG4J7WrYvdY8KDXNLmR6+apdp58sz2k7pobYXU4Z3K71AcAEEB3sFXu09lDbNDD9AqcCqAtbaCBlfMtxQp3qSTkne+HFzKvuBSu9SoryUHSdRNcxpf9RgVhICQhxcClfeKyrwHv6Tra9UTD9ICSsV67UNBa7GtowO9ggtQFr3NckIKBDrDrJQkxMnHRGt+EytXt682wzMLLAaWBuJRpF49XyLbpNGyAMBewSNTFnbvaoDkdEO3xYyyqBGs1SxQdvTF/uqHDwQTqplVOZSl3ZEm7A2BnwOl/s5fpPykdy2yllDvjckxI3QCY2cDZGoLv4+pcAb5qq46Rp/Q17ja8msX3bucmtjP8xpK6MakQeUU+HxzdCfZLjMZKUquBjEx4vlJsxQFf9MrtNoPHeAKKUM2jb058WRpc2Djm8JPSo4DUqSpG43b5XWQPNwAPQVSSJ6f/ozjuCFjZoW6y6oXA1w7bSoxdQ+olL6pymruYakChFtivBdpom3lmVC0n0nNsNOMOk6YJtbZJUSS/3Z8/AYig/O2OujPVzCqIRsV7qZpT3QmZJuCHsKnQwl9V+EKR/k9q2ndmn5fwH3wRT7MwXGrFSJqOCsm9WlNhRZwV2d6BoOnAV7MioIsYpb2PpT/nEqPueKEsBc2KX643vuMaLCTkqD7kdtz4aAoRuyNbMeKCS1hArb8WTVRbBMMSMeIGSogxm9p4Ey5HAHYVSTCFgwdkAH3jQi+b6lJzRlH0x7/oIUhS570RCBmdROsIbhJtzKt9kNPbAbibfQhcx+ReAOS3Osr4gqD8sHtjVTHcjyqptb3EIuOFeIzcDew0wFcvYt526+LLQUqS3HGM="},{"id":"d7caf3d0-b00a-4bf4-8045-ea54b457c2a2","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"系统监控API","description":"api-monitor","prompt":"创建系统监控API的详细文档,涵盖健康检查和系统状态监控等功能。详细说明每个端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括健康检查接口,提供实际使用示例、错误处理策略和安全考虑。解释系统监控的实现细节,包括健康检查指标、响应时间监控和故障检测机制。提供客户端实现指南和性能优化建议,确保文档与代码库中的实际实现完全一致。","parent_id":"693df6d5-abb1-4b0e-b0ee-fa0cfcf10ec3","order":5,"progress_status":"completed","dependent_files":"api/monitor/,internal/controller/monitor/","gmt_create":"2025-10-08T18:18:22+08:00","gmt_modified":"2025-10-08T18:36:45+08:00","raw_data":"WikiEncrypted:/pxnfuZ7db/sgP748CYPEnnajIZ9eAOE7G8r6j42pVkNAjXGu0NMqCu4ydfGAfQ4GCItYufWEEmQ59/IYRNbh4TeLwCIq0wIYZR+tuutkroBmNLFE5voLalJsBHhYaFnQaIIcLYC0slAZsS9oHRLvxN81DhPdygvrXE/yMXvqwipS2laucJTknMAy6yPY72cC2uNaeLCUccXQ3+7TZiCyurymQFvMJUHg8rSJXfJoIQFZYpFpU3y/Wc0h1ncH+gv2NmpFz78Z+3zMmwDouKYevCRVsVcsYKlXyMsfuzm8QPyt6042xhOVfpXWsvcNPXcKAzofi2NhJLVNH4gyXY9dOMCyz0CHeSCdHZVJoHXKQx3r5gcEptf489enTsk3rhQIsv8aNO6Mf7YbqBik7Z+TipJEsfI/66sMRt4PeLANnfc6+A0bdAR3YTSIYXSf+EYmzy0UjkNy8u3X0Wa0z1ySvPq0dHmFhm8ZMM+zYSees1DL3E5EeOOW0tNbwLlf4VLPqsDSYdqhiF1sxUVTknZSQB4ENiBo6tN73myIn6Y5/Uce2xyeMbu7HxqGCXNtmtvGaQgT1JX1C+wE6j9UzZVFxCvtxa//B1R2r8XnccZrYESFrZ+I5/t4NNolLDcBtp+Ti2SpW5KMMbhl5ubN8n9diodZSJNprv1UPJHilQQqFiYvt8zQG0vqN4MWJPF8s4xuMTpyq01/rQ3AKddpKiYTsqG13TxIYLmzGzO14Nl7v1rd0fvJ3e0QCOUyUITbeGEVofJ0AsRKyxs7SzsaMHmnLa+MjOuG9dWlU92ibQsNfTs9pCvHQhcEq7oRkzH9bm1VPCDNUlxxRcPrNeL42ETGlrzl/3gfK6JiyPsYpspcC04xNu+AfT8lPmMKXNIuUKGIS/yd2ghbla/zUIYhEiOmQC2EM6CUv7YCOa5jSVT4/f/HbkHVOwcMz+rrCh72QDmLrMFnejLqMZ3NVp5/3OisLhAp5eEP+79XK2/iRn+H6Y0a1hsoe0p00fiqzmsCLI+","layer_level":1},{"id":"050aabef-4c8c-4892-849c-74a2e3feb22b","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"外部集成","description":"external-integration","prompt":"创建kami_backend外部集成的全面文档。详细说明如何通过integration包集成第三方服务,包括京东、天猫、Ctrip和沃尔玛等电商平台的API集成。解释OpenTelemetry集成的实现方式,包括追踪、指标和日志的收集与导出。描述Casbin权限系统的集成和RBAC模型配置。为每个集成点提供实施细节、配置选项和使用模式。包括实际代码示例,展示集成的实现方式。解释集成的技术决策、权衡取舍和约束条件。提供故障排除指南和常见问题解决方案。","order":6,"progress_status":"completed","dependent_files":"utility/integration/,utility/otel/,resource/casbin/rbac_model.conf","gmt_create":"2025-10-08T18:17:58+08:00","gmt_modified":"2025-10-11T17:26:06.4906834+08:00","raw_data":"WikiEncrypted:6V5sbJNGDAyDYhOBZelaU1rOxrf0dOOzAFdTG/qUxgWgnhYSEslMfkL1CRLZ3CQgEd93QD8haush522llnu67Doh76s5Ca+S41WwnEUyjrWkASiLiIoPvV1u9Tr5MJ8CbF84fStM1LCuyPWlPs/mlFNUTr24LC9t++Zu3Ik83S/sRYZu5Anrldz8wW8HccvYj9Rn20vd6tmEZliHCEV08zHOt86iCSIOrMiTn3nOoMbWtj74US6SnxRTIiAe0dSpWl5EUXR31FT/6dDmipJ2YFay1qoavAYP/UI4jtl2HDQtzbgWt8XIeqGtiUD1OXkwvdMhfnxiz+5clANNAbdXNngBv0jyDyUgSA9AoYTTEl9w41yu5vhE7F4cl0TeyL8LTuCgyZCS7XSwh3QLhuyD3zSZdwOWs9L/SqYpPsBVN5WrgIqpnqoHaXRqj6bAzpEvOx0cq5p3fgjQBhnGa1m42Zel3U9snM1riGCPy0zkuCcUW++pBwIoqkd1S3D2Oy6iVMV4dE6NKtDjYOXbUS1UnEVVTPH1LwTTG6CYwpx+U0NAXMbfEiF8k9UghE5GfLBvN/fhUbAzxt+HDEwSEVzJllfYXSasLi6ObdHeqm2wGnlMWsXcqE0P2ZjaQeF8KiEFm31p3vIPsvj4FVziPgkYK9QPT1pFAJJgDsrb3PpvJimsenaXhodnFODVOxoas6Qnk4A5W01t7n5qhzeb30qazovqIRMCVukoZnPDmKjWUxk43YyyZLeD43BkZ3pYiiRGjFIo3HX3wx99iA/MFheSEchJa8AWgWO3M6T2VdBDAl70B1Z2cgJrt9/ONw6ITr5LGb0J4twEwfxPZOAXS9FJNKbezsfTDWTR01YN9cemazmggbV0FiMr/httwX01Z2H5Nx+2po6zExOQdREJRSDXK9+Bcd5Ub3lKXGEAwtU5JDEihamP5bNx4DYkd2m0t2dCdAxTUJp/sDS7XZnB12PSeqnSf9EGC1mTHn1X5SoZbZ3eR2dbwxF0tyRs7rL2k8nHsjg6iXNNAn5DcbVik91lhrpLbY969BE0J3LsFJ9bQVSqJ+Zind7Rw1jU89i9lGjaGVfkHsad3NQWM3QF6yFQX2LuS+qeD6uCFpGb/kl/cPaT3+qrGM/vB7USeBgspgQksjgq39blrrRR7g/1bx4A4GN+S/EmOC/oJVQPIF+YfyWzor2o4iEZiervnUHnorgNjJJ07WRZb//KgtlGhzGKhmkNL73Hsp0WxOecTkIZFrKtt4Cv2RopxRvI66mJ9SRt"},{"id":"b24f3c8c-5f2c-435c-99e6-6ee42c47a46d","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"资金管理API","description":"api-fund","prompt":"创建资金管理API的详细文档,涵盖钱包管理和资金流水等功能。详细说明每个端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括钱包创建、更新、查询和资金流水记录等接口,提供实际使用示例、错误处理策略和安全考虑。解释资金管理的实现细节,包括余额计算、事务处理和对账机制。提供客户端实现指南和性能优化建议,确保文档与代码库中的实际实现完全一致。","parent_id":"693df6d5-abb1-4b0e-b0ee-fa0cfcf10ec3","order":6,"progress_status":"completed","dependent_files":"api/fund/,internal/controller/fund/","gmt_create":"2025-10-08T18:18:22+08:00","gmt_modified":"2025-10-08T18:37:11+08:00","raw_data":"WikiEncrypted:gLdwQ0KTVfy2nZNoG+5bdYizgJv16EHz36uF4KpBUPfyYMj4B2ukzPWea1pyWCEUGSSgvWMYpbGE/0eXLXpahXj+nH+hAZ1T5Uqw7u/veqBEMSd4ZN7RlGn3vv+9NmDgmZapIP+6vYH/S8FvnohYJDgPfroVhJsbTNWdc1r+OYfmMZXDkw4Jvi7EcW3p27E8UxGvqCpcW6V29NgKjhDHhujat8O0d/dG3yCMgFrKlXmYD/sAna9JiXICSNZtLhKAzQjQejQFVNebLsV6hDSvj8vWJpev4t3C+5MnzV/vyME3m8vPse/JGNVtfWlZblxEkyHM9EHKkl+y9lSwinSmrwBYqNjMhccJXHxBYeKEhXxsMf7UVNNhTvRyAPCllxzdsrFsI1PSrUJbjkLuBPtIQ5KWGZXO5ZklIoCP/MxvcrujKsi8ynEpCQ71VYFkV79LlyKKiP1Z2NznMXVrjFt2j9WJci28BcKND8fPSzZ1cVOGDBpxa08RAtE5D2qjOJ9L8BpEDo0TFtv9RuupBJDmBuSGWRxYRBa9c+8QbUSg269A1zt5mytOIlHm3CBHza7MKw1rh28mCwGi3B9XOEq+fJBpjqGDI0CaiMRc331/7foVEqTo+gAVYvRdTGzgcN5sVI+qy6GqKdvyFKDlJGmLgeby15Org+vgyff6iO6z7Ympy8xZepxmie7rEJrVoBjJaSCtXM9THYYSuw2CdW2BJbTHDfSdGsNL1+AwmOqVIbU9QLKC/9FF42HwnHgWAtZ6q9+pV8HUmaEmhcrxzlGiKCtoBtu7CMYTcXwvN1ZeH4fwcwuCFoaPzrJabjIurTs05pIKP/tlzP1kG1dD2e73NKcnx5KeHH8zdGTq5csTIUvezoWg0TshToj4yd2Ce6fIuy5dOEDxbc6JQYy/WNVAqnV2oFH4DtDKJGQNSjzMlDqPzs1VIFTw8JHLozliPH6PFqzilC9fLI1bp9d9fpwGnSrPjjZldPtYKbpMwJjW41KYKt4BXZnjpp3XiVZnBh2ACAyRKfdLeznjk6c/YhLEKg==","layer_level":1},{"id":"56f928f7-77bb-40cd-b1ba-80079defed47","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"日志与监控","description":"monitoring","prompt":"创建kami_backend日志与监控系统的详细文档。描述系统如何通过OpenTelemetry实现分布式追踪、指标收集和日志聚合。解释monitor.go中实现的监控功能和cmd.go中的命令行监控选项。详细说明日志级别、格式和存储策略。记录关键性能指标(KPI)和系统健康检查机制。提供监控数据的可视化和告警配置指南。包括系统性能监控、错误率跟踪和请求延迟分析的最佳实践。为运维人员提供系统健康状况评估和问题诊断的实用指南。","order":7,"progress_status":"completed","dependent_files":"utility/monitor/monitor.go,internal/cmd/cmd.go,utility/otel/","gmt_create":"2025-10-08T18:17:58+08:00","gmt_modified":"2025-10-11T17:25:58.3413942+08:00","raw_data":"WikiEncrypted:fO6ZyTV/+zFGGiGBj2YmQFZZh2B/tCl8VpzMyKHwoVG2Igcp9ko+l59aB87pRBKmPklfl7BSGuvixmNrfwMmWQxMzVwUymNIandfPCI58hlbQlqRgIi+ICKMQENuEKEjR2ions3uCUq+qhKarJTToHVOXp0nVAS7juzle/+W9nwF4i3U5NGByOXHzYUuevprmr9bxS7i34AZJvFVOKhlXuO+73P1N/dmmcX1dxZWaLyaN8jVFmOJXbH9BXydVPxvKBodJucsjbTDXfg4pQa6cESHukFR98S1csG57kcGSkscV9ykKWRF9ggYTyXhIoqF0RWirI+cLlab2WJHgM1WPBzqnhew0OV1IbRM6AE2yThwUxCdyiuG1HITVzftfn8khF4yGN0b4IcHZULP/+mXssMACE8xF5GxreYjrvSYd16wUbdUn7m5MiQnIxbfU+pmw8P+RYRHNynBdJMP67qIk1Fgd77rHmdlaWeTepcng36Ed5y2oE9PQ3JWD3+PCk4QrP5j9boLfUw6Dyn7w8gfF/cSksocnCuKZ6GCOq0CUqWc89UJHmMZD4za7f4Pr/6TDq90fOfuzZwu3Bh9gsev4fPGz459XO2bMxZn+5ZT4IgnEiRkQlHZvxMIx6NtunvKPU0WZZQB6SA3tPMcnezD7f7cE4Ez2Gwk9MbtoXxRmAEeTyQYh6u2gSq81FE/u/giUC0TTJfchjFNz/rSf3KNlMmLLLrGtCsVFgZzo8RHnzIJ/rnol/eqs+K8vBS/ZHcD1GHVxj916N4mq69Xw3ImDRk5S6W1wPzpG3GgEw1bwmYcj6IVQolRBF6VOEf0iGlQHjrvL2YdcuNQ20fksmhOBWbYmXl7W4h0oBc/KiKTKag44ttfl02IZy4t1jUthgoAFfIDXgEikUJgaZj00PfTRfMwXbAfJYWiVn9hEjEf5WBO6FjabSGR8P/jx+ZHZ32k/bcoRofPswULCXBQzqVJQxHCZsI66mig1Q8LJIPjJfSORL1/NvUl/tzxjfB2e4+rmsH8Zhs8R8W7tLBZEqjMkqZNNHsMdHOe/SGQxQNaZIepV/YRvoXjZGeNZTVaAfIzjC9hELFZb/wUNaDSlF4vgdtB3ia1lmrcTbKcHccGd+o="},{"id":"5309a75d-a6b1-41af-83ab-5dcaa399435f","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"渠道管理API","description":"api-channel","prompt":"创建渠道管理API的详细文档,涵盖入口管理和渠道配置等功能。详细说明每个端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括入口创建、更新、删除和查询等接口,提供实际使用示例、错误处理策略和安全考虑。解释渠道管理的实现细节,包括渠道路由、流量分配和性能监控机制。提供客户端实现指南和性能优化建议,确保文档与代码库中的实际实现完全一致。","parent_id":"693df6d5-abb1-4b0e-b0ee-fa0cfcf10ec3","order":7,"progress_status":"completed","dependent_files":"api/channel/,internal/controller/channel/","gmt_create":"2025-10-08T18:18:22+08:00","gmt_modified":"2025-10-08T18:37:07+08:00","raw_data":"WikiEncrypted:iIHnz7p+SPRw5X8B3MUgFa3SWR2/Ac9jwMRHn97q5TAg/jMwINtcbL5tYBTv90hQTNAlft0onNagd77WQYgFAUbr/hurYRZ+mt/lb3o1rOqpBK12mmTfxKl2ybT5ohYhbercVyHXiabficTisH8KWoyrZ566Ui1H9pqtQF/GrrtIi+Td4U8o0gtHAdEZCfaPNmO7CrqJgSjnDgjRbziLAtZ0EmCF6fqGQS0izR81eUDwq59erHoiKZ7u7VAVGSBS67EUL2KHYHgcApNpFCWBLPOI5UCp+Iiwnp9iUlxZv/E8E6X73U2BJk4SI9y4vzh3Ttn07qyu8hKusTgTgyXSYyn6L+PrdPwPsnWR+zcRttRRAeKkPzNaZxkTmcR3w2aIb/lbQ9jGcfXPO+C4n6MNW00ROPColagBltNS2+YthHqmXHlzMxDHZKwQ44RXfgyM5SpvkQWRdYLNgqtokMd4LJ3iS11Gbo3Bf68UPu5UBcpJsri++zY1OTRgIM4j0JI4fVLwqMHieHVZ7RInKj3EKm/W4TI1SZbKSUxA7yAqw0nM3z4sLmQXCXzWEDVzFfgZaofr6DzZlfJ8LOBxJ7AGuz7+agPVtR0DMvmeqiS5f/liW+5TninqNXkLBTGZGhdm75y5syHJucfgCS9DsZXMJW0XKL8bPZZS/ji1Rda4BjQZtmJ5Z+aPGt6YkCmo27N1t+wzAE1+t37Euom91RpXDFxtKv83XKgym9d7m0yvAIn3dUp+QM8FV414mAOppnUG+8J1H90QPv24YVIF12YMnhoZR93pUSYidhAZhxSrEcZvLH/d16z+AgVlTdUH3svOmwikAh6cZbqYfOzfG+uwWxlzCZ1CDmq9XYLntOR42UsvOivTwQWg7+sUaFbCO5CAV7mF5XiDmNJ4L8YMTvziX7RrGD3FWX32UKCL0VYEhK8w2YQf800Qw9IK/NSekK678tB/FLKNQXH9KTFL3I5dxPpc43UL4thkeVlcnSAvGVeyh54KklcwIR/SkVNT73El","layer_level":1},{"id":"ad94de09-b7fe-48cd-9a8a-bcfa78565c2a","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"安全考虑","description":"security","prompt":"创建kami_backend安全架构的全面文档。详细说明系统的多层安全机制,包括基于JWT的认证、基于Casbin的RBAC授权、TOTP双因素认证(MFA)和数据加密(verify包中的AES ECB和MD5)。解释每个安全组件的实现细节、配置选项和使用模式。描述身份验证流程、权限检查机制和会话管理。提供安全最佳实践指南,包括密码策略、令牌管理和安全头配置。记录常见的安全威胁和相应的缓解措施。为开发者提供安全编码实践和漏洞防范指南。","order":8,"progress_status":"completed","dependent_files":"utility/verify/,utility/mfa/,internal/middleware/auth.go,resource/casbin/rbac_model.conf","gmt_create":"2025-10-08T18:17:58+08:00","gmt_modified":"2025-10-11T17:27:31.9852213+08:00","raw_data":"WikiEncrypted:6g8iffgXzed698CsRven+TxLJxsKi89Zg4cHxSgvhEzr/4bcgtkHOokh3q1+kVqE1tnaxONz31UFJtXDgUZL+vdV+t+IhM/TRGE1OlPebhRkyHA+yPymEcTKks0vO/fj2fQLtFRk00DPWThrLdA8vUwRH77Q32mgd7eyHBog20mYf1lRn8KKFeWdqwWZPEdRMkGMmgHUA96Im9yLeyuGqrdya5JJEeiLyLj9rUFhkQZoxl+sR6NIPeauGuYWoh3MshU8jdmI9vT1WOHPjjdWggrf6SJc6KPKy6kIUrPujJYq48yOinbDA8mCKOghP3tgraLBN2/rm7uOoYPavRuwXYjfuS4Bu2RuHPHuVJ+soIPrb1J9X13DW8irgPPZcjjukzL1cqVpmZ5mzEnN/DY2/wCMQ3L5AgH8R3B7G/bcv5ji31sZjxLyyMF6xoqNVAl9E9XXzHWM3bPCcJxXRVmw37qJZyR2BN8gEoFc471qQueIdf95b4JT9EwJEDW6uRKG2/qfrlU/qVwBCg3wCVtz7yyQdzeHYPg7MW8doys0/4JYBTCitk8wySH4SRXbLJIc+j7b3cVKwq+ltIUZze8Jei22pClgQRU6A9FT4X6EHZKld7DIqkyAvU0P/1C8eIJ5hTkTO7ck3+W+h6Vf0R5s+0uh/sOcCTavFP/OgZ46O7RBw+YOv/dTEwm5scteo56AdTeSVYvhUDPG/w0HE0p6xt8fhbEQhbXZi21FfTZZrKhac7VTS30km9dLm7ycPvCHxPWo93OkMz7eL72nmQBWtKH7+61Z5Fbl2JQG4+AG8SjWsCGcJufBFYhDiLqk+u7JXMCq8qTDjB3+xhcHXKJhPkDvsin5rL0yTupa2h6tJJAA6IIGLbrYHzpMVoyx6bytf9Hyi5xjwoylMYScUywttZM9qp0oWKY54LHcLuz1RmE+5O7oXjhEeP7B73DLfCzpSVz7gckEkgbAdFtp2QbuYlN8Lcb2f79lDOUcJsvg8Y6BYR0DkXYVVBNbvWCBcvU+kPyO9/KZjWJNmoLsOTq8Uyar0nfOYe+dzsJzJkQypSgeOayQVjAKMaISOo1Fu/6NLFkM9+crrDivnAhwkoOT8RzcDegEkI336FxALNQGyHY73GjEvTkUtfn9rTapDUVFLo0ZGPHBxYYfBVKUNByKmry0NFiWjJ/o0YUp3001PQDNDSNf/mIet6apQlXgK7Kd"},{"id":"519aff94-32db-4783-85f1-071d6c314ff3","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"部署配置","description":"deployment","prompt":"创建kami_backend部署配置的详细文档。解释如何使用manifest目录下的配置文件进行系统配置,包括config.yaml中的各项参数含义和配置方法。描述Docker容器化部署的实现,包括Dockerfile的构建过程和docker-compose.yml的编排配置。提供基于Makefile的自动化部署脚本使用指南。详细说明不同环境(开发、测试、生产)的配置差异和部署流程。包括Kustomize配置管理的使用方法。为运维人员提供完整的部署检查清单和最佳实践。","order":9,"progress_status":"completed","dependent_files":"manifest/config/config.yaml,manifest/docker/,docker-compose.yml,Makefile","gmt_create":"2025-10-08T18:17:58+08:00","gmt_modified":"2025-10-08T18:25:27+08:00","raw_data":"WikiEncrypted:0IKfLNOWe9mZfG1jVts3w0YDXzCWWQgRFe88de5EDrjdrx5FvxhMWrOPqCCjFYDUiVbb5/bIdikTJC49sd0RRkCnBLWWiQ8NCaq4WB6ZQ+3a83ydlr6m6JASndgfW+MNJLsB/AkqgfgF0pnC7r35xywsX3hzMaSG+9fNbxEdHJ6HSbxlN2SmWqe0QVeHYlUmlP32NjH4QOmLyRzC/bnAQYwGmReeV2s1qAyuh97+ECOTAvcZlFioRoAPaKH+JFWTgJ/9HEw736K2t+i9O0E5yb3leIdX3k/wpToNCw0B7YRDBxoNJSAnoXPzY3MQ6iXc3VzjhUIxRjWpV4QMM2auMU3iWaIuBDPBLzvCRlyYH4y6BKLJp/hFHCDHsooVSACWrNFoXGi0jhZ1ZutJSAHor20VBLnfMxVtsg1wgKxtsvM/qrCAF/INXWguXiF+0DiyE7NqJktcCKGBERR6Zq5JhwE4qgrMOHu0+AC29AVLVnWiUWh+UBtpseN9mPngkySGAliCoEFCkkoeDmia0lsxMD6SEqBmUCp77eDYFUHngrj6KRkri25ZLKoXzoz74K0ABP3yauEZogoVmMVepTSUo/ZbSejsQiJFPWsNvw2TsG2cU8mDAU47lsbw3KSeD/tGdPk5dhCAn5QQKK6bi5OZBvSAtARBHlwvytbkAzuNLdE9GwzHlnR17Z2ovh4a1q53xDpU/pMCgatn2oQY0G/Uhp8EMfvpDLne/g2fHAEnoxbYF2la66wS3m2ddH70yTg0GDPVcvJ8Pie6pm9zZYuqoFyP1ILgxhsV/3sxzZ9P1gH7n6YHxstgxD46iIY1mNnyFC+HaqZ+cXwJa5CQHDz6CjD/hhfBIzo+F2mOselApiAzyulZquFZ/TBHs2QnlUxnO14RDmdvZqoSY65/A0C53vDcTJOi5pDNv8CvnHL2O9vkCc87Y7i9kULm54xtMzhm6qCw7e/UDbNqoNZBiN81EZgdxKfd28zLFEBMljqkWPeMpwwh0H6Sg2bGwzEoFYSMppXQ7LnUjjUM6deWlz6jjDLQW5YPloYNs0VCesdFff3Jgl0ukqaL/4VMcwIvYY4MG9gDGOfndJE7w/9lHt1gjgCqWj1oRotUTX/FmgK6mfIZSYL+6H0tNvqBrF22JD2xQPJYMjTeZhqXFpDggQ0Zgg=="},{"id":"6c6c6963-ea94-43ef-8abd-97ab6817a48b","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"测试策略","description":"testing","prompt":"创建kami_backend测试策略的全面文档。描述项目的整体测试方法论,包括单元测试、集成测试和端到端测试的覆盖范围。解释如何为业务逻辑层、服务层和控制器层编写有效的测试用例。提供使用Go测试框架的实际代码示例。说明测试数据的准备和清理策略。记录代码覆盖率目标和测量方法。包括性能测试和压力测试的指南。为开发者提供测试驱动开发(TDD)的最佳实践和常见测试模式。","order":10,"progress_status":"completed","dependent_files":"internal/logic/,internal/service/,internal/controller/","gmt_create":"2025-10-08T18:17:58+08:00","gmt_modified":"2025-10-11T17:26:03.9919227+08:00","raw_data":"WikiEncrypted:Xd2Zu8BM8p49theGlFJHkHqkA5ycuMpwkltd7rjxfkZm5u2F/OCOa2rxC3NxLrZDZf5D15q4Vh8tHCK9cPrOS4+Ys3urQt//f060Y4iIHh0l1A28UoBx4zw0WH3M31LfLAxkTXkOcrkF5ptnw52Idh6trbx5eJS2Qv+BcIzGv/Iw3x2pAWTgHakxyzRAqrc1k7BDI4v7XRmjHtE2IpxaQQ1aRofarEJM4MyjQfoDXHYSW8+3BB/rIqmowV+wDhA0o9b5SkR3FDUW6zx/cusIqFWZk/E8ssygQCH92MhSu1TDh7dMd3oLVFHt8qweO2CeDQeBoVaqprQtzFydOqViXVvUbxt3J49Uu/XsYzuy2y9gkwK3BwWK432ZYLCE+TWL6kcU1LvWM5MNSnWuGzOcPYn5QXe0o7M7Jw0uSo6luSgbk0g5PqKn/lvl79JWmtgOZZgyHAL/2hOegzUFr9e5VmFSCTJMrD9W2HXeCpQr1IJuo0bEdoBQVOimVUmnn+dAiarIRzwyeOYNBkLQFRAX8l/FyKQWEE4ApGtZc5ATGdj/1nx0+aQ8IFVjwlqm0n+vM+Osh8OLVPDt9uXwJwrz0I3jphsV4Ml2A+7g2pu8CEw24LB9nnY8bQszP2CCoZNFm4qFdWxelglVd7EsL+ai2vTQtsW0M1FnJHcQoaNzKrBNXZ36aZzUrIkVOUzOPDNGBQqANaVf31s6bnJPy9hbTv88NsQu0FbvNSue+JJlY9wzKRLof/eMacip+HUjo5ETmUhP2ocTHL1IyYpaDEHbn3tfw7h7q7gWngIdXTg/cWpTfnqaYWLuhBdLSpUoUSgbr/mIAASCKNBmH9FvjcV9FADEFcl9P93PTrkoo009k2XSR7sGLDMS6KnwDvoM65t19TQDgLj5s2bKPAwe41GpH6RsJYk6UZ98moX0xtBpsWAKDYiyTxNLLDYYuNoL9UBg0EhXm9uLrMC28S8rd70zT767Mf+MbJEx4/GyUt7uBSJcsWBtNgcuw8aVwd0QTuTj"},{"id":"35d30eb8-d12a-498a-a19c-c1b6ef95145b","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"快速入门","description":"getting-started","prompt":"创建kami_backend的快速入门指南。为新开发者提供清晰、逐步的设置说明,包括开发环境配置、依赖安装、数据库初始化和项目启动。使用Makefile中的命令作为主要操作入口,解释每个命令的作用。提供'Hello World'级别的简单示例,展示如何调用一个基本API端点。包括常见问题的故障排除指南。确保指南足够简单明了,让开发者能在15分钟内完成环境搭建并运行第一个请求。","order":11,"progress_status":"completed","dependent_files":"CLAUDE.md,Makefile,README.md,main.go","gmt_create":"2025-10-08T18:17:58+08:00","gmt_modified":"2025-10-08T18:26:09+08:00","raw_data":"WikiEncrypted:qfgbutC7oyxR6nMxrwk1ODnNMBEQ3/sG78fQT1yXWjuiNN7p/9UiziFtG8VxSN3lDZPQFx0/QJ3DnzLYLtDRB4nGAaU70RZkhO+ON1gRN4x+OHmdrMLZxTrt1rT6pGA304dmEU5OCbFwPbamZhWwUiBN85RO9DSQy2tzy/P/lVYlefkzZMkpfKXb9Hr2X9EYwdxWad8uG+wdSo7mYQ6g2cGIh6DXj5RS83lPDobvMdSy2x/+meDkNsdZVrtgqWSPSfZB7kbAgbAwqL66wuPprOWkltTYURGRfQIKB6OhS+r9VX3YXOm+gQXKVeTKrOzf4NXqlD25+zhbtCJ3+4IzXOpl8s5skN6wQcclYhNU2fZ0+dhVr2zUOJv/Swtb2ppsHzKz/H2CZ9U9jz+M19LpXEq65esOK1cJDloyR0A/LEuZREMHX/itrpygGEXG1NhnJdnffjF9snrEFtX4to8GEHJTSUJ7xAbIWr1Eceb93J0pKYLGy9eNXaKuEU2A9HyZHdkI5409eQvTnIABD7JVK8EZlcp12EI0LtM1fFMI6/cvAOk826mSlFvoy6J2JdN0zN2mhqlQ43bWoyVFPq29j8ZmAVA/rf+wSQoXZS7UKmeuGosnjq6MMZOZ/KILspUla3seZ7O5+Os1gd71bHfOuCkQPJUQWWtPeSbhF08+pwWOkmbEM2+yo9JwnDh5GdRaqRT4BMZgREKFdqIUVvo4XY9GCyXJJGce0AKXrI70YRhapEjIV1rF7jRZ52QQcEBvRl6JsFcZEMkKnGyOHEZCVtmvAW4gI1yJ1XmCM7RzER77Q0l9IzJlSNp6SVCHz3Tqy1gDWAlPNHwCCsEn/7GZikekXguvT5jfZBNNtrpFH78RmRIXRV9qCLNZaBnnZmOQbzPjFNBy9v0ZQHFqYW6HPYyMlMFVZtZibhPe1UDOm22OOmnwEzdlDtUQZpU/ZIeftMXuXgPoP64qn7ytqc6gPu59MXlUVl8D3G4+labxbVg="}],"wiki_items":[{"catalog_id":"802f0a8e-251b-4bdc-9194-bfdc2122b3bf","title":"技术栈与依赖","description":"technology-stack","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"2d252858-5e54-46c7-8333-19753b85e57a","gmt_create":"2025-10-08T18:21:57+08:00","gmt_modified":"2025-10-08T18:21:57+08:00"},{"catalog_id":"8292f51b-85c1-41d5-a58a-50585ba999d1","title":"项目概述","description":"project-overview","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"ed77f21d-2b02-47a9-b2cb-1f1d36e06b8d","gmt_create":"2025-10-08T18:22:33+08:00","gmt_modified":"2025-10-08T18:22:33+08:00"},{"catalog_id":"e71856cb-fd63-47f5-8f0b-2dd3d29fba10","title":"中间件与拦截器","description":"middleware","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"6d5ebff3-909f-4c98-92c8-8c0d636415bc","gmt_create":"2025-10-08T18:23:25+08:00","gmt_modified":"2025-10-11T17:24:20.7297353+08:00"},{"catalog_id":"b8ba5dc4-8d15-4b61-86e8-07a963bd3fa8","title":"数据模型与ORM映射","description":"data-model","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"5ff3fb8f-241e-4d7b-a9f7-3f265eda053f","gmt_create":"2025-10-08T18:23:37+08:00","gmt_modified":"2025-10-11T17:25:03.3747266+08:00"},{"catalog_id":"201b5004-c469-41f6-a407-c98892822b49","title":"业务逻辑层架构","description":"business-logic","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"caeb482b-4671-4692-98b5-948f768bcf2d","gmt_create":"2025-10-08T18:24:00+08:00","gmt_modified":"2025-10-11T17:24:50.7536522+08:00"},{"catalog_id":"050aabef-4c8c-4892-849c-74a2e3feb22b","title":"外部集成","description":"external-integration","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"32329179-a4a2-47e2-83dd-1a93c046af96","gmt_create":"2025-10-08T18:24:17+08:00","gmt_modified":"2025-10-11T17:26:06.4911885+08:00"},{"catalog_id":"56f928f7-77bb-40cd-b1ba-80079defed47","title":"日志与监控","description":"monitoring","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"7af63f20-e74f-4c92-af2f-3124616b0dfc","gmt_create":"2025-10-08T18:24:50+08:00","gmt_modified":"2025-10-11T17:25:58.3424816+08:00"},{"catalog_id":"ad94de09-b7fe-48cd-9a8a-bcfa78565c2a","title":"安全考虑","description":"security","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"8987b1d6-99e5-4387-8d3c-60e739a30e20","gmt_create":"2025-10-08T18:25:14+08:00","gmt_modified":"2025-10-11T17:27:31.9862679+08:00"},{"catalog_id":"519aff94-32db-4783-85f1-071d6c314ff3","title":"部署配置","description":"deployment","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"056cda49-d96e-49a5-831c-7def9872435e","gmt_create":"2025-10-08T18:25:27+08:00","gmt_modified":"2025-10-08T18:25:27+08:00"},{"catalog_id":"6c6c6963-ea94-43ef-8abd-97ab6817a48b","title":"测试策略","description":"testing","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"26c0da0b-10e1-46fd-ae3c-e0e7b23135ba","gmt_create":"2025-10-08T18:25:41+08:00","gmt_modified":"2025-10-11T17:26:03.992926+08:00"},{"catalog_id":"35d30eb8-d12a-498a-a19c-c1b6ef95145b","title":"快速入门","description":"getting-started","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"8148be9a-75be-4ed8-acba-f6008757d0e0","gmt_create":"2025-10-08T18:26:09+08:00","gmt_modified":"2025-10-08T18:26:09+08:00"},{"catalog_id":"0acd557b-c455-4420-956e-96a4a67cd7e0","title":"用户数据模型","description":"user-data-model","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"e4fe353d-cefc-4899-9e57-39fc9f112127","gmt_create":"2025-10-08T18:26:32+08:00","gmt_modified":"2025-10-08T18:26:32+08:00"},{"catalog_id":"eaa525f4-7640-4d4e-84ae-7624f8b5c790","title":"卡密管理逻辑","description":"card-management-logic","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"33150d2c-ac78-4784-a31b-e9d342cc880c","gmt_create":"2025-10-08T18:26:44+08:00","gmt_modified":"2025-10-08T18:26:44+08:00"},{"catalog_id":"681cb8e8-add7-42cb-8297-72df3436bc74","title":"权限管理API","description":"api-auth","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"050adf51-c0b8-417b-8e31-5502c8d7ebcc","gmt_create":"2025-10-08T18:27:26+08:00","gmt_modified":"2025-10-08T18:27:26+08:00"},{"catalog_id":"d49ad99c-afba-4362-af4e-ff689d5d94cd","title":"电商平台集成","description":"e-commerce-integration","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"b64a6df1-5797-4877-8b53-29fc0fdad59d","gmt_create":"2025-10-08T18:27:39+08:00","gmt_modified":"2025-10-11T17:28:30.0710517+08:00"},{"catalog_id":"965a1a48-9a08-4f01-9b4f-1f1a51c82165","title":"认证机制","description":"authentication","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"bb84a187-9957-4c61-82b0-b8997f3b306a","gmt_create":"2025-10-08T18:27:42+08:00","gmt_modified":"2025-10-08T18:27:44+08:00"},{"catalog_id":"dfd2209f-82b2-4b3c-84b4-8fa7f91207e5","title":"配置管理","description":"config_management","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"d2e0d8f8-6a5a-4d1d-aa94-30a022535241","gmt_create":"2025-10-08T18:28:10+08:00","gmt_modified":"2025-10-08T18:28:10+08:00"},{"catalog_id":"5ffd09f4-939b-4b8b-a254-494937471526","title":"订单处理逻辑","description":"order-processing-logic","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"2ab1acd9-0488-4f69-a292-63359e8a485a","gmt_create":"2025-10-08T18:28:45+08:00","gmt_modified":"2025-10-11T17:28:54.4923627+08:00"},{"catalog_id":"4bf77667-f501-43ff-8e67-ed1fa1562255","title":"订单数据模型","description":"order-data-model","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"f42a4fa0-61ee-471d-b8f0-9dfa22159b7c","gmt_create":"2025-10-08T18:28:50+08:00","gmt_modified":"2025-10-08T18:28:50+08:00"},{"catalog_id":"e047b856-1a8e-4ead-bda6-66d7c3ab4651","title":"授权机制","description":"authorization","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"b52b76ee-90db-4464-bb9d-431b10755e6e","gmt_create":"2025-10-08T18:29:44+08:00","gmt_modified":"2025-10-08T18:29:44+08:00"},{"catalog_id":"3885dee9-9a55-4da0-8506-1a84306cae21","title":"监控系统集成","description":"monitoring-integration","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"f071af41-6de4-4751-8a76-5e5d5d0c02df","gmt_create":"2025-10-08T18:29:59+08:00","gmt_modified":"2025-10-08T18:29:59+08:00"},{"catalog_id":"3c6ca985-3423-453c-9f11-d9030f798abe","title":"容器化部署","description":"containerization","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"33c05b7f-e793-4a3f-bb87-9c6ea22d7e63","gmt_create":"2025-10-08T18:30:37+08:00","gmt_modified":"2025-10-08T18:30:37+08:00"},{"catalog_id":"aaf3daf4-4a28-4e81-8d88-4453361c2ac6","title":"商户管理逻辑","description":"merchant-management-logic","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"c46f3f6b-d36e-48a1-84b7-1e14cb598119","gmt_create":"2025-10-08T18:31:02+08:00","gmt_modified":"2025-10-08T18:31:02+08:00"},{"catalog_id":"8d18de48-44df-4825-825a-d6d8797a330b","title":"卡密数据模型","description":"card-data-model","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"06c4893c-d2e9-4b61-a99e-f66a1d2cdfc9","gmt_create":"2025-10-08T18:31:25+08:00","gmt_modified":"2025-10-08T18:31:25+08:00"},{"catalog_id":"079920b2-aa64-48aa-a92d-8decf24623b1","title":"订单管理API","description":"api-order","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"ba1c4880-8600-4564-afa6-175208ea101b","gmt_create":"2025-10-08T18:31:48+08:00","gmt_modified":"2025-10-11T17:27:33.1362683+08:00"},{"catalog_id":"8b232595-64ae-41b7-95c2-1ae6428857e3","title":"数据安全","description":"data_security","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"9fed567c-4708-4ae0-88b5-a49c8b5f0a4b","gmt_create":"2025-10-08T18:32:10+08:00","gmt_modified":"2025-10-11T17:28:55.7241446+08:00"},{"catalog_id":"f5f182bf-a48c-41f1-86f7-12c882b3775a","title":"权限系统集成","description":"permission-integration","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"d5e98815-ab00-4c12-8402-2fbc852d8dbd","gmt_create":"2025-10-08T18:32:32+08:00","gmt_modified":"2025-10-08T18:32:32+08:00"},{"catalog_id":"2b16f9fb-3e48-4abf-a52c-5fcaeb1467f5","title":"自动化部署","description":"automation","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"c2fef000-7272-4553-b8e9-650afd08aef6","gmt_create":"2025-10-08T18:32:49+08:00","gmt_modified":"2025-10-08T18:32:49+08:00"},{"catalog_id":"93bada60-b20a-4977-b82c-eca224ca34f6","title":"风控限制逻辑","description":"restriction-logic","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"077abc2a-81e5-4e9c-9a72-757f4765021c","gmt_create":"2025-10-08T18:33:33+08:00","gmt_modified":"2025-10-08T18:33:33+08:00"},{"catalog_id":"f5173a3f-1bbf-4ffd-aefb-fedf3a92a65e","title":"账户数据模型","description":"account-data-model","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"399f12e9-6620-446c-9e02-808c39c61bba","gmt_create":"2025-10-08T18:33:34+08:00","gmt_modified":"2025-10-08T18:33:34+08:00"},{"catalog_id":"c423075a-af3a-4aa8-aeb1-eca97be6acbf","title":"商户管理API","description":"api-merchant","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"e55523f2-f9d0-4297-b67d-dc4fcbee269b","gmt_create":"2025-10-08T18:34:16+08:00","gmt_modified":"2025-10-08T18:34:16+08:00"},{"catalog_id":"e7731430-b57c-48b6-b326-56a4297fa5b6","title":"Kustomize配置管理","description":"kustomize","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"4708f37c-6c92-4fa9-aba1-fa843c3863f2","gmt_create":"2025-10-08T18:34:17+08:00","gmt_modified":"2025-10-08T18:34:17+08:00"},{"catalog_id":"f6a6925e-fe4d-4480-858a-b25ee0c9c478","title":"双因素认证","description":"mfa","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"d15e79da-d03f-46a7-9939-d486c82bdd9e","gmt_create":"2025-10-08T18:34:59+08:00","gmt_modified":"2025-10-08T18:34:59+08:00"},{"catalog_id":"c31af7ce-10ef-44f2-9bb6-b8772f1bc957","title":"系统配置数据模型","description":"system-data-model","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"d106423b-19ad-4e22-8a4a-567e2ff27e36","gmt_create":"2025-10-08T18:35:37+08:00","gmt_modified":"2025-10-08T18:35:37+08:00"},{"catalog_id":"71487087-d57a-431c-af0f-f9ce8536c80b","title":"风控限制API","description":"api-restriction","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"e65b9b9b-d210-44c8-8f0c-85e0422070d9","gmt_create":"2025-10-08T18:35:55+08:00","gmt_modified":"2025-10-08T18:35:55+08:00"},{"catalog_id":"495d1fcb-e69f-41b5-b893-4efb8ffae28c","title":"系统认证逻辑","description":"system-auth-logic","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"ab420b44-4f24-4bc3-a44c-bc68b0868ab8","gmt_create":"2025-10-08T18:35:57+08:00","gmt_modified":"2025-10-08T18:35:57+08:00"},{"catalog_id":"d7caf3d0-b00a-4bf4-8045-ea54b457c2a2","title":"系统监控API","description":"api-monitor","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"8e29abbf-237b-418a-b169-69594db3a3e6","gmt_create":"2025-10-08T18:36:45+08:00","gmt_modified":"2025-10-08T18:36:45+08:00"},{"catalog_id":"5309a75d-a6b1-41af-83ab-5dcaa399435f","title":"渠道管理API","description":"api-channel","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"f5a8ad7a-5455-4dda-8fa1-28c34b83dfb0","gmt_create":"2025-10-08T18:37:07+08:00","gmt_modified":"2025-10-08T18:37:07+08:00"},{"catalog_id":"b24f3c8c-5f2c-435c-99e6-6ee42c47a46d","title":"资金管理API","description":"api-fund","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"51819175-b0b6-4391-899e-6d9466cf804b","gmt_create":"2025-10-08T18:37:11+08:00","gmt_modified":"2025-10-08T18:37:11+08:00"},{"catalog_id":"f7bc4c8d-64a0-4c2c-a17e-cd38987a94ef","title":"Apple卡密管理逻辑","description":"apple-card-logic","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"4cc7d7ec-1470-45ec-8b91-d43b0285ff1e","gmt_create":"2025-10-08T18:37:52+08:00","gmt_modified":"2025-10-08T18:37:52+08:00"},{"catalog_id":"cae0b323-5cd0-47e9-a902-06ceae30545f","title":"Apple订单处理","description":"apple-order-processing","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"753b0096-e6c4-42d1-aba0-93c8df17fdc9","gmt_create":"2025-10-08T18:38:12+08:00","gmt_modified":"2025-10-08T18:38:12+08:00"},{"catalog_id":"6810876b-78f1-4c9d-a2e4-a82d03615272","title":"IP限制机制","description":"ip-restriction","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"0f130c1f-7f7b-4517-97a1-2d3646bbd246","gmt_create":"2025-10-08T18:38:32+08:00","gmt_modified":"2025-10-08T18:38:32+08:00"},{"catalog_id":"b5d20329-a5b6-4db0-8325-2b83ee9a2c52","title":"权限规则管理","description":"permission-management","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"8b580d72-5612-4fa0-b850-b3a7d72c1e19","gmt_create":"2025-10-08T18:39:14+08:00","gmt_modified":"2025-10-08T18:39:14+08:00"},{"catalog_id":"071ef93d-b914-433a-b69c-a4ec42c36381","title":"订单表单管理","description":"api-order-form","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"61e64814-3402-4560-ac80-de2897628585","gmt_create":"2025-10-08T18:39:17+08:00","gmt_modified":"2025-10-08T18:39:17+08:00"},{"catalog_id":"cc12ac77-8ff2-43e0-b014-8cbffbaa022d","title":"菜单管理API","description":"api-auth-menu","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"738f052a-42a0-4959-bafb-657eb467d57d","gmt_create":"2025-10-08T18:39:22+08:00","gmt_modified":"2025-10-08T18:39:22+08:00"},{"catalog_id":"162500a5-7167-4984-9744-2802fb00bd08","title":"钱包管理","description":"api-fund-wallet","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"0aafdca3-5383-41f6-95ae-95c4f6eb2f32","gmt_create":"2025-10-08T18:40:13+08:00","gmt_modified":"2025-10-08T18:40:13+08:00"},{"catalog_id":"8d814eba-e2eb-46c2-a59f-00ad5b8d5de2","title":"商户配置管理","description":"api-merchant-config","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"df46fe53-92ca-4da6-826a-b33df0bd242b","gmt_create":"2025-10-08T18:40:25+08:00","gmt_modified":"2025-10-08T18:40:25+08:00"},{"catalog_id":"bb872064-72df-45eb-ab34-4003a0fe8e62","title":"IP限制API","description":"api-restriction-ip","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"2c008ded-8f0f-4fae-a0a5-0cfb74c610ea","gmt_create":"2025-10-08T18:41:29+08:00","gmt_modified":"2025-10-08T18:41:29+08:00"},{"catalog_id":"04d0a6d4-e8a9-4e8c-a8f2-bee9fd409e56","title":"Apple卡密管理API","description":"api-card-info-apple","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"6e73ea9a-6384-4196-b8f0-c31e83783450","gmt_create":"2025-10-08T18:41:41+08:00","gmt_modified":"2025-10-08T18:41:41+08:00"},{"catalog_id":"0e3e4dfa-8842-4108-bd6d-6cde149b8707","title":"Dockerfile详解","description":"dockerfile","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"b2dccb33-ffec-4b07-8759-f7ce71472ecb","gmt_create":"2025-10-08T18:41:44+08:00","gmt_modified":"2025-10-08T18:41:44+08:00"},{"catalog_id":"27a44e9c-003b-4f06-9b87-2882cf3c1e08","title":"Makefile自动化构建","description":"makefile","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"5d780517-9a6d-4c42-ba58-f5b8ec8393ce","gmt_create":"2025-10-08T18:42:23+08:00","gmt_modified":"2025-10-08T18:42:23+08:00"},{"catalog_id":"d56eb845-7c0e-4be8-bf3a-239e3c0eb5e3","title":"京东卡密管理逻辑","description":"jd-card-logic","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"1efc56f9-e901-4ce4-b98e-e1c793ab2bda","gmt_create":"2025-10-08T18:43:18+08:00","gmt_modified":"2025-10-08T18:43:18+08:00"},{"catalog_id":"fa42c78e-0f93-45a1-8ee8-9cf8cfac869e","title":"地域限制机制","description":"geographical-restriction","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"6f8ee399-7380-4fee-a2e4-728f269611b1","gmt_create":"2025-10-08T18:43:32+08:00","gmt_modified":"2025-10-08T18:43:32+08:00"},{"catalog_id":"1ee1a6e7-8394-4ff7-88af-afda35cd1775","title":"角色管理API","description":"api-auth-role","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"f10ee956-3c2d-488f-a83d-d998dc2c2bd1","gmt_create":"2025-10-08T18:44:25+08:00","gmt_modified":"2025-10-08T18:44:26+08:00"},{"catalog_id":"0e1b4f85-8e7d-463d-b8db-4ee330d61a7f","title":"用户认证管理","description":"user-authentication","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"62cc6fce-b7b6-4a5b-8833-1751d5f0ba4e","gmt_create":"2025-10-08T18:44:56+08:00","gmt_modified":"2025-10-08T18:44:56+08:00"},{"catalog_id":"91befb50-6592-4b74-82da-7510ab876eff","title":"订单日志管理","description":"api-order-log","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"353ff7c7-0ce0-4cc3-a0aa-1d724d7c2190","gmt_create":"2025-10-08T18:45:08+08:00","gmt_modified":"2025-10-08T18:45:08+08:00"},{"catalog_id":"3738ad5b-aca0-4c87-9e86-9551d689f889","title":"商户部署管理","description":"api-merchant-deploy","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"c7dcc000-3176-454a-a9df-1ecd2131cc5b","gmt_create":"2025-10-08T18:45:48+08:00","gmt_modified":"2025-10-08T18:45:48+08:00"},{"catalog_id":"288b9b5a-64ba-4e93-885d-499412ad90fc","title":"京东卡密管理API","description":"api-card-info-jd","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"a4cd3134-13ac-4d33-a867-4d225a7f89c3","gmt_create":"2025-10-08T18:46:02+08:00","gmt_modified":"2025-10-08T18:46:02+08:00"},{"catalog_id":"3cd0ff7f-89a0-4ba5-89c6-d092ac39981d","title":"资金流水","description":"api-fund-wallet-log","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"692c0d1b-79e2-466b-bd94-9c041d9bda6b","gmt_create":"2025-10-08T18:46:06+08:00","gmt_modified":"2025-10-08T18:46:06+08:00"},{"catalog_id":"58118687-a7d8-4b0d-b788-36481cba182d","title":"Docker Compose编排","description":"docker_compose","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"99d1a050-0313-4c24-90a9-0db3ac835b2c","gmt_create":"2025-10-08T18:46:51+08:00","gmt_modified":"2025-10-08T18:46:51+08:00"},{"catalog_id":"2c2db8d8-8ed8-4ef7-85e5-9d42615aba0a","title":"地域限制API","description":"api-restriction-region","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"17fd343c-4fd0-4124-a801-902c9ecd72ea","gmt_create":"2025-10-08T18:46:54+08:00","gmt_modified":"2025-10-08T18:46:54+08:00"},{"catalog_id":"7fce1289-c2cc-4640-9fe2-2049d025cbb3","title":"Shell脚本自动化","description":"shell_scripts","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"eb1ee078-c356-49ad-827a-9313420c484d","gmt_create":"2025-10-08T18:47:04+08:00","gmt_modified":"2025-10-08T18:47:04+08:00"},{"catalog_id":"4ed6b7ca-ace0-4389-81b1-f1e35781d27c","title":"天猫平台集成","description":"tmall-integration","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"477c9fd9-139a-43fe-87ae-8d64529bbf2c","gmt_create":"2025-10-08T18:47:59+08:00","gmt_modified":"2025-10-08T18:47:59+08:00"},{"catalog_id":"e130f1c6-f0c7-4f2b-8467-d00341dffec6","title":"设备ID限制机制","description":"device-id-restriction","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"2c270c41-0c72-45b9-be8d-a5605ca16e32","gmt_create":"2025-10-08T18:48:47+08:00","gmt_modified":"2025-10-08T18:48:47+08:00"},{"catalog_id":"15255e1e-df14-473a-8e50-b20da5e10eec","title":"天猫订单处理","description":"tmall-order-processing","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"080fba3c-3cca-40b8-b913-c5cf213a36f9","gmt_create":"2025-10-08T18:49:02+08:00","gmt_modified":"2025-10-08T18:49:02+08:00"},{"catalog_id":"8137c301-f13b-4054-992f-c556767d7c45","title":"天猫卡密管理逻辑","description":"tmall-card-logic","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"1d7ddcb1-d8df-40ae-8bcf-ca2bedc292d3","gmt_create":"2025-10-08T18:49:06+08:00","gmt_modified":"2025-10-08T18:49:06+08:00"},{"catalog_id":"ed66dce5-4de8-4993-bc89-a466abb74f43","title":"租户管理API","description":"api-auth-tenant","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"29857cbd-6dcb-4ee9-b121-6312d5a523c9","gmt_create":"2025-10-08T18:49:45+08:00","gmt_modified":"2025-10-08T18:49:45+08:00"},{"catalog_id":"c32a3e21-0961-4618-a256-ee1396eca8c2","title":"天猫卡密管理API","description":"api-card-info-tmall","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"ae7b131d-110f-4347-a2db-f9ee1bb2568a","gmt_create":"2025-10-08T18:50:18+08:00","gmt_modified":"2025-10-08T18:50:18+08:00"},{"catalog_id":"c98a021c-f5a3-4847-b8a2-445d4b79ffe9","title":"盗单处理管理","description":"api-merchant-steal","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"824c49c6-ab20-4552-b22a-86d1e9351317","gmt_create":"2025-10-08T18:50:34+08:00","gmt_modified":"2025-10-08T18:50:34+08:00"},{"catalog_id":"87378996-7b26-4ef7-81e5-3e2c73c13d78","title":"用户信息收集API","description":"api-restriction-user-info","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"e81e6998-8633-4c13-ae1f-6eb9820aaa79","gmt_create":"2025-10-08T18:51:10+08:00","gmt_modified":"2025-10-08T18:51:10+08:00"},{"catalog_id":"1b7f1c36-8377-4ab0-91c2-52017bc8c76d","title":"订单汇总统计","description":"api-order-summary","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"04861c55-7eb4-4fb8-9367-ea7653e898c2","gmt_create":"2025-10-08T18:51:11+08:00","gmt_modified":"2025-10-08T18:51:11+08:00"},{"catalog_id":"e0f89cbb-9392-48f7-987d-45771ccb89fc","title":"Ctrip平台集成","description":"ctrip-integration","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"4c9682c6-1065-4e84-8b74-f2fdd80c62f4","gmt_create":"2025-10-08T18:51:42+08:00","gmt_modified":"2025-10-08T18:51:44+08:00"},{"catalog_id":"6c7962c8-8824-47d8-b89c-e12e2ab0e54c","title":"沃尔玛平台集成","description":"walmart-integration","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"a6a1a0f2-4a40-46ed-a2fa-abeaf60eea55","gmt_create":"2025-10-08T18:52:19+08:00","gmt_modified":"2025-10-08T18:52:19+08:00"},{"catalog_id":"7171317b-83f6-4146-8818-b00d88d2b2b2","title":"沃尔玛卡密管理API","description":"api-card-info-walmart","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"817fc86a-b662-454b-83ed-09be950b1bdc","gmt_create":"2025-10-08T18:52:33+08:00","gmt_modified":"2025-10-08T18:52:33+08:00"},{"catalog_id":"4a2f1ccb-e858-46e2-b051-4b553c1e2f48","title":"Ctrip卡密管理API","description":"api-card-info-ctrip","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"f8adb15a-410b-4784-bbd6-402691aacab2","gmt_create":"2025-10-08T18:52:54+08:00","gmt_modified":"2025-10-08T18:52:54+08:00"},{"catalog_id":"d47fa6fc-1893-43bf-906f-c9ed0db47dd9","title":"京东卡密账户管理","description":"jd-card-account-management","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"e200c8f1-c37b-41e9-bac1-057445ecb066","gmt_create":"2025-10-08T18:53:38+08:00","gmt_modified":"2025-10-08T18:53:38+08:00"},{"catalog_id":"de16dd4b-ba68-49bb-97c7-cc34f0ebba00","title":"Apple卡密账户管理","description":"apple-account-management","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"5fdf0a72-330a-4ef9-b6f2-56fc3b96a82f","gmt_create":"2025-10-08T18:53:45+08:00","gmt_modified":"2025-10-08T18:53:45+08:00"},{"catalog_id":"3ab7071c-90ec-4de1-8d64-d414460e61e3","title":"天猫卡密账户管理","description":"tmall-account-management","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"fc236117-4117-4af0-8d3d-0c3fbecab71a","gmt_create":"2025-10-08T18:54:12+08:00","gmt_modified":"2025-10-08T18:54:12+08:00"},{"catalog_id":"8b0278d7-2786-4c72-ae74-b9dd35efed2c","title":"IP记录管理","description":"ip-record-management","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"56080685-56e4-4a91-ba5c-6a25de62ccdf","gmt_create":"2025-10-08T18:54:37+08:00","gmt_modified":"2025-10-08T18:54:37+08:00"},{"catalog_id":"5624e47a-917e-43a1-bb5f-41c0c061836f","title":"设备ID采集机制","description":"device-id-collection","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"cfbdb9d5-b4d5-420d-9ee1-c9570f5c31f9","gmt_create":"2025-10-08T18:54:43+08:00","gmt_modified":"2025-10-08T18:54:43+08:00"},{"catalog_id":"f54d30d0-d3a6-47ba-bdfd-e7da45674e38","title":"登录认证","description":"login-authentication","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"0eb7033e-6cb9-4e9c-8641-e80f88d0203c","gmt_create":"2025-10-08T18:55:08+08:00","gmt_modified":"2025-10-08T18:55:08+08:00"},{"catalog_id":"60a234ee-1d45-4e80-b8bf-a0ba60aaf7ee","title":"Apple卡密账户管理","description":"api-card-info-apple-account","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"06a8f4cd-585e-43e5-992a-156951ca77b1","gmt_create":"2025-10-08T18:55:43+08:00","gmt_modified":"2025-10-08T18:55:43+08:00"},{"catalog_id":"708d0f68-64e4-4da7-a329-e73234ebb6d3","title":"权限规则定义","description":"permission-definition","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"f63d9ee2-939e-4112-8422-b76013d0c37b","gmt_create":"2025-10-08T18:55:45+08:00","gmt_modified":"2025-10-08T18:55:45+08:00"},{"catalog_id":"5a0f3a66-d169-4a34-95ca-e173a89429e2","title":"京东卡密账户管理","description":"api-card-info-jd-account","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"0eb68661-00bd-4d95-809e-54d87927a654","gmt_create":"2025-10-08T18:56:14+08:00","gmt_modified":"2025-10-08T18:56:14+08:00"},{"catalog_id":"f1ed70ff-aea4-4289-8223-fecd0ffd2cad","title":"构建阶段详解","description":"dockerfile-build","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"4c36e3bc-fa82-4d1b-a78d-e0832adf415b","gmt_create":"2025-10-08T18:56:29+08:00","gmt_modified":"2025-10-08T18:56:29+08:00"},{"catalog_id":"6a7b8a19-18bb-4222-8c43-45f6c25ea130","title":"天猫卡密账户管理","description":"api-card-info-tmall-account","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"a75ff292-fb3f-42ba-84d8-189105b57626","gmt_create":"2025-10-08T18:56:38+08:00","gmt_modified":"2025-10-08T18:56:38+08:00"},{"catalog_id":"9b95c229-e3f1-4960-a0be-1b88f001b0bd","title":"主服务配置","description":"docker_compose_main_service","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"3aade0ca-f25c-404f-a8ac-3b3d5d3619c1","gmt_create":"2025-10-08T18:57:12+08:00","gmt_modified":"2025-10-08T18:57:12+08:00"},{"catalog_id":"18a1847d-4be2-4c61-af2e-3f527f5f3d1c","title":"沃尔玛卡密账户管理","description":"api-card-info-walmart-account","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"d7798344-7bd7-4d4b-b7af-12e478898534","gmt_create":"2025-10-08T18:57:15+08:00","gmt_modified":"2025-10-08T18:57:15+08:00"},{"catalog_id":"745be06d-31ed-45f2-9822-e6cf41730cae","title":"Apple卡密充值处理","description":"apple-recharge-processing","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"1acfa79b-62c0-4874-99e4-6ae09004acc4","gmt_create":"2025-10-08T18:57:37+08:00","gmt_modified":"2025-10-08T18:57:37+08:00"},{"catalog_id":"230cd5da-15c7-41e8-9ed4-a0cc2496bd71","title":"京东卡密兑换处理","description":"jd-card-redeem-processing","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"6e962549-b111-4d8e-b263-89eafba99a84","gmt_create":"2025-10-08T18:58:15+08:00","gmt_modified":"2025-10-08T18:58:15+08:00"},{"catalog_id":"58030d31-a0a0-4431-abd1-4065b0200dfc","title":"天猫卡密订单处理","description":"tmall-order-processing","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"4d1ec235-b735-4351-abdb-3721a223dd51","gmt_create":"2025-10-08T18:58:16+08:00","gmt_modified":"2025-10-08T18:58:16+08:00"},{"catalog_id":"321018b9-e7f9-4101-968c-1818559aeb32","title":"IP查询优化","description":"ip-query-optimization","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"bd721dc3-a854-4ab4-af6f-1c1a24c2e660","gmt_create":"2025-10-08T18:58:38+08:00","gmt_modified":"2025-10-08T18:58:38+08:00"},{"catalog_id":"beeabbca-9f86-4566-98b3-6bbce10c5df2","title":"双因素认证","description":"two-factor-auth","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"838ae7a4-15cd-489b-b25d-f4af8946b45b","gmt_create":"2025-10-08T18:59:05+08:00","gmt_modified":"2025-10-08T18:59:05+08:00"},{"catalog_id":"c66c0c6a-c5ba-4081-a359-7bb0a47ca417","title":"设备ID存储策略","description":"device-id-storage","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"53947e3e-89de-416d-857e-54a84330a7ae","gmt_create":"2025-10-08T18:59:13+08:00","gmt_modified":"2025-10-08T18:59:13+08:00"},{"catalog_id":"3acdd907-8a5f-4d42-9ff1-61bd6e8cabee","title":"权限验证机制","description":"permission-validation","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"5512c349-309d-4bd7-9e7e-ec7df28c6d32","gmt_create":"2025-10-08T18:59:43+08:00","gmt_modified":"2025-10-08T18:59:43+08:00"},{"catalog_id":"f8a44d0b-b413-4926-a059-e1ac7b32cd45","title":"Apple卡密充值处理","description":"api-card-info-apple-recharge","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"e146bc47-a61b-4bec-bc1a-37faa13b372c","gmt_create":"2025-10-08T19:00:01+08:00","gmt_modified":"2025-10-08T19:00:01+08:00"},{"catalog_id":"a255fcc8-4b84-415f-bd11-dc26fa62d0b9","title":"京东卡密订单处理","description":"api-card-info-jd-order","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"8a159a71-a6ed-4138-93a9-e7c1be49368b","gmt_create":"2025-10-08T19:00:03+08:00","gmt_modified":"2025-10-08T19:00:03+08:00"},{"catalog_id":"c156f2b2-d455-46fd-8a01-d316c8e27336","title":"天猫卡密订单处理","description":"api-card-info-tmall-order","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"e8e1b906-cdb1-41b2-a03b-8450dfec49e1","gmt_create":"2025-10-08T19:00:59+08:00","gmt_modified":"2025-10-08T19:00:59+08:00"},{"catalog_id":"694e73a1-0845-4ebf-a2f6-990acde1e379","title":"沃尔玛卡密订单处理","description":"api-card-info-walmart-order","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"f696338b-1dae-45bc-b4e4-f7aab1a66b0d","gmt_create":"2025-10-08T19:01:13+08:00","gmt_modified":"2025-10-08T19:01:13+08:00"},{"catalog_id":"754a8225-3d82-4760-bc4f-280e0c19eb86","title":"运行阶段详解","description":"dockerfile-runtime","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"e05b2dc7-2335-4c8b-b24c-48a1f98f5361","gmt_create":"2025-10-08T19:01:19+08:00","gmt_modified":"2025-10-08T19:01:19+08:00"},{"catalog_id":"350fc114-3308-4a56-87eb-6916d2c2e278","title":"数据库配置","description":"docker_compose_database","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"34d853c3-140d-40d8-80fa-e7f32e322305","gmt_create":"2025-10-08T19:01:54+08:00","gmt_modified":"2025-10-08T19:01:54+08:00"},{"catalog_id":"677ff050-ffe6-4e0c-93e6-5aa4da717ad6","title":"Apple卡密历史记录管理","description":"apple-history-management","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"2c96823f-d6db-46ca-a33c-dbfdc28756a1","gmt_create":"2025-10-08T19:02:08+08:00","gmt_modified":"2025-10-08T19:02:08+08:00"},{"catalog_id":"b86eeb37-caa6-4edb-807b-036800419a82","title":"京东卡密分组管理","description":"jd-card-group-management","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"3a97712d-0f09-4a0a-b365-60d2af7a7fe2","gmt_create":"2025-10-08T19:02:13+08:00","gmt_modified":"2025-10-08T19:02:13+08:00"},{"catalog_id":"1072ba9e-1fcc-4ea4-9598-564f965be8fd","title":"设备ID匹配算法","description":"device-id-matching","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"17fa72bc-2bc8-478c-9b6a-9d6cae53f588","gmt_create":"2025-10-08T19:02:59+08:00","gmt_modified":"2025-10-08T19:02:59+08:00"},{"catalog_id":"9267865e-7ecd-4a9f-9bdc-66f3c47cdd00","title":"天猫卡密工作空间管理","description":"tmall-workspace-management","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"7aca7e2a-1e25-4628-a4ba-3f97fdeb9279","gmt_create":"2025-10-08T19:03:01+08:00","gmt_modified":"2025-10-08T19:03:01+08:00"},{"catalog_id":"4de9e641-e754-4df4-be5c-96bd78e98da8","title":"IP限制策略","description":"ip-restriction-strategy","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"ff38a877-a28e-47d8-b5c9-939b865c97a3","gmt_create":"2025-10-08T19:03:06+08:00","gmt_modified":"2025-10-08T19:03:06+08:00"},{"catalog_id":"282f094b-3780-49d1-b057-75345b1de3c1","title":"会话管理","description":"session-management","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"6d1d4be2-a13f-4897-bcc9-362da9158d9b","gmt_create":"2025-10-08T19:03:57+08:00","gmt_modified":"2025-10-08T19:03:57+08:00"},{"catalog_id":"0406e349-1ce0-4ec4-9c86-6c842ad5b1d2","title":"权限策略管理","description":"permission-policy-management","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"4a89e30e-d877-427e-98c3-0d58a4fba7a8","gmt_create":"2025-10-08T19:03:58+08:00","gmt_modified":"2025-10-08T19:03:58+08:00"},{"catalog_id":"6d3c9aea-cd8a-4031-b3a4-7491202249b6","title":"Apple卡密配置管理","description":"api-card-info-apple-config","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"0ae6bf62-bc86-44bf-b631-7329d2a379ca","gmt_create":"2025-10-08T19:04:12+08:00","gmt_modified":"2025-10-08T19:04:12+08:00"},{"catalog_id":"45710fa8-25aa-4217-ae14-a73410f49c30","title":"京东卡密数据汇总","description":"api-card-info-jd-summary","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"4bf6885a-1224-4cca-8789-3f3def1f0343","gmt_create":"2025-10-08T19:04:46+08:00","gmt_modified":"2025-10-08T19:04:46+08:00"},{"catalog_id":"1bb36bef-7cd2-4cfe-895a-726588a9a89b","title":"天猫卡密店铺管理","description":"api-card-info-tmall-shop","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"0cfb0e8f-47c2-4030-a2e1-3993fb770b8d","gmt_create":"2025-10-08T19:05:04+08:00","gmt_modified":"2025-10-08T19:05:04+08:00"},{"catalog_id":"25942f43-183a-4e00-be2e-c61ae84373a3","title":"沃尔玛卡密分组管理","description":"api-card-info-walmart-group","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"1d532660-5e04-421b-a2b4-3e542c48a890","gmt_create":"2025-10-08T19:05:31+08:00","gmt_modified":"2025-10-08T19:05:31+08:00"},{"catalog_id":"f9c16741-f716-4147-9f51-cd748e8960a5","title":"缓存配置","description":"docker_compose_cache","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"30b6ff79-67a8-4a39-9112-e0af3e9e7f7d","gmt_create":"2025-10-08T19:05:35+08:00","gmt_modified":"2025-10-08T19:05:35+08:00"},{"catalog_id":"f7e484b5-92f1-43b5-8bf5-9cd33a035658","title":"设备ID隐私保护","description":"device-id-privacy","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"a3c9a66f-dcd6-40fb-89b8-abb130e7744a","gmt_create":"2025-10-08T19:05:48+08:00","gmt_modified":"2025-10-08T19:05:48+08:00"},{"catalog_id":"f72acdfa-67dd-4c2f-8c3f-17f119b4be62","title":"部署自动化","description":"docker_compose_deployment_automation","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"324bc16b-185c-4af1-8202-3d9b7a9e6e6f","gmt_create":"2025-10-08T19:06:32+08:00","gmt_modified":"2025-10-08T19:06:32+08:00"},{"catalog_id":"e5c8c7c7-0135-416c-a55a-80655940b9c4","title":"天猫卡密回调机制","description":"api-card-info-tmall-callback","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"24431815-8687-4b29-b798-214916920f7f","gmt_create":"2025-10-08T19:06:42+08:00","gmt_modified":"2025-10-08T19:06:43+08:00"},{"catalog_id":"fd83f8e3-9940-400c-9e6d-de5f5af056a4","title":"天猫卡密工作区管理","description":"api-card-info-tmall-workspace","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"eee4b669-1eb7-45b9-a835-ffebfee1f682","gmt_create":"2025-10-08T19:06:55+08:00","gmt_modified":"2025-10-08T19:06:55+08:00"},{"catalog_id":"529d0827-5291-40f8-8e40-3b0ec55570bc","title":"京东Cookie管理模块重构设计","description":"jd-cookie-refactor-design","extend":"{}","progress_status":"completed","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740","id":"743dffa6-cd2e-413c-8747-415bb3c039fc","gmt_create":"2025-10-11T17:31:20.532584+08:00","gmt_modified":"2025-10-11T17:31:20.5641479+08:00"}],"wiki_overview":{"content":"\u003cblog\u003e\n# kami_backend 项目综合分析报告\n\n## 1. 项目介绍\n\n### 项目目的\nkami_backend 是一个基于 GoFrame 框架构建的后端服务系统,主要功能是为各类电商平台(如京东、天猫、沃尔玛、Ctrip 等)的卡密信息管理、订单处理、账户管理提供统一的 API 接口支持。系统集成了权限控制、支付管理、商户管理、风控限制等模块,形成了完整的后台管理系统。\n\n### 核心目标\n- 提供统一的电商平台卡密充值与兑换接口\n- 实现多平台账户信息集中管理\n- 支持灵活的权限控制与角色管理\n- 构建可扩展的微服务架构基础\n- 集成可观测性系统(OpenTelemetry)\n\n### 目标用户\n- 平台运营管理人员\n- 第三方商户接入方\n- 系统维护与开发人员\n- 安全审计人员\n\n## 2. 技术架构\n\n### 组件分解\n项目采用典型的分层架构设计,包含以下核心组件:\n\n- **API 层**:位于 `api/` 目录,定义了所有对外暴露的 RESTful 接口\n- **Controller 层**:位于 `internal/controller/`,处理请求转发与参数校验\n- **Service 层**:位于 `internal/service/`,实现核心业务逻辑\n- **Logic 层**:位于 `internal/logic/`,封装具体业务规则\n- **DAO 层**:位于 `internal/dao/`,负责数据访问操作\n- **Model 层**:位于 `internal/model/`,定义数据结构与实体\n- **Utility 工具层**:位于 `utility/`,提供通用工具函数\n\n### 设计模式\n系统采用了多种设计模式:\n- **MVC 模式**:清晰分离关注点\n- **依赖注入**:通过 GoFrame 的 DI 机制实现\n- **中间件模式**:用于认证、日志、错误处理\n- **策略模式**:不同电商平台的处理逻辑分离\n\n### 系统关系与数据流\n\n```mermaid\nflowchart TD\n A[客户端] --\u003e B[API Gateway]\n B --\u003e C[Middlewares]\n C --\u003e D[Controller]\n D --\u003e E[Service]\n E --\u003e F[Logic]\n F --\u003e G[DAO]\n G --\u003e H[(MySQL)]\n G --\u003e I[(Redis)]\n J[OpenTelemetry] \u003c--\u003e K[日志/监控/追踪]\n style A fill:#f9f,stroke:#333\n style H fill:#ccf,stroke:#333\n style I fill:#ccf,stroke:#333\n```\n\n## 3. 关键实现\n\n### 主要入口点\n- **main.go**:应用启动入口,负责初始化 OTel 和运行主服务\n- **cmd.go**:命令行处理逻辑\n- **boot_enums.go**:系统启动时自动加载的枚举配置\n\nSources:\n- [main.go](main.go)\n- [cmd.go](internal/cmd/cmd.go)\n- [boot_enums.go](internal/boot/boot_enums.go)\n\n### 核心模块\n- **权限管理模块** (`api/authority`):基于 Casbin 的 RBAC 权限控制\n- **卡密信息管理模块** (`api/card_info_*`):支持多个电商平台\n- **订单管理模块** (`api/order`):统一订单处理流程\n- **商户管理模块** (`api/merchant`):商户接入与配置管理\n- **风控限制模块** (`api/restriction`):IP 限制、访问控制等\n\nSources:\n- [authority.go](api/authority/authority.go)\n- [order.go](api/order/order.go)\n- [merchant.go](api/merchant/merchant.go)\n- [restriction.go](api/restriction/restriction.go)\n\n### 配置方法\n系统使用 YAML 配置文件进行管理,主要配置文件包括:\n\n- `manifest/config/config.yaml`:主配置文件,包含数据库、Redis、服务端口等\n- `hack/config.yaml`:gfcli 工具配置,用于代码生成\n- `resource/casbin/rbac_model.conf`:权限模型配置\n\n配置通过 GoFrame 的 gcfg 组件加载,支持环境变量覆盖。\n\nSources:\n- [config.yaml](manifest/config/config.yaml)\n- [rbac_model.conf](resource/casbin/rbac_model.conf)\n\n### 外部依赖\n```mermaid\ngraph TD\n A[kami_backend] --\u003e B[MySQL]\n A --\u003e C[Redis]\n A --\u003e D[OpenTelemetry Collector]\n A --\u003e E[Taobao API]\n A --\u003e F[Jingdong Service]\n A --\u003e G[Ctrip API]\n A --\u003e H[Walmart API]\n A --\u003e I[Agiso Platform]\n style A fill:#f96,stroke:#333\n```\n\n### 集成点\n- **OAuth2 集成**:天猫游戏平台 OAuth 接入\n- **第三方支付通知**:飞书 Webhook 通知\n- **外部服务调用**:京东卡密服务、Ctrip 接口等\n- **可观测性集成**:OpenTelemetry 全链路追踪\n\nSources:\n- [config.yaml](manifest/config/config.yaml#L80-L95)\n\n## 4. 关键特性\n\n### 功能概览\n- 多平台卡密充值与兑换\n- 完善的权限与角色管理体系\n- 商户接入与配置管理\n- 订单全生命周期管理\n- 风控与访问限制机制\n- 可视化监控与日志系统\n\n### 实现亮点\n- **模块化设计**:每个电商平台独立模块,易于扩展\n- **自动化代码生成**:通过 gfcli 自动生成 DAO、Service 等代码\n- **安全机制完善**:包含 MFA、Token 加密、AES/MD5 验证等\n- **可观测性强**:集成 OpenTelemetry 实现监控、追踪、日志一体化\n\n### 特性架构图\n\n```mermaid\nstateDiagram-v2\n [*] --\u003e 初始化\n 初始化 --\u003e 配置加载: 读取YAML\n 配置加载 --\u003e 数据库连接: MySQL/Redis\n 数据库连接 --\u003e 服务注册: API路由\n 服务注册 --\u003e 权限初始化: Casbin\n 权限初始化 --\u003e 运行中: 接收请求\n 运行中 --\u003e 异常处理: Middleware\n 异常处理 --\u003e 运行中\n 运行中 --\u003e 日志记录: OTel\n```\n\nSources:\n- [main.go](main.go#L1-L49)\n- [config.go](utility/config/config.go)\n- [otel](utility/otel)\n\u003c/blog\u003e","gmt_create":"2025-10-08T18:16:44+08:00","gmt_modified":"2025-10-08T18:16:44+08:00","id":"2a3bb0d1-da41-428d-be41-2df43f097c60","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740"},"wiki_readme":{"content":"### docker deploy token\r\n\r\n579f3fab0f179949b1b8a509ba4f2dff0c8dcdd5","gmt_create":"2025-10-08T17:56:14+08:00","gmt_modified":"2025-10-08T17:56:14+08:00","id":"f3ffe0e6-9115-4f61-b2cb-742ee58f26e2","repo_id":"151903b3-bd50-409c-b5b5-1928c28ec740"},"wiki_repo":{"id":"151903b3-bd50-409c-b5b5-1928c28ec740","name":"kami_backend","progress_status":"completed","wiki_present_status":"COMPLETED","optimized_catalog":"\".\\n├── api\\n│ ├── authority\\n│ │ ├── v1\\n│ │ │ ├── menu.go\\n│ │ │ ├── model.go\\n│ │ │ ├── role.go\\n│ │ │ └── tenant.go\\n│ │ └── authority.go\\n│ ├── card_info_apple\\n│ │ ├── v1\\n│ │ │ ├── account_history.go\\n│ │ │ ├── account_info.go\\n│ │ │ ├── config.go\\n│ │ │ ├── model.go\\n│ │ │ ├── order.go\\n│ │ │ ├── order_history.go\\n│ │ │ └── order_steal.go\\n│ │ └── card_info_apple.go\\n│ ├── card_info_c_trip\\n│ │ ├── v1\\n│ │ │ ├── account.go\\n│ │ │ ├── config.go\\n│ │ │ └── order.go\\n│ │ └── card_info_c_trip.go\\n│ ├── card_info_jd\\n│ │ ├── v1\\n│ │ │ ├── account.go\\n│ │ │ ├── config.go\\n│ │ │ ├── order.go\\n│ │ │ └── order_summary.go\\n│ │ └── card_info_jd.go\\n│ ├── card_info_original_jd\\n│ │ ├── v1\\n│ │ │ └── account.go\\n│ │ └── card_info_original_jd.go\\n│ ├── card_info_t_mall_game\\n│ │ ├── v1\\n│ │ │ ├── account.go\\n│ │ │ ├── callback.go\\n│ │ │ ├── fake.go\\n│ │ │ ├── order.go\\n│ │ │ ├── shop.go\\n│ │ │ ├── sync.go\\n│ │ │ └── workspace.go\\n│ │ └── card_info_t_mall_game.go\\n│ ├── card_info_walmart\\n│ │ ├── v1\\n│ │ │ ├── account.go\\n│ │ │ ├── config.go\\n│ │ │ ├── group.go\\n│ │ │ ├── order.go\\n│ │ │ ├── order_summary.go\\n│ │ │ └── stats.go\\n│ │ └── card_info_walmart.go\\n│ ├── card_redeem_jd\\n│ │ ├── v1\\n│ │ │ ├── account.go\\n│ │ │ └── order.go\\n│ │ └── card_redeem_jd.go\\n│ ├── channel\\n│ │ ├── v2\\n│ │ │ ├── entrance.go\\n│ │ │ └── model.go\\n│ │ └── channel.go\\n│ ├── commonApi\\n│ │ └── common.go\\n│ ├── fund\\n│ │ ├── v1\\n│ │ │ ├── wallet.go\\n│ │ │ └── wallet_log.go\\n│ │ └── fund.go\\n│ ├── merchant\\n│ │ ├── v1\\n│ │ │ ├── config.go\\n│ │ │ ├── deploy.go\\n│ │ │ ├── model.go\\n│ │ │ ├── order.go\\n│ │ │ └── steal.go\\n│ │ └── merchant.go\\n│ ├── monitor\\n│ │ ├── v1\\n│ │ │ └── heathcheck.go\\n│ │ └── monitor.go\\n│ ├── order\\n│ │ ├── v1\\n│ │ │ ├── form.go\\n│ │ │ ├── log.go\\n│ │ │ └── order_summary.go\\n│ │ └── order.go\\n│ ├── restriction\\n│ │ ├── v1\\n│ │ │ ├── collection.go\\n│ │ │ └── province.go\\n│ │ └── restriction.go\\n│ ├── road\\n│ │ ├── v1\\n│ │ │ └── road.go\\n│ │ └── road.go\\n│ ├── road_pool\\n│ │ ├── v1\\n│ │ │ └── road_pool.go\\n│ │ └── road_pool.go\\n│ ├── sysUser\\n│ │ ├── v1\\n│ │ │ ├── logout.go\\n│ │ │ ├── model.go\\n│ │ │ ├── payment.go\\n│ │ │ ├── sysUser.go\\n│ │ │ └── totp.go\\n│ │ └── sysUser.go\\n│ ├── sys_auth_rule\\n│ │ ├── v1\\n│ │ │ ├── model.go\\n│ │ │ └── sys_auth_rule.go\\n│ │ └── sys_auth_rule.go\\n│ ├── sys_payment\\n│ │ ├── v1\\n│ │ │ ├── statistic.go\\n│ │ │ └── sys_payment.go\\n│ │ └── sys_payment.go\\n│ ├── sys_role\\n│ │ ├── v1\\n│ │ │ ├── model.go\\n│ │ │ └── sys_role.go\\n│ │ └── sys_role.go\\n│ ├── sys_user_login\\n│ │ ├── v1\\n│ │ │ ├── model.go\\n│ │ │ └── sys_user_login.go\\n│ │ └── sys_user_login.go\\n│ ├── user_center\\n│ │ ├── v1\\n│ │ │ └── info.go\\n│ │ └── user_center.go\\n│ └── validation\\n│ ├── v1\\n│ │ └── captcha.go\\n│ └── validation.go\\n├── hack\\n│ └── config.yaml\\n├── internal\\n│ ├── boot\\n│ │ └── boot_enums.go\\n│ ├── cmd\\n│ │ └── cmd.go\\n│ ├── consts\\n│ │ ├── asigo.go\\n│ │ ├── cache.go\\n│ │ ├── card_apple.go\\n│ │ ├── card_excharge.go\\n│ │ ├── card_jd.go\\n│ │ ├── card_recharge_t_mall.go\\n│ │ ├── card_redeem.go\\n│ │ ├── card_redeem_cookie.go\\n│ │ ├── common.go\\n│ │ ├── consts.go\\n│ │ ├── entrance.go\\n│ │ ├── login_status.go\\n│ │ ├── restriction.go\\n│ │ ├── road.go\\n│ │ ├── sysUser.go\\n│ │ ├── sys_config_dict.go\\n│ │ ├── sys_user_channel_config.go\\n│ │ ├── sys_user_deductions.go\\n│ │ └── sys_user_payment_record.go\\n│ ├── controller\\n│ │ ├── authority\\n│ │ │ ├── authority.go\\n│ │ │ ├── authority_new.go\\n│ │ │ ├── authority_v1_menu_create.go\\n│ │ │ ├── authority_v1_menu_delete.go\\n│ │ │ ├── authority_v1_menu_list.go\\n│ │ │ ├── authority_v1_menu_update.go\\n│ │ │ ├── authority_v1_role_create.go\\n│ │ │ ├── authority_v1_role_delete.go\\n│ │ │ ├── authority_v1_role_list.go\\n│ │ │ ├── authority_v1_role_update.go\\n│ │ │ ├── authority_v1_tenant_create.go\\n│ │ │ ├── authority_v1_tenant_delete.go\\n│ │ │ ├── authority_v1_tenant_list.go\\n│ │ │ └── authority_v1_tenant_update.go\\n│ │ ├── card_info_apple\\n│ │ │ ├── apple_card_info_v1_recharge_list_download_test.go\\n│ │ │ ├── card_info_apple.go\\n│ │ │ ├── card_info_apple_new.go\\n│ │ │ ├── card_info_apple_v1_call_back_order_manual.go\\n│ │ │ ├── card_info_apple_v1_card_history_info_list.go\\n│ │ │ ├── card_info_apple_v1_card_info_batch_add_from_xlsx.go\\n│ │ │ ├── card_info_apple_v1_card_info_create.go\\n│ │ │ ├── card_info_apple_v1_card_info_delete.go\\n│ │ │ ├── card_info_apple_v1_card_info_download_template.go\\n│ │ │ ├── card_info_apple_v1_card_info_list.go\\n│ │ │ ├── card_info_apple_v1_card_info_suspend_or_continue.go\\n│ │ │ ├── card_info_apple_v1_card_info_update.go\\n│ │ │ ├── card_info_apple_v1_card_info_update_status.go\\n│ │ │ ├── card_info_apple_v1_config_get.go\\n│ │ │ ├── card_info_apple_v1_config_set.go\\n│ │ │ ├── card_info_apple_v1_recharge_duplicated_card_pass.go\\n│ │ │ ├── card_info_apple_v1_recharge_handler.go\\n│ │ │ ├── card_info_apple_v1_recharge_history_list.go\\n│ │ │ ├── card_info_apple_v1_recharge_itunes_callback.go\\n│ │ │ ├── card_info_apple_v1_recharge_list.go\\n│ │ │ ├── card_info_apple_v1_recharge_list_download.go\\n│ │ │ ├── card_info_apple_v1_recharge_order_modify_actual_amount.go\\n│ │ │ ├── card_info_apple_v1_recharge_order_reset_status.go\\n│ │ │ ├── card_info_apple_v1_recharge_steal_rule_add.go\\n│ │ │ ├── card_info_apple_v1_recharge_steal_rule_delete.go\\n│ │ │ ├── card_info_apple_v1_recharge_steal_rule_list.go\\n│ │ │ ├── card_info_apple_v1_recharge_steal_rule_status_update.go\\n│ │ │ ├── card_info_apple_v1_recharge_steal_rule_update.go\\n│ │ │ ├── card_info_apple_v1_recharge_steal_setting.go\\n│ │ │ ├── card_info_apple_v1_recharge_steal_setting_get.go\\n│ │ │ ├── card_info_apple_v1_recharge_submit.go\\n│ │ │ └── card_info_apple_v1_recharge_submit_query.go\\n│ │ ├── card_info_c_trip\\n│ │ │ ├── card_info_c_trip.go\\n│ │ │ ├── card_info_c_trip_new.go\\n│ │ │ ├── card_info_c_trip_v1_account_cookie_batch_add.go\\n│ │ │ ├── card_info_c_trip_v1_account_cookie_batch_check.go\\n│ │ │ ├── card_info_c_trip_v1_account_cookie_check.go\\n│ │ │ ├── card_info_c_trip_v1_account_create.go\\n│ │ │ ├── card_info_c_trip_v1_account_delete.go\\n│ │ │ ├── card_info_c_trip_v1_account_list.go\\n│ │ │ ├── card_info_c_trip_v1_account_refresh_status.go\\n│ │ │ ├── card_info_c_trip_v1_account_update.go\\n│ │ │ ├── card_info_c_trip_v1_account_update_status.go\\n│ │ │ ├── card_info_c_trip_v1_account_wallet_list.go\\n│ │ │ ├── card_info_c_trip_v1_download.go\\n│ │ │ ├── card_info_c_trip_v1_download_template.go\\n│ │ │ ├── card_info_c_trip_v1_list.go\\n│ │ │ ├── card_info_c_trip_v1_order_callback.go\\n│ │ │ ├── card_info_c_trip_v1_order_history.go\\n│ │ │ ├── card_info_c_trip_v1_redeem_config_get.go\\n│ │ │ ├── card_info_c_trip_v1_redeem_config_set.go\\n│ │ │ └── card_info_c_trip_v1_submit.go\\n│ │ ├── card_info_jd\\n│ │ │ ├── card_info_jd.go\\n│ │ │ ├── card_info_jd_new.go\\n│ │ │ ├── card_info_jd_v1_download.go\\n│ │ │ ├── card_info_jd_v1_download_template.go\\n│ │ │ ├── card_info_jd_v1_jd_account_cookie_batch_add.go\\n│ │ │ ├── card_info_jd_v1_jd_account_cookie_batch_check.go\\n│ │ │ ├── card_info_jd_v1_jd_account_cookie_check.go\\n│ │ │ ├── card_info_jd_v1_jd_account_create.go\\n│ │ │ ├── card_info_jd_v1_jd_account_delete.go\\n│ │ │ ├── card_info_jd_v1_jd_account_list.go\\n│ │ │ ├── card_info_jd_v1_jd_account_refresh_status.go\\n│ │ │ ├── card_info_jd_v1_jd_account_update.go\\n│ │ │ ├── card_info_jd_v1_jd_account_update_status.go\\n│ │ │ ├── card_info_jd_v1_jd_account_wallet_list.go\\n│ │ │ ├── card_info_jd_v1_jd_config_get.go\\n│ │ │ ├── card_info_jd_v1_jd_config_set.go\\n│ │ │ ├── card_info_jd_v1_list.go\\n│ │ │ ├── card_info_jd_v1_order_callback.go\\n│ │ │ ├── card_info_jd_v1_order_history.go\\n│ │ │ ├── card_info_jd_v1_order_summary_list.go\\n│ │ │ └── card_info_jd_v1_submit.go\\n│ │ ├── card_info_original_jd\\n│ │ │ ├── card_info_original_jd.go\\n│ │ │ ├── card_info_original_jd_new.go\\n│ │ │ ├── card_info_original_jd_v1_original_download.go\\n│ │ │ ├── card_info_original_jd_v1_original_download_template.go\\n│ │ │ ├── card_info_original_jd_v1_original_jd_account_cookie_batch_add.go\\n│ │ │ ├── card_info_original_jd_v1_original_jd_account_cookie_batch_check.go\\n│ │ │ ├── card_info_original_jd_v1_original_jd_account_cookie_check.go\\n│ │ │ ├── card_info_original_jd_v1_original_jd_account_create.go\\n│ │ │ ├── card_info_original_jd_v1_original_jd_account_delete.go\\n│ │ │ ├── card_info_original_jd_v1_original_jd_account_list.go\\n│ │ │ ├── card_info_original_jd_v1_original_jd_account_refresh_status.go\\n│ │ │ ├── card_info_original_jd_v1_original_jd_account_update.go\\n│ │ │ ├── card_info_original_jd_v1_original_jd_account_update_status.go\\n│ │ │ └── card_info_original_jd_v1_original_jd_account_wallet_list.go\\n│ │ ├── card_info_t_mall_game\\n│ │ │ ├── card_info_t_mall_game.go\\n│ │ │ ├── card_info_t_mall_game_new.go\\n│ │ │ ├── card_info_t_mall_game_v1_call_back_order_manual.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_account_authorize_callback.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_account_authorize_get_key.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_account_create.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_account_delete.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_account_get_one_random.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_account_list.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_account_t_mall_auth_status.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_account_toggle.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_agiso_callback.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_agiso_callback_test.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_daily_order_summary.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_data_sync.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_order_list.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_order_modify_status_succeed.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_order_query_category.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_order_query_order.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_order_submit.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_shop_order_get_one.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_shop_order_history.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_shop_order_list.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_shop_order_t_mall_history.go\\n│ │ │ └── card_info_t_mall_game_v1_t_mall_game_stats.go\\n│ │ ├── card_info_walmart\\n│ │ │ ├── card_info_walmart.go\\n│ │ │ ├── card_info_walmart_new.go\\n│ │ │ ├── card_info_walmart_v1_account_cookie_batch_add.go\\n│ │ │ ├── card_info_walmart_v1_account_cookie_batch_check.go\\n│ │ │ ├── card_info_walmart_v1_account_cookie_check.go\\n│ │ │ ├── card_info_walmart_v1_account_create.go\\n│ │ │ ├── card_info_walmart_v1_account_daily_summary.go\\n│ │ │ ├── card_info_walmart_v1_account_delete.go\\n│ │ │ ├── card_info_walmart_v1_account_list.go\\n│ │ │ ├── card_info_walmart_v1_account_load.go\\n│ │ │ ├── card_info_walmart_v1_account_refresh_status.go\\n│ │ │ ├── card_info_walmart_v1_account_status_detect.go\\n│ │ │ ├── card_info_walmart_v1_account_summary_download.go\\n│ │ │ ├── card_info_walmart_v1_account_update.go\\n│ │ │ ├── card_info_walmart_v1_account_update_status.go\\n│ │ │ ├── card_info_walmart_v1_account_wallet_list.go\\n│ │ │ ├── card_info_walmart_v1_download.go\\n│ │ │ ├── card_info_walmart_v1_download_template.go\\n│ │ │ ├── card_info_walmart_v1_group_add.go\\n│ │ │ ├── card_info_walmart_v1_group_all_list.go\\n│ │ │ ├── card_info_walmart_v1_group_delete.go\\n│ │ │ ├── card_info_walmart_v1_group_export.go\\n│ │ │ ├── card_info_walmart_v1_group_list.go\\n│ │ │ ├── card_info_walmart_v1_group_stat.go\\n│ │ │ ├── card_info_walmart_v1_group_update.go\\n│ │ │ ├── card_info_walmart_v1_list.go\\n│ │ │ ├── card_info_walmart_v1_order_callback.go\\n│ │ │ ├── card_info_walmart_v1_order_export.go\\n│ │ │ ├── card_info_walmart_v1_order_history.go\\n│ │ │ ├── card_info_walmart_v1_order_status_reset.go\\n│ │ │ ├── card_info_walmart_v1_order_summary_list.go\\n│ │ │ ├── card_info_walmart_v1_redeem_config_get.go\\n│ │ │ ├── card_info_walmart_v1_redeem_config_set.go\\n│ │ │ ├── card_info_walmart_v1_stats_overview.go\\n│ │ │ ├── card_info_walmart_v1_stats_overview_download.go\\n│ │ │ └── card_info_walmart_v1_submit.go\\n│ │ ├── card_redeem_jd\\n│ │ │ ├── card_redeem_jd.go\\n│ │ │ ├── card_redeem_jd_new.go\\n│ │ │ ├── card_redeem_jd_v1_account_add.go\\n│ │ │ ├── card_redeem_jd_v1_account_delete.go\\n│ │ │ ├── card_redeem_jd_v1_account_get.go\\n│ │ │ ├── card_redeem_jd_v1_account_list.go\\n│ │ │ ├── card_redeem_jd_v1_account_status.go\\n│ │ │ ├── card_redeem_jd_v1_account_update.go\\n│ │ │ ├── card_redeem_jd_v1_order_list.go\\n│ │ │ └── card_redeem_jd_v1_place_order.go\\n│ │ ├── channel\\n│ │ │ ├── channel.go\\n│ │ │ ├── channel_new.go\\n│ │ │ ├── channel_v2_entrance_create.go\\n│ │ │ ├── channel_v2_entrance_delete.go\\n│ │ │ ├── channel_v2_entrance_list.go\\n│ │ │ └── channel_v2_entrance_update.go\\n│ │ ├── fund\\n│ │ │ ├── fund.go\\n│ │ │ ├── fund_new.go\\n│ │ │ ├── fund_v1_menu_log_create.go\\n│ │ │ ├── fund_v1_menu_log_delete.go\\n│ │ │ ├── fund_v1_menu_log_list.go\\n│ │ │ ├── fund_v1_menu_log_update.go\\n│ │ │ ├── fund_v1_wallet_create.go\\n│ │ │ ├── fund_v1_wallet_delete.go\\n│ │ │ ├── fund_v1_wallet_list.go\\n│ │ │ └── fund_v1_wallet_update.go\\n│ │ ├── merchant\\n│ │ │ ├── merchant.go\\n│ │ │ ├── merchant_new.go\\n│ │ │ ├── merchant_v1_merchant_all_list.go\\n│ │ │ ├── merchant_v1_merchant_config_add.go\\n│ │ │ ├── merchant_v1_merchant_config_detail.go\\n│ │ │ ├── merchant_v1_merchant_config_list.go\\n│ │ │ ├── merchant_v1_merchant_config_status.go\\n│ │ │ ├── merchant_v1_merchant_config_update.go\\n│ │ │ ├── merchant_v1_merchant_deploy_add.go\\n│ │ │ ├── merchant_v1_merchant_deploy_delete.go\\n│ │ │ ├── merchant_v1_merchant_deploy_get_detail.go\\n│ │ │ ├── merchant_v1_merchant_deploy_list.go\\n│ │ │ ├── merchant_v1_merchant_deploy_update.go\\n│ │ │ ├── merchant_v1_merchant_sample_all_list.go\\n│ │ │ ├── merchant_v1_order_query.go\\n│ │ │ ├── merchant_v1_steal_create.go\\n│ │ │ ├── merchant_v1_steal_delete.go\\n│ │ │ ├── merchant_v1_steal_list.go\\n│ │ │ ├── merchant_v1_steal_record_list.go\\n│ │ │ ├── merchant_v1_steal_stats.go\\n│ │ │ ├── merchant_v1_steal_status_get.go\\n│ │ │ ├── merchant_v1_steal_status_set.go\\n│ │ │ ├── merchant_v1_steal_update.go\\n│ │ │ └── merchant_v1_steal_update_status.go\\n│ │ ├── monitor\\n│ │ │ ├── monitor.go\\n│ │ │ ├── monitor_new.go\\n│ │ │ └── monitor_v1_health_check.go\\n│ │ ├── order\\n│ │ │ ├── order.go\\n│ │ │ ├── order_new.go\\n│ │ │ ├── order_v1_order_form_create.go\\n│ │ │ ├── order_v1_order_form_delete.go\\n│ │ │ ├── order_v1_order_form_list.go\\n│ │ │ ├── order_v1_order_form_update.go\\n│ │ │ ├── order_v1_order_log_delete.go\\n│ │ │ ├── order_v1_order_log_list.go\\n│ │ │ ├── order_v1_order_summary_daily_get_list.go\\n│ │ │ └── order_v1_order_summary_get_list.go\\n│ │ ├── restriction\\n│ │ │ ├── restriction.go\\n│ │ │ ├── restriction_new.go\\n│ │ │ ├── restriction_v1_block_order.go\\n│ │ │ ├── restriction_v1_check_ip_allowed.go\\n│ │ │ ├── restriction_v1_query_all_province.go\\n│ │ │ ├── restriction_v1_user_info_collection.go\\n│ │ │ └── restriction_v1_user_info_collection_test.go\\n│ │ ├── road\\n│ │ │ ├── road.go\\n│ │ │ ├── road_new.go\\n│ │ │ └── road_v1_simple_all_get_road.go\\n│ │ ├── road_pool\\n│ │ │ ├── road_pool.go\\n│ │ │ ├── road_pool_new.go\\n│ │ │ └── road_pool_v1_simple_all_get_road.go\\n│ │ ├── sysUser\\n│ │ │ ├── sysUser.go\\n│ │ │ ├── sysUser_new.go\\n│ │ │ ├── sysUser_v1_totp_image_get.go\\n│ │ │ ├── sysUser_v1_totp_reset.go\\n│ │ │ ├── sysUser_v1_totp_set.go\\n│ │ │ ├── sysUser_v1_totp_status_get.go\\n│ │ │ ├── sysUser_v1_user_add.go\\n│ │ │ ├── sysUser_v1_user_change_pwd.go\\n│ │ │ ├── sysUser_v1_user_delete.go\\n│ │ │ ├── sysUser_v1_user_edit.go\\n│ │ │ ├── sysUser_v1_user_forbidden_by_id.go\\n│ │ │ ├── sysUser_v1_user_get_all_user.go\\n│ │ │ ├── sysUser_v1_user_get_by_ids.go\\n│ │ │ ├── sysUser_v1_user_get_edit.go\\n│ │ │ ├── sysUser_v1_user_get_params.go\\n│ │ │ ├── sysUser_v1_user_login_out.go\\n│ │ │ ├── sysUser_v1_user_menus.go\\n│ │ │ ├── sysUser_v1_user_search.go\\n│ │ │ ├── sysUser_v1_user_status.go\\n│ │ │ └── sysUser_v1_user_suspend_or_continue.go\\n│ │ ├── sys_auth_rule\\n│ │ │ ├── sys_auth_rule.go\\n│ │ │ ├── sys_auth_rule_new.go\\n│ │ │ ├── sys_auth_rule_v1_rule_add.go\\n│ │ │ ├── sys_auth_rule_v1_rule_delete.go\\n│ │ │ ├── sys_auth_rule_v1_rule_get_params.go\\n│ │ │ ├── sys_auth_rule_v1_rule_info.go\\n│ │ │ ├── sys_auth_rule_v1_rule_search.go\\n│ │ │ └── sys_auth_rule_v1_rule_update.go\\n│ │ ├── sys_payment\\n│ │ │ ├── sys_payment.go\\n│ │ │ ├── sys_payment_new.go\\n│ │ │ ├── sys_payment_v1_payment_summary_list.go\\n│ │ │ ├── sys_payment_v1_sys_payment_add.go\\n│ │ │ ├── sys_payment_v1_sys_payment_get.go\\n│ │ │ ├── sys_payment_v1_sys_payment_get_one.go\\n│ │ │ ├── sys_payment_v1_sys_payment_records_get.go\\n│ │ │ └── sys_payment_v1_sys_payment_records_get_statistics.go\\n│ │ ├── sys_role\\n│ │ │ ├── sys_role.go\\n│ │ │ ├── sys_role_new.go\\n│ │ │ ├── sys_role_v1_role_add.go\\n│ │ │ ├── sys_role_v1_role_delete.go\\n│ │ │ ├── sys_role_v1_role_edit.go\\n│ │ │ ├── sys_role_v1_role_get.go\\n│ │ │ ├── sys_role_v1_role_get_params.go\\n│ │ │ └── sys_role_v1_role_list.go\\n│ │ ├── sys_user_login\\n│ │ │ ├── sys_user_login.go\\n│ │ │ ├── sys_user_login_new.go\\n│ │ │ └── sys_user_login_v1_user_login.go\\n│ │ ├── user_center\\n│ │ │ ├── user_center.go\\n│ │ │ ├── user_center_new.go\\n│ │ │ └── user_center_v1_get_user_info.go\\n│ │ └── validation\\n│ │ ├── validation.go\\n│ │ ├── validation_new.go\\n│ │ └── validation_v1_get_captcha.go\\n│ ├── dao\\n│ │ ├── internal\\n│ │ │ ├── v_1_account_history_info.go\\n│ │ │ ├── v_1_account_info.go\\n│ │ │ ├── v_1_agent_info.go\\n│ │ │ ├── v_1_bank_card_info.go\\n│ │ │ ├── v_1_card_apple_account_info.go\\n│ │ │ ├── v_1_card_apple_account_info_history.go\\n│ │ │ ├── v_1_card_apple_hidden_settings.go\\n│ │ │ ├── v_1_card_apple_hidden_settings_recharge_info.go\\n│ │ │ ├── v_1_card_apple_history_info.go\\n│ │ │ ├── v_1_card_apple_recharge_info.go\\n│ │ │ ├── v_1_card_redeem_account_deduction.go\\n│ │ │ ├── v_1_card_redeem_account_group.go\\n│ │ │ ├── v_1_card_redeem_account_history.go\\n│ │ │ ├── v_1_card_redeem_account_info.go\\n│ │ │ ├── v_1_card_redeem_account_summary.go\\n│ │ │ ├── v_1_card_redeem_cookie_info.go\\n│ │ │ ├── v_1_card_redeem_cookie_order.go\\n│ │ │ ├── v_1_card_redeem_cookie_order_history.go\\n│ │ │ ├── v_1_card_redeem_cookie_order_jd.go\\n│ │ │ ├── v_1_card_redeem_cookie_order_jd_history.go\\n│ │ │ ├── v_1_card_redeem_order_history.go\\n│ │ │ ├── v_1_card_redeem_order_info.go\\n│ │ │ ├── v_1_legend_any_money.go\\n│ │ │ ├── v_1_legend_area.go\\n│ │ │ ├── v_1_legend_fix_money.go\\n│ │ │ ├── v_1_legend_fix_present.go\\n│ │ │ ├── v_1_legend_group.go\\n│ │ │ ├── v_1_legend_scale_present.go\\n│ │ │ ├── v_1_legend_scale_template.go\\n│ │ │ ├── v_1_menu_info.go\\n│ │ │ ├── v_1_merchant_deploy_info.go\\n│ │ │ ├── v_1_merchant_hidden_config.go\\n│ │ │ ├── v_1_merchant_hidden_record.go\\n│ │ │ ├── v_1_merchant_info.go\\n│ │ │ ├── v_1_merchant_load_info.go\\n│ │ │ ├── v_1_migrations.go\\n│ │ │ ├── v_1_notify_info.go\\n│ │ │ ├── v_1_order_info.go\\n│ │ │ ├── v_1_order_profit_info.go\\n│ │ │ ├── v_1_order_settle_info.go\\n│ │ │ ├── v_1_payfor_info.go\\n│ │ │ ├── v_1_power_info.go\\n│ │ │ ├── v_1_recharge_t_mall_account.go\\n│ │ │ ├── v_1_recharge_t_mall_order.go\\n│ │ │ ├── v_1_recharge_t_mall_order_fake.go\\n│ │ │ ├── v_1_recharge_t_mall_order_history.go\\n│ │ │ ├── v_1_recharge_t_mall_shop.go\\n│ │ │ ├── v_1_recharge_t_mall_shop_history.go\\n│ │ │ ├── v_1_restrict_client_access_ip_relation.go\\n│ │ │ ├── v_1_restrict_client_access_record.go\\n│ │ │ ├── v_1_restrict_ip_order_access.go\\n│ │ │ ├── v_1_restrict_ip_record.go\\n│ │ │ ├── v_1_road_info.go\\n│ │ │ ├── v_1_road_pool_info.go\\n│ │ │ ├── v_1_role_info.go\\n│ │ │ ├── v_1_schema_migrations.go\\n│ │ │ ├── v_1_second_menu_info.go\\n│ │ │ ├── v_1_sys_auth_rule.go\\n│ │ │ ├── v_1_sys_casbin_rule.go\\n│ │ │ ├── v_1_sys_config_dict.go\\n│ │ │ ├── v_1_sys_role.go\\n│ │ │ ├── v_1_sys_user.go\\n│ │ │ ├── v_1_sys_user_config_channel.go\\n│ │ │ ├── v_1_sys_user_deductions.go\\n│ │ │ ├── v_1_sys_user_login_log.go\\n│ │ │ ├── v_1_sys_user_payment.go\\n│ │ │ ├── v_1_sys_user_payment_records.go\\n│ │ │ ├── v_1_task_order_fake.go\\n│ │ │ └── v_1_user_info.go\\n│ │ ├── v_1_account_history_info.go\\n│ │ ├── v_1_account_info.go\\n│ │ ├── v_1_agent_info.go\\n│ │ ├── v_1_bank_card_info.go\\n│ │ ├── v_1_card_apple_account_info.go\\n│ │ ├── v_1_card_apple_account_info_history.go\\n│ │ ├── v_1_card_apple_hidden_settings.go\\n│ │ ├── v_1_card_apple_hidden_settings_recharge_info.go\\n│ │ ├── v_1_card_apple_history_info.go\\n│ │ ├── v_1_card_apple_recharge_info.go\\n│ │ ├── v_1_card_redeem_account_deduction.go\\n│ │ ├── v_1_card_redeem_account_group.go\\n│ │ ├── v_1_card_redeem_account_history.go\\n│ │ ├── v_1_card_redeem_account_info.go\\n│ │ ├── v_1_card_redeem_account_summary.go\\n│ │ ├── v_1_card_redeem_cookie_info.go\\n│ │ ├── v_1_card_redeem_cookie_order.go\\n│ │ ├── v_1_card_redeem_cookie_order_history.go\\n│ │ ├── v_1_card_redeem_cookie_order_jd.go\\n│ │ ├── v_1_card_redeem_cookie_order_jd_history.go\\n│ │ ├── v_1_card_redeem_order_history.go\\n│ │ ├── v_1_card_redeem_order_info.go\\n│ │ ├── v_1_legend_any_money.go\\n│ │ ├── v_1_legend_area.go\\n│ │ ├── v_1_legend_fix_money.go\\n│ │ ├── v_1_legend_fix_present.go\\n│ │ ├── v_1_legend_group.go\\n│ │ ├── v_1_legend_scale_present.go\\n│ │ ├── v_1_legend_scale_template.go\\n│ │ ├── v_1_menu_info.go\\n│ │ ├── v_1_merchant_deploy_info.go\\n│ │ ├── v_1_merchant_hidden_config.go\\n│ │ ├── v_1_merchant_hidden_record.go\\n│ │ ├── v_1_merchant_info.go\\n│ │ ├── v_1_merchant_load_info.go\\n│ │ ├── v_1_migrations.go\\n│ │ ├── v_1_notify_info.go\\n│ │ ├── v_1_order_info.go\\n│ │ ├── v_1_order_profit_info.go\\n│ │ ├── v_1_order_settle_info.go\\n│ │ ├── v_1_payfor_info.go\\n│ │ ├── v_1_power_info.go\\n│ │ ├── v_1_recharge_t_mall_account.go\\n│ │ ├── v_1_recharge_t_mall_order.go\\n│ │ ├── v_1_recharge_t_mall_order_fake.go\\n│ │ ├── v_1_recharge_t_mall_order_history.go\\n│ │ ├── v_1_recharge_t_mall_shop.go\\n│ │ ├── v_1_recharge_t_mall_shop_history.go\\n│ │ ├── v_1_restrict_client_access_ip_relation.go\\n│ │ ├── v_1_restrict_client_access_record.go\\n│ │ ├── v_1_restrict_ip_order_access.go\\n│ │ ├── v_1_restrict_ip_record.go\\n│ │ ├── v_1_road_info.go\\n│ │ ├── v_1_road_pool_info.go\\n│ │ ├── v_1_role_info.go\\n│ │ ├── v_1_schema_migrations.go\\n│ │ ├── v_1_second_menu_info.go\\n│ │ ├── v_1_sys_auth_rule.go\\n│ │ ├── v_1_sys_casbin_rule.go\\n│ │ ├── v_1_sys_config_dict.go\\n│ │ ├── v_1_sys_role.go\\n│ │ ├── v_1_sys_user.go\\n│ │ ├── v_1_sys_user_config_channel.go\\n│ │ ├── v_1_sys_user_deductions.go\\n│ │ ├── v_1_sys_user_login_log.go\\n│ │ ├── v_1_sys_user_payment.go\\n│ │ ├── v_1_sys_user_payment_records.go\\n│ │ ├── v_1_task_order_fake.go\\n│ │ └── v_1_user_info.go\\n│ ├── errHandler\\n│ │ ├── code.go\\n│ │ └── handler.go\\n│ ├── logic\\n│ │ ├── account\\n│ │ │ └── account.go\\n│ │ ├── base_user_info\\n│ │ │ └── user_info.go\\n│ │ ├── captcha\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── card_apple_account\\n│ │ │ └── ... 9 files, 0 dirs not shown\\n│ │ ├── card_apple_order\\n│ │ │ └── ... 9 files, 0 dirs not shown\\n│ │ ├── card_redeem_account\\n│ │ │ └── ... 15 files, 0 dirs not shown\\n│ │ ├── card_redeem_cookie\\n│ │ │ └── ... 7 files, 0 dirs not shown\\n│ │ ├── card_redeem_order\\n│ │ │ └── ... 9 files, 0 dirs not shown\\n│ │ ├── card_t_mall_account\\n│ │ │ └── ... 2 files, 0 dirs not shown\\n│ │ ├── card_t_mall_order\\n│ │ │ └── ... 9 files, 0 dirs not shown\\n│ │ ├── limiter\\n│ │ │ └── ... 2 files, 0 dirs not shown\\n│ │ ├── merchant\\n│ │ │ └── ... 2 files, 0 dirs not shown\\n│ │ ├── merchant_deploy_info\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── merchant_order\\n│ │ │ └── ... 3 files, 0 dirs not shown\\n│ │ ├── pay_type\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── restriction\\n│ │ │ └── ... 3 files, 0 dirs not shown\\n│ │ ├── steal_rule\\n│ │ │ └── ... 5 files, 0 dirs not shown\\n│ │ ├── sys_auth\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── sys_auth_rule\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── sys_casbin\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── sys_config_dict\\n│ │ │ └── ... 2 files, 0 dirs not shown\\n│ │ ├── sys_login_log\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── sys_role\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── sys_user\\n│ │ │ └── ... 3 files, 0 dirs not shown\\n│ │ ├── sys_user_channel_config\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── sys_user_payment\\n│ │ │ └── ... 6 files, 0 dirs not shown\\n│ │ ├── v1_road\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── v1_road_pool\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ └── logic.go\\n│ ├── middleware\\n│ │ ├── auth.go\\n│ │ └── error_handler.go\\n│ ├── model\\n│ │ ├── do\\n│ │ │ └── ... 69 files, 0 dirs not shown\\n│ │ ├── entity\\n│ │ │ └── ... 69 files, 0 dirs not shown\\n│ │ ├── agiso.go\\n│ │ ├── card_apple_account.go\\n│ │ ├── card_apple_order.go\\n│ │ ├── card_redeem.go\\n│ │ ├── card_redeem_cookie.go\\n│ │ ├── card_t_mall_game_account.go\\n│ │ ├── card_t_mall_game_order.go\\n│ │ ├── card_t_mall_game_work_space.go\\n│ │ ├── entrance.go\\n│ │ ├── merchant.go\\n│ │ ├── merchant_deploy.go\\n│ │ ├── order_info.go\\n│ │ ├── restriction.go\\n│ │ ├── road.go\\n│ │ ├── road_pool.go\\n│ │ ├── steal_rule.go\\n│ │ ├── sys_auth_rule.go\\n│ │ ├── sys_role.go\\n│ │ ├── sys_rule.go\\n│ │ ├── sys_user.go\\n│ │ ├── sys_user_config.go\\n│ │ ├── sys_user_deductions.go\\n│ │ ├── sys_user_login.go\\n│ │ ├── sys_user_payment_record.go\\n│ │ └── user_info.go\\n│ ├── packed\\n│ │ └── packed.go\\n│ ├── service\\n│ │ ├── account.go\\n│ │ ├── base_user_info.go\\n│ │ ├── captcha.go\\n│ │ ├── card_apple_account.go\\n│ │ ├── card_apple_order.go\\n│ │ ├── card_redeem_account.go\\n│ │ ├── card_redeem_cookie.go\\n│ │ ├── card_redeem_order.go\\n│ │ ├── card_t_mall_account.go\\n│ │ ├── card_t_mall_order.go\\n│ │ ├── limiter.go\\n│ │ ├── merchant.go\\n│ │ ├── merchant_deploy_info.go\\n│ │ ├── merchant_order.go\\n│ │ ├── pay_type.go\\n│ │ ├── restriction.go\\n│ │ ├── steal_rule.go\\n│ │ ├── sys_auth.go\\n│ │ ├── sys_auth_rule.go\\n│ │ ├── sys_casbin.go\\n│ │ ├── sys_config_dict.go\\n│ │ ├── sys_login_log.go\\n│ │ ├── sys_role.go\\n│ │ ├── sys_user.go\\n│ │ ├── sys_user_channel_config.go\\n│ │ ├── sys_user_payment.go\\n│ │ ├── v_1_road.go\\n│ │ └── v_1_road_pool.go\\n│ └── systemV2\\n│ ├── dao\\n│ │ └── ... 14 files, 1 dirs not shown\\n│ ├── logic\\n│ │ └── ... 1 files, 3 dirs not shown\\n│ ├── model\\n│ │ └── ... 0 files, 2 dirs not shown\\n│ └── service\\n│ └── ... 3 files, 0 dirs not shown\\n├── manifest\\n│ ├── config\\n│ │ └── config.yaml\\n│ ├── deploy\\\\kustomize\\n│ │ ├── base\\n│ │ │ └── ... 3 files, 0 dirs not shown\\n│ │ └── overlays\\\\develop\\n│ │ └── ... 3 files, 0 dirs not shown\\n│ └── docker\\n│ ├── Dockerfile\\n│ ├── docker-compose-local.yaml\\n│ ├── docker-compose.yml\\n│ ├── install-one.sh\\n│ ├── install-simple.sh\\n│ ├── install-test.sh\\n│ ├── install.sh\\n│ └── wait-for-it.sh\\n├── resource\\\\casbin\\n│ └── rbac_model.conf\\n├── utility\\n│ ├── cache\\n│ │ ├── cache.go\\n│ │ └── consts.go\\n│ ├── config\\n│ │ ├── config.go\\n│ │ ├── database.go\\n│ │ └── models.go\\n│ ├── cron\\n│ │ ├── cron.go\\n│ │ ├── t_mall_game_data_sync.go\\n│ │ └── t_mall_game_data_sync_test.go\\n│ ├── integration\\n│ │ ├── agiso\\n│ │ │ └── ... 4 files, 0 dirs not shown\\n│ │ ├── originalJd\\n│ │ │ └── ... 5 files, 0 dirs not shown\\n│ │ ├── redeem\\n│ │ │ └── ... 2 files, 5 dirs not shown\\n│ │ ├── restriction\\n│ │ │ └── ... 6 files, 0 dirs not shown\\n│ │ └── tmall\\n│ │ └── ... 5 files, 3 dirs not shown\\n│ ├── lib\\n│ │ ├── libErr\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ └── libResponse\\n│ │ └── ... 1 files, 0 dirs not shown\\n│ ├── limiter\\n│ │ ├── rate.go\\n│ │ └── redis.go\\n│ ├── mfa\\n│ │ └── mfa.go\\n│ ├── monitor\\n│ │ └── monitor.go\\n│ ├── notify\\n│ │ ├── impl\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ └── notify.go\\n│ ├── otel\\n│ │ ├── config.go\\n│ │ ├── errors.go\\n│ │ ├── handler.go\\n│ │ ├── manager.go\\n│ │ └── utils.go\\n│ ├── pool\\n│ │ └── pool.go\\n│ ├── token\\n│ │ ├── user_token.go\\n│ │ ├── user_token_test.go\\n│ │ └── utils.go\\n│ ├── utils\\n│ │ ├── charset.go\\n│ │ ├── orm.go\\n│ │ ├── tools.go\\n│ │ ├── tools_test.go\\n│ │ └── utils.go\\n│ └── verify\\n│ ├── aes_ecb.go\\n│ └── md5.go\\n├── CLAUDE.md\\n├── CODEBUDDY.md\\n├── Makefile\\n├── README.md\\n├── docker-compose.yml\\n└── main.go\\n\"","current_document_structure":"WikiEncrypted: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","catalogue_think_content":"WikiEncrypted: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","recovery_checkpoint":"wiki_generation_completed","last_commit_id":"77aff4289e7b60617a6b97873721f586af264581","last_commit_update":"2025-10-11T15:57:42+08:00","gmt_create":"2025-10-08T17:56:14+08:00","gmt_modified":"2025-10-11T17:31:20.9618412+08:00","extend_info":"{\"language\":\"zh\",\"active\":true,\"branch\":\"develop\",\"shareStatus\":\"\",\"server_error_code\":\"\",\"cosy_version\":\"0.2.4\"}"}} \ No newline at end of file +{ + "code_snippets": [ + { + "id": "d018b60f9d48763366246e537520686c", + "path": "internal/middleware/auth.go", + "line_range": "22-51", + "gmt_create": "2025-10-11T17:24:20+08:00", + "gmt_modified": "2025-10-11T17:24:20+08:00" + }, + { + "id": "f451dcc5212a1a2b4e0ce80b06f8e185", + "path": "internal/middleware/error_handler.go", + "line_range": "8-27", + "gmt_create": "2025-10-11T17:24:20+08:00", + "gmt_modified": "2025-10-11T17:24:20+08:00" + }, + { + "id": "c778028d86a2a65f31627126a2575c0c", + "path": "/main.go", + "line_range": "1-50", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "4bad57683321787594727c10ee94c33b", + "path": "/internal/logic/logic.go", + "line_range": "1-37", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "aee3a2f386eb5a98ddf5ca7cccff0929", + "path": "/internal/service/sys_user.go", + "line_range": "1-102", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "6fe67e9d805a0a633f90f268ef2ee2f4", + "path": "/internal/service/card_apple_order.go", + "line_range": "1-127", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "32bf22e91c31d6f141bf6b7ef0de7b96", + "path": "/internal/service/card_redeem_order.go", + "line_range": "1-80", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "7face210770aa4ec553604c6d0931175", + "path": "/internal/service/merchant_order.go", + "line_range": "1-44", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "842d4a8a22707111e666ac492238b5ef", + "path": "/internal/service/restriction.go", + "line_range": "1-67", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "c701edfecf07f4017d7d956624072fde", + "path": "/internal/logic/sys_user/sys_user.go", + "line_range": "1-767", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "4d71ea0833e7a0a8266b6f2e8b05e459", + "path": "/internal/dao/v_1_sys_user.go", + "line_range": "1-28", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "0d5907fd86f99e310c6663b7e705ab7b", + "path": "/internal/model/sys_user.go", + "line_range": "1-92", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "488c440eb23bb1208ec810e0d3738028", + "path": "/internal/logic/card_apple_order/order.go", + "line_range": "1-343", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "badc687590596030499ebead18afabfc", + "path": "/internal/logic/merchant_order/order.go", + "line_range": "1-48", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "cf2c6c7ec0ed0b542c5ad37d11c2ea57", + "path": "/internal/logic/restriction/restriction.go", + "line_range": "1-174", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "f67970ad2e09c5f5a6048ff8ef3cd50c", + "path": "/manifest/config/config.yaml", + "line_range": "1-10", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "9faa5f2db2ec0340fbf2ecfb0e5a7740", + "path": "internal/model/entity/v_1_account_info.go", + "line_range": "12-25", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "1c004f6c7e82e215a8538bb563de1a80", + "path": "internal/model/entity/v_1_order_info.go", + "line_range": "12-63", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "9311a5593c3cb84df188d914b5fcb57b", + "path": "internal/model/entity/v_1_card_apple_recharge_info.go", + "line_range": "11-33", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "734fa931bccd869983dd85fd9b7ab371", + "path": "internal/model/entity/v_1_jd_cookie_account.go", + "line_range": "12-28", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "314337c7901e5f608be04c99dbf9dcda", + "path": "utility/otel/config.go", + "line_range": "1-67", + "gmt_create": "2025-10-11T17:25:57+08:00", + "gmt_modified": "2025-10-11T17:25:57+08:00" + }, + { + "id": "02b920b240a8a0b5cc76dbdd011bfade", + "path": "utility/otel/manager.go", + "line_range": "1-257", + "gmt_create": "2025-10-11T17:25:57+08:00", + "gmt_modified": "2025-10-11T17:25:57+08:00" + }, + { + "id": "a1f8285bc58503a0979846e628322395", + "path": "utility/otel/utils.go", + "line_range": "1-230", + "gmt_create": "2025-10-11T17:25:58+08:00", + "gmt_modified": "2025-10-11T17:25:58+08:00" + }, + { + "id": "62d876856f82a4ea1e63b343aa650ddc", + "path": "utility/otel/handler.go", + "line_range": "1-164", + "gmt_create": "2025-10-11T17:25:58+08:00", + "gmt_modified": "2025-10-11T17:25:58+08:00" + }, + { + "id": "0450d2bd60154c9defe18e2dd0db3944", + "path": "api/monitor/monitor.go", + "line_range": "1-15", + "gmt_create": "2025-10-11T17:25:58+08:00", + "gmt_modified": "2025-10-11T17:25:58+08:00" + }, + { + "id": "776a898a7e3af295ac0d3f657e027a43", + "path": "api/monitor/v1/heathcheck.go", + "line_range": "1-13", + "gmt_create": "2025-10-11T17:25:58+08:00", + "gmt_modified": "2025-10-11T17:25:58+08:00" + }, + { + "id": "f4357af3bdee1af700d66352486740ac", + "path": "internal/controller/monitor/monitor_new.go", + "line_range": "1-15", + "gmt_create": "2025-10-11T17:25:58+08:00", + "gmt_modified": "2025-10-11T17:25:58+08:00" + }, + { + "id": "1f3f6baf21697865c02621086d9ebce9", + "path": "internal/controller/monitor/monitor_v1_health_check.go", + "line_range": "1-13", + "gmt_create": "2025-10-11T17:25:58+08:00", + "gmt_modified": "2025-10-11T17:25:58+08:00" + }, + { + "id": "852c344b512f86e468cc155a007239c3", + "path": "internal/cmd/cmd.go", + "line_range": "1-92", + "gmt_create": "2025-10-11T17:25:58+08:00", + "gmt_modified": "2025-10-11T17:25:58+08:00" + }, + { + "id": "7f41c190fab616ed408fb3470b01e156", + "path": "utility/monitor/monitor.go", + "line_range": "1-14", + "gmt_create": "2025-10-11T17:25:58+08:00", + "gmt_modified": "2025-10-11T17:25:58+08:00" + }, + { + "id": "2deccc6412aa3a542406ea4123dbd7e6", + "path": "internal/consts/jd_cookie.go", + "line_range": "150-160", + "gmt_create": "2025-10-11T17:26:06+08:00", + "gmt_modified": "2025-10-11T17:26:06+08:00" + }, + { + "id": "ec6f80518cdb41b1cb7ec141e92638a1", + "path": "internal/middleware/auth.go", + "line_range": "1-154", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "972216ab1861cc2715878f10ca1d7e82", + "path": "internal/model/sys_user.go", + "line_range": "1-92", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "43ed130e118ec9a873129314ddcd834d", + "path": "internal/service/sys_casbin.go", + "line_range": "1-50", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "144cff56ec3838a61a926b3ff9a3d25e", + "path": "internal/middleware/auth.go", + "line_range": "50-100", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "4f93cccb25d8c64e73e92615a203e00e", + "path": "utility/token/user_token.go", + "line_range": "1-50", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "a964b09bca4acd49db9824c141108f00", + "path": "resource/casbin/rbac_model.conf", + "line_range": "1-15", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "5613af50c546b7eeb54ca83263a76c29", + "path": "internal/dao/v_1_sys_casbin_rule.go", + "line_range": "1-28", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "ceaf312dde8910a6de9a4671cd06d559", + "path": "utility/mfa/mfa.go", + "line_range": "1-53", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "7d199570ba96ddc2ca6639d6d726d419", + "path": "internal/controller/sysUser/sysUser_v1_totp_status_get.go", + "line_range": "1-37", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "8c317fe404ce5c22b9feef901431fcc5", + "path": "internal/controller/sysUser/sysUser_v1_totp_set.go", + "line_range": "1-34", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "a5e8020f6c112eb351bfce346cc7e7cd", + "path": "utility/verify/aes_ecb.go", + "line_range": "1-91", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "cce1b31f34a553e7032bfe746d1cd94b", + "path": "utility/verify/md5.go", + "line_range": "1-32", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "a4b14b6b79267d38f599e305591c3273", + "path": "internal/service/sys_user.go", + "line_range": "1-102", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "4eedd1dcf74ca7ed561a2da81f45f3d7", + "path": "internal/errHandler/handler.go", + "line_range": "1-50", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "dd733661014ef5805339ded90facaed0", + "path": "\\utility\\integration\\originalJd\\client.go", + "line_range": "5-35", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": "9749731ed765b177a75bbb84edc2c781", + "path": "\\utility\\integration\\originalJd\\model.go", + "line_range": "35-50", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": "f415bde86145ca67e63b0a6a7645487a", + "path": "\\utility\\integration\\originalJd\\client.go", + "line_range": "65-85", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": "ff9ed734519da40b64bea347532ad39d", + "path": "\\utility\\integration\\originalJd\\model.go", + "line_range": "110-125", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": "a0944686e185b8cdc6f06d21d5678c43", + "path": "\\internal\\consts\\card_redeem_cookie.go", + "line_range": "25-35", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": "c6ba97566833b54cd4ff516c8ea88f46", + "path": "\\internal\\consts\\card_jd.go", + "line_range": "45-65", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": "8a5414d484500ba17e6a788ce484c21b", + "path": "\\utility\\integration\\originalJd\\client.go", + "line_range": "10-20", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": "37112fccfc8b194c480bb373d48115f7", + "path": "\\utility\\integration\\originalJd\\client.go", + "line_range": "70-80", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": "7edb6bdca57d6bc188cd5b2bbbc4a138", + "path": "internal/logic/jd_cookie/order.go", + "line_range": "50-130", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "5266c40167bf3310e85d510942a06173", + "path": "internal/logic/jd_cookie/order.go", + "line_range": "450-490", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "782300bf902736466e525e642592486f", + "path": "utility/integration/originalJd/model.go", + "line_range": "136-143", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "47824ef49939140f82365cb3d0eb0cc1", + "path": "utility/verify/aes_ecb.go", + "line_range": "1-90", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": "cd5e2b6c3c51650146b62ae6dc8f5ad7", + "path": "utility/verify/md5.go", + "line_range": "1-31", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": "767b677153edb86515b77286476ce79b", + "path": "utility/utils/tools.go", + "line_range": "1-25", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": "fea30ea749579359c4f54de16878cf4f", + "path": "utility/verify/aes_ecb.go", + "line_range": "15-85", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": "ef1e0649738859b4447918324f2572d9", + "path": "utility/utils/tools.go", + "line_range": "22-24", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": "0383311e02468d4e918e6065aa543159", + "path": "internal/dao/internal/v_1_sys_user.go", + "line_range": "37-81", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": "3b0d083ad6e1e42c3cadee5c77b796a0", + "path": "internal/model/sys_user.go", + "line_range": "0-91", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": "35ff891033d9d93c8fa7614ad2fce15d", + "path": "JD_COOKIE_REFACTOR_REPORT.md", + "line_range": "1-167", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": "8f77a4f0854077c3774992dffc7b67b7", + "path": "utility/config/config.go", + "line_range": "15-35", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": "acfa1be45056640e25383a94f19dc7d9", + "path": "manifest/config/config.yaml", + "line_range": "1-104", + "gmt_create": "2025-10-18T22:04:18.1141643+08:00", + "gmt_modified": "2025-10-18T22:04:18.1141643+08:00" + }, + { + "id": "b73368b03e242affa847ca3d7470031e", + "path": "manifest/docker/Dockerfile", + "line_range": "1-41", + "gmt_create": "2025-10-18T22:04:18.1198503+08:00", + "gmt_modified": "2025-10-18T22:04:18.1198503+08:00" + }, + { + "id": "db1c31f617d9e5f634d8339367911606", + "path": "manifest/docker/docker-compose.yml", + "line_range": "1-19", + "gmt_create": "2025-10-18T22:04:18.1254507+08:00", + "gmt_modified": "2025-10-18T22:04:18.1254507+08:00" + }, + { + "id": "dd64c275dd8d4bc11cde8a7b7a290fed", + "path": "manifest/docker/docker-compose-local.yaml", + "line_range": "1-20", + "gmt_create": "2025-10-18T22:04:18.1315934+08:00", + "gmt_modified": "2025-10-18T22:04:18.1315934+08:00" + }, + { + "id": "d6cc2f26e69178bb84fde4c8efd2bc72", + "path": "Makefile", + "line_range": "1-6", + "gmt_create": "2025-10-18T22:04:18.1386012+08:00", + "gmt_modified": "2025-10-18T22:04:18.1386012+08:00" + }, + { + "id": "dfaf7eeee313e45381a5c84acad7d598", + "path": "hack/hack.mk", + "line_range": "1-75", + "gmt_create": "2025-10-18T22:04:18.1435417+08:00", + "gmt_modified": "2025-10-18T22:04:18.1435417+08:00" + }, + { + "id": "037c00a89165736016c43de51f38904f", + "path": "manifest/docker/install.sh", + "line_range": "1-144", + "gmt_create": "2025-10-18T22:04:18.1492401+08:00", + "gmt_modified": "2025-10-18T22:04:18.1492401+08:00" + }, + { + "id": "de0ba4e69640dc07afdabcd8239a78d4", + "path": "manifest/deploy/kustomize/base/kustomization.yaml", + "line_range": "1-9", + "gmt_create": "2025-10-18T22:04:18.1586201+08:00", + "gmt_modified": "2025-10-18T22:04:18.1586201+08:00" + }, + { + "id": "6bd49f88fb853be92cced1cf022cf602", + "path": "manifest/deploy/kustomize/overlays/develop/kustomization.yaml", + "line_range": "1-15", + "gmt_create": "2025-10-18T22:04:18.1659641+08:00", + "gmt_modified": "2025-10-18T22:04:18.1659641+08:00" + }, + { + "id": "3b39ff5f0cfc1dd7c098c94d3f933f75", + "path": "manifest/deploy/kustomize/base/deployment.yaml", + "line_range": "1-22", + "gmt_create": "2025-10-18T22:04:18.1707797+08:00", + "gmt_modified": "2025-10-18T22:04:18.1707797+08:00" + }, + { + "id": "0e4358230bffd4be2ea7053332694d44", + "path": "manifest/deploy/kustomize/overlays/develop/deployment.yaml", + "line_range": "1-10", + "gmt_create": "2025-10-18T22:04:18.1776312+08:00", + "gmt_modified": "2025-10-18T22:04:18.1776312+08:00" + }, + { + "id": "ab5aade552f972707c516a2836e5599e", + "path": "manifest/deploy/kustomize/overlays/develop/configmap.yaml", + "line_range": "1-15", + "gmt_create": "2025-10-18T22:04:18.1823016+08:00", + "gmt_modified": "2025-10-18T22:04:18.1823016+08:00" + }, + { + "id": "7ba715316b620dc29a8f18d4de067b23", + "path": ".drone.yml", + "line_range": "1-46", + "gmt_create": "2025-10-18T22:04:18.1925699+08:00", + "gmt_modified": "2025-10-18T22:04:18.1925699+08:00" + }, + { + "id": "c5ee11836f7ab42cda2655f445cac377", + "path": "utility/cron/cron.go", + "line_range": "1-65", + "gmt_create": "2025-10-18T22:04:18.1972445+08:00", + "gmt_modified": "2025-10-18T22:04:18.1972445+08:00" + }, + { + "id": "268b3e7951536fbd682c2f50b8960980", + "path": "/utility/integration/redeem/jd/api.go", + "line_range": "1-5", + "gmt_create": "2025-10-18T22:04:36.9092568+08:00", + "gmt_modified": "2025-10-18T22:04:36.9092568+08:00" + }, + { + "id": "9f040686e23b6fd6b3b53522a50a3fae", + "path": "/utility/integration/redeem/ctrip/api.go", + "line_range": "1-5", + "gmt_create": "2025-10-18T22:04:36.9157046+08:00", + "gmt_modified": "2025-10-18T22:04:36.9157046+08:00" + }, + { + "id": "d5f63253bfce66da1b9e040b318f5ac8", + "path": "/utility/integration/redeem/walmart/api.go", + "line_range": "1-5", + "gmt_create": "2025-10-18T22:04:36.9217502+08:00", + "gmt_modified": "2025-10-18T22:04:36.9217502+08:00" + }, + { + "id": "8fcf454d6439e16e2ee45b592d199565", + "path": "/utility/integration/tmall/api/api.go", + "line_range": "1-20", + "gmt_create": "2025-10-18T22:04:36.9295101+08:00", + "gmt_modified": "2025-10-18T22:04:36.9295101+08:00" + }, + { + "id": "e7f3e2357a5be12aba6f1b222070b75b", + "path": "/utility/integration/originalJd/client.go", + "line_range": "11-123", + "gmt_create": "2025-10-18T22:04:36.9360417+08:00", + "gmt_modified": "2025-10-18T22:04:36.9360417+08:00" + }, + { + "id": "513dd1188dfbad313f70d29fb1e183bc", + "path": "/utility/integration/originalJd/model.go", + "line_range": "1-144", + "gmt_create": "2025-10-18T22:04:36.9436544+08:00", + "gmt_modified": "2025-10-18T22:04:36.9436544+08:00" + }, + { + "id": "4fdff47316ebde6fa296678a3558466a", + "path": "/utility/otel/config.go", + "line_range": "1-68", + "gmt_create": "2025-10-18T22:04:36.9509072+08:00", + "gmt_modified": "2025-10-18T22:04:36.9509072+08:00" + }, + { + "id": "3172bdd0bdcdcc9961668dac5cd7736a", + "path": "/utility/otel/manager.go", + "line_range": "1-258", + "gmt_create": "2025-10-18T22:04:36.9567678+08:00", + "gmt_modified": "2025-10-18T22:04:36.9567678+08:00" + }, + { + "id": "f43353da0dd842671b2ecd75845577a0", + "path": "/utility/otel/utils.go", + "line_range": "22-33", + "gmt_create": "2025-10-18T22:04:36.9660962+08:00", + "gmt_modified": "2025-10-18T22:04:36.9660962+08:00" + }, + { + "id": "878ca019cafcda589777cca1b9d046d5", + "path": "/utility/otel/manager.go", + "line_range": "35-86", + "gmt_create": "2025-10-18T22:04:36.9735256+08:00", + "gmt_modified": "2025-10-18T22:04:36.9735256+08:00" + }, + { + "id": "7f9267cfe8229dcd33f476ce31fd1bfa", + "path": "/utility/otel/utils.go", + "line_range": "1-50", + "gmt_create": "2025-10-18T22:04:36.9814989+08:00", + "gmt_modified": "2025-10-18T22:04:36.9814989+08:00" + }, + { + "id": "d80df587153dec12950eadafbd55b449", + "path": "/resource/casbin/rbac_model.conf", + "line_range": "1-14", + "gmt_create": "2025-10-18T22:04:36.9886358+08:00", + "gmt_modified": "2025-10-18T22:04:36.9886358+08:00" + }, + { + "id": "f25e656cbd55294916b70a73a1c4e583", + "path": "/utility/otel/config.go", + "line_range": "40-52", + "gmt_create": "2025-10-18T22:04:36.9953815+08:00", + "gmt_modified": "2025-10-18T22:04:36.9953815+08:00" + }, + { + "id": "74c031b18c09b203210b77a20abc9d53", + "path": "/utility/otel/manager.go", + "line_range": "50-55", + "gmt_create": "2025-10-18T22:04:37.0037959+08:00", + "gmt_modified": "2025-10-18T22:04:37.0037959+08:00" + }, + { + "id": "3ae8a564e67df9aaecee08d5880927e3", + "path": "/internal/logic/jd_cookie/order.go", + "line_range": "500-550", + "gmt_create": "2025-10-18T22:04:37.013349+08:00", + "gmt_modified": "2025-10-18T22:04:37.013349+08:00" + }, + { + "id": "a4121ec796fe7df03e581a951109bf2c", + "path": "/internal/consts/jd_cookie.go", + "line_range": "150-160", + "gmt_create": "2025-10-18T22:04:37.026544+08:00", + "gmt_modified": "2025-10-18T22:04:37.026544+08:00" + }, + { + "id": "6d306b24351264c7f10e496503d064f0", + "path": "internal/model/entity/v_1_jd_cookie_jd_order.go", + "line_range": "12-33", + "gmt_create": "2025-10-18T22:08:05.2697754+08:00", + "gmt_modified": "2025-10-18T22:08:05.2697754+08:00" + }, + { + "id": "447357bff1aece2f7004a592d1590f3c", + "path": "internal/model/entity/v_1_jd_cookie_order.go", + "line_range": "12-25", + "gmt_create": "2025-10-18T22:08:05.2773182+08:00", + "gmt_modified": "2025-10-18T22:08:05.2773182+08:00" + }, + { + "id": "856abda221f83e850763d32c49eeb8f4", + "path": "internal/model/do/v_1_jd_cookie_order.go", + "line_range": "12-26", + "gmt_create": "2025-10-18T22:08:05.2974907+08:00", + "gmt_modified": "2025-10-18T22:08:05.2974907+08:00" + }, + { + "id": "33fd8e434adea0293ba416951c3b04c1", + "path": "internal/dao/v_1_jd_cookie_order.go", + "line_range": "1-27", + "gmt_create": "2025-10-18T22:08:05.3060086+08:00", + "gmt_modified": "2025-10-18T22:08:05.3060086+08:00" + } + ], + "commits": [ + { + "id": "77aff4289e7b60617a6b97873721f586af264581", + "message": "feat(jd-cookie): 实现京东订单创建及支付链接刷新功能", + "gmt_create": "2025-10-11T17:24:20+08:00", + "gmt_modified": "2025-10-11T17:24:20+08:00" + }, + { + "id": "0fdae6a89fef78f6368400b1fe726d987adda7b1", + "message": "refactor(card_redeem):重构携程卡账户接口和京东cookie逻辑", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "f029eb7d6cfc4e70657225da8d0f4d90071071e4", + "message": "docs(jd_cookie): 添加京东Cookie管理模块重构设计文档", + "gmt_create": "2025-10-11T17:25:03+08:00", + "gmt_modified": "2025-10-11T17:25:03+08:00" + }, + { + "id": "34", + "message": "chore(ci): 更新Docker仓库地址至git.oceanpay.cc", + "gmt_create": "2025-10-18T22:04:18.5051118+08:00", + "gmt_modified": "2025-10-18T22:04:18.5051118+08:00" + }, + { + "id": "12", + "message": "fix(cron): 调整京东支付状态监控任务执行频率", + "gmt_create": "2025-10-18T22:04:18.5178999+08:00", + "gmt_modified": "2025-10-18T22:04:18.5178999+08:00" + }, + { + "id": "81494a0669c2c7e2fc491bbeea59dc78597e1efa", + "message": "feat(jd_cookie): 实现京东订单支付状态定时检查与卡密提取功能", + "gmt_create": "2025-10-18T22:04:18.5297795+08:00", + "gmt_modified": "2025-10-18T22:04:18.5297795+08:00" + }, + { + "id": "6f2b7aa144efdea96e65be3ab8ac7fa2cdbc2225", + "message": "fix(originalJd):修复订单ID字段类型问题", + "gmt_create": "2025-10-18T22:04:37.407677+08:00", + "gmt_modified": "2025-10-18T22:04:37.407677+08:00" + }, + { + "id": "fe3dcd33e3ae6611c76e350efc9232c0e71ddecf", + "message": "fix(originalJd): 更新京东接口字段名", + "gmt_create": "2025-10-18T22:04:37.4216799+08:00", + "gmt_modified": "2025-10-18T22:04:37.4216799+08:00" + }, + { + "id": "76ab51c20a1b2b44037ea4706db6cd49a6be8f3b", + "message": "fix(originalJd): 修正京东接口卡密字段及添加订单状态", + "gmt_create": "2025-10-18T22:04:37.4366736+08:00", + "gmt_modified": "2025-10-18T22:04:37.4366736+08:00" + }, + { + "id": "f3b5ab94ad13f5d0cc3bbaccd7fb568c17eef2fb", + "message": "refactor(jd): 调整京东订单字段命名", + "gmt_create": "2025-10-18T22:04:37.4514658+08:00", + "gmt_modified": "2025-10-18T22:04:37.4514658+08:00" + }, + { + "id": "8bc2d51c8ba46582286270b3dd85e166f2562e51", + "message": "fix(order):优化下单接口错误处理逻辑", + "gmt_create": "2025-10-18T22:05:30.4334898+08:00", + "gmt_modified": "2025-10-18T22:05:30.4334898+08:00" + }, + { + "id": "d4205dbef5fa248356ab84f4f34e92d41043bbc0", + "message": "feat(jd): 添加库存错误处理并优化错误枚举", + "gmt_create": "2025-10-18T22:05:30.4539228+08:00", + "gmt_modified": "2025-10-18T22:05:30.4539228+08:00" + }, + { + "id": "bc2d58753b8fe0b4f7150657bf40cfe756ce48de", + "message": "feat(jd_cookie):重构订单创建逻辑并优化相关模型", + "gmt_create": "2025-10-18T22:05:30.4708358+08:00", + "gmt_modified": "2025-10-18T22:05:30.4708358+08:00" + }, + { + "id": "924061810e00a9e9d86f6e24e1baedbc27407d07", + "message": "feat(jd_cookie):重构Cookie历史记录逻辑并增强订单创建并发控制", + "gmt_create": "2025-10-18T22:05:30.4897253+08:00", + "gmt_modified": "2025-10-18T22:05:30.4897253+08:00" + }, + { + "id": "d1b7f907caa0c3c59628241250901cb7239b25a8", + "message": "refactor(jd_cookie): 优化订单创建逻辑及支付链接刷新机制", + "gmt_create": "2025-10-18T22:05:30.5039796+08:00", + "gmt_modified": "2025-10-18T22:05:30.5039796+08:00" + }, + { + "id": "28", + "message": "feat(jd_cookie): 启用账户创建权限校验并移除订单创建权限校验", + "gmt_create": "2025-10-18T22:05:40.6124385+08:00", + "gmt_modified": "2025-10-18T22:05:40.6124385+08:00" + }, + { + "id": "30", + "message": "feat(jd_cookie): 统一使用IFrame登录权限校验", + "gmt_create": "2025-10-18T22:05:40.6290569+08:00", + "gmt_modified": "2025-10-18T22:05:40.6290569+08:00" + }, + { + "id": "31", + "message": "feat(jd_cookie): 添加权限验证拦截器", + "gmt_create": "2025-10-18T22:05:40.6440248+08:00", + "gmt_modified": "2025-10-18T22:05:40.6440248+08:00" + }, + { + "id": "a2a994df6eb92d304845f8f2711506072549cadc", + "message": "fix(jd_cookie):修复订单创建中的Cookie记录错误", + "gmt_create": "2025-10-18T22:05:41.4421021+08:00", + "gmt_modified": "2025-10-18T22:05:41.4421021+08:00" + }, + { + "id": "270af97a7ad47f343323425419e15a4b40b5b2d6", + "message": "fix(jd): 完善订单创建失败时的错误信息和日志记录", + "gmt_create": "2025-10-18T22:05:41.4570902+08:00", + "gmt_modified": "2025-10-18T22:05:41.4570902+08:00" + }, + { + "id": "26", + "message": "feat(jd):优化苹果权益充值接口调用与日志记录", + "gmt_create": "2025-10-18T22:05:41.4742282+08:00", + "gmt_modified": "2025-10-18T22:05:41.4742282+08:00" + }, + { + "id": "e88855ef6b355e26a0332e37c8fbf35f06f1a6df", + "message": "feat(jd_cookie): 添加用户订单号支持并优化订单处理逻辑", + "gmt_create": "2025-10-18T22:08:05.6044932+08:00", + "gmt_modified": "2025-10-18T22:08:05.6044932+08:00" + }, + { + "id": "192aa438cae812c9ca95a5c06a15ca0066237458", + "message": "feat(jd_cookie): 新增京东订单相关模型及逻辑优化", + "gmt_create": "2025-10-18T22:08:05.6276187+08:00", + "gmt_modified": "2025-10-18T22:08:05.6276187+08:00" + }, + { + "id": "8748578e0b514c8688d4696b1d6586fca63e8fe7", + "message": "refactor(jd_cookie):重构时间字段类型为*gtime.Time", + "gmt_create": "2025-10-18T22:08:05.6405156+08:00", + "gmt_modified": "2025-10-18T22:08:05.6405156+08:00" + }, + { + "id": "c1e3051c8ba46582286270b3dd85e166f2562e51", + "message": "fix(order):优化下单接口错误处理逻辑\n\n- 修复了接口返回空时的空指针异常- 统一处理库存不足和Cookie失效的错误状态\n- 保留有效的返回信息用于错误提示\n- 确保所有错误情况都能正确设置响应状态", + "gmt_create": "2025-10-18T22:09:05.1327221+08:00", + "gmt_modified": "2025-10-18T22:09:05.1327221+08:00" + }, + { + "id": "07388743bf6fdea5ecacfd52844951cf29f1ba5a", + "message": "refactor(jd_cookie):重构订单ID字段命名\n\n- 将 UserOrderId 字段统一重命名为 OrderId\n- 更新数据库表字段名 user_order_id 为 order_id- 调整相关结构体和接口中的字段引用\n- 修改历史记录和订单逻辑中的字段使用- 移除临时回调接口定义\n- 保持数据一致性和代码可读性", + "gmt_create": "2025-10-18T22:09:05.172751+08:00", + "gmt_modified": "2025-10-18T22:09:05.172751+08:00" + }, + { + "id": "d812e1700bb51f25a2e6c7b596cd836326ad0a8f", + "message": "feat(jd_cookie): 新增风控失败状态及备注信息支持\n\n- 新增风控失败状态枚举值 RiskFailed (300)- 在京东订单状态中增加 CkFailed 状态 (6) 及对应文案\n- 为多个数据表添加 remark 字段用于存储备注信息\n- 修改下单逻辑以支持风控失败重试机制\n- 更新数据库表结构,将 remark 字段类型从 varchar(500) 改为 text\n- 调整订单历史记录逻辑以包含备注信息-优化 Cookie 失效处理逻辑,支持风险控制失败场景\n- 统一使用 GenerateRandomUUID生成订单号和历史记录 UUID- 完善订单状态变更历史记录,新增 ck_failed 变更类型\n- 增加对京东接口返回 remark 信息的处理和支持\n- 更新相关服务接口定义,添加 remark 参数传递\n- 补充模型定义中的 remark 和 isCkFailed 字段映射", + "gmt_create": "2025-10-18T22:09:05.1930365+08:00", + "gmt_modified": "2025-10-18T22:09:05.1930365+08:00" + }, + { + "id": "ead96af520d030f786869d1a2fc84abf7515ba13", + "message": "feat(jd_cookie): 添加订单回调功能并优化配置参数- 引入 gclient 包用于发起 HTTP 请求- 移除检查间隔时间常量定义- 在卡密提取成功后添加异步回调逻辑\n- 新增 Callback 方法实现向指定地址发送通知- 记录回调响应日志信息", + "gmt_create": "2025-10-18T22:09:05.2156725+08:00", + "gmt_modified": "2025-10-18T22:09:05.2156725+08:00" + }, + { + "id": "cd0ccf6429ac2f33e0a4924282006d85e3631cc8", + "message": "fix(cron): 调整京东支付状态监控任务执行频率\n\n- 将任务执行间隔从10秒调整为30秒\n- 减少任务执行频率以降低系统负载- 保持监控功能的稳定性", + "gmt_create": "2025-10-18T22:09:05.2297702+08:00", + "gmt_modified": "2025-10-18T22:09:05.2297702+08:00" + }, + { + "id": "5d7a452b6c2a45cd789f302cd469b899a95c3437", + "message": "fix(originalJd):修复订单ID类型转换问题\n\n- 将 OrderId 从 string 类型改为 json.Number 类型以支持数字格式- 在 AppleRechargeResp 和 RefreshPaymentRes 中调用 OrderId.String() 进行类型转换\n- 添加 encoding/json 包导入以支持 json.Number 类型处理", + "gmt_create": "2025-10-18T22:09:05.2438208+08:00", + "gmt_modified": "2025-10-18T22:09:05.2438208+08:00" + }, + { + "id": "a50b8b99287d7ee5416b2fa438d7632bca6af461", + "message": "feat(jd-cookie): 新增京东订单导出功能\n\n- 新增导出京东订单接口,支持按状态、时间范围和订单号筛选\n- 实现订单数据导出为Excel文件的功能\n- 更新订单变更类型枚举,将\"replace\"改为\"send\"\n- 在订单历史记录中使用新的变更类型\n- 添加Excel文件生成逻辑,包含订单号、卡密、状态等信息\n- 支持通过HTTP响应直接下载生成的Excel文件- 优化订单状态文本显示逻辑\n- 修复订单变更历史记录中的类型错误\n- 增加空Excel文件生成处理逻辑\n- 完善订单导出相关的请求和响应结构体定义", + "gmt_create": "2025-10-18T22:09:05.2589239+08:00", + "gmt_modified": "2025-10-18T22:09:05.2589239+08:00" + }, + { + "id": "7e6d24ac888cf8fdd9d027a3cce623957ca0f8b4", + "message": "refactor(jd_cookie):重构京东订单历史查询逻辑\n\n- 修改 GetJdOrderHistoryByOrderId 为 GetJdOrderHistoryByJdOrderId\n- 更新函数参数 orderId 为 jdOrderId\n- 调整数据库查询字段从 OrderId 到 JdOrderId\n- 移除订单信息中的微信支付链接字段\n-优化订单支付状态更新逻辑,记录支付时间\n- 清理订单查询中冗余的支付链接获取代码", + "gmt_create": "2025-10-18T22:09:05.2734518+08:00", + "gmt_modified": "2025-10-18T22:09:05.2734518+08:00" + }, + { + "id": "f6a7e7fcd25a928fdf743967980299caf6e95ee8", + "message": "fix(jd_cookie): 调整订单历史查询接口参数校验与逻辑\n\n- 移除订单类型参数的必填校验- 简化订单历史查询逻辑,仅支持用户订单- 更新服务层方法签名以匹配新的请求结构- 删除对京东订单类型的判断和相关代码分支- 优化控制器调用逻辑以适应接口变更", + "gmt_create": "2025-10-18T22:09:05.2899945+08:00", + "gmt_modified": "2025-10-18T22:09:05.2899945+08:00" + }, + { + "id": "59ca3a804f2475b26818d37f3acb8e791eeeec52", + "message": "feat(jd_cookie):优化订单支付链接获取逻辑\n\n- 移除订单表中的微信支付链接字段\n- 从京东订单表中动态获取支付链接- 更新订单信息时不再传递支付链接参数\n- 简化订单创建和更新流程\n- 提高支付链接数据的一致性", + "gmt_create": "2025-10-18T22:09:05.3115157+08:00", + "gmt_modified": "2025-10-18T22:09:05.3115157+08:00" + }, + { + "id": "f358aa0745eebab14e4848cc7b7093d63ab7ca0c", + "message": "feat(jd-cookie): 引入用户订单号支持并重构订单创建逻辑\n\n- 新增用户订单号字段以区分内部订单号\n- 修改订单表结构添加 user_order_id 字段及索引\n- 更新 CreateOrder 接口支持用户订单号参数-重构 CreateOrder 和 GetPaymentUrl 方法返回统一结果对象\n- 新增模型定义用于封装订单创建与支付结果\n- 调整相关逻辑方法签名与调用方式适配新结构- 优化订单创建流程增加内部订单号生成逻辑\n- 完善订单查询逻辑确保正确关联用户订单号- 更新控制器层对接新版服务接口- 升级 Cookie 状态及订单状态管理枚举类型使用", + "gmt_create": "2025-10-18T22:09:05.3326471+08:00", + "gmt_modified": "2025-10-18T22:09:05.3326471+08:00" + }, + { + "id": "5b059bdb84f8cac3da01ca9e53d0136a28747e2e", + "message": "feat(jd-cookie): 引入枚举类型管理京东Cookie状态\n\n- 使用 consts.JdCookieStatus 枚举替换原有的 int 类型状态字段\n- 在 CreateAccountRes、ListAccountReq、CookieAccountInfo 和 UpdateAccountReq 中统一状态类型\n- 更新 ListAccount 和 UpdateAccount 方法签名以支持枚举参数-为状态字段添加验证规则,确保输入值有效(1: 正常, 2: 暂停, 3: 失效)\n- 调整逻辑层中状态比较与赋值操作以兼容枚举类型- 保持接口响应结构体中的状态字段语义清晰且类型安全", + "gmt_create": "2025-10-18T22:09:05.3467481+08:00", + "gmt_modified": "2025-10-18T22:09:05.3467481+08:00" + }, + { + "id": "5170f98c4b5503fbe309f2d93d8361deb7adb713", + "message": "feat(jd_cookie): 更新订单状态及卡密提取逻辑\n\n- 修改 JdOrderChangeTypeReplace 的值为\"已发货\"\n- 移除 OrderChangeTypeBind 常量定义- 优化 RecordJdOrderHistory 调用逻辑,确保 order 非空再记录\n- 在卡密提取成功后更新用户订单状态为已支付\n- 使用结构体方式更新数据库字段,提升代码可读性\n- 清理过期订单时使用结构体更新状态字段\n-修复 orderId 获取逻辑,避免空值情况\n- 添加 do 包引用以支持结构化数据操作", + "gmt_create": "2025-10-18T22:09:05.3618917+08:00", + "gmt_modified": "2025-10-18T22:09:05.3618917+08:00" + }, + { + "id": "baead12025e075376e7927981cdbdb29fc3e9127", + "message": "refactor(jd_cookie):优化订单与Cookie历史记录逻辑- 统一变更类型参数为枚举值,去除字符串转换\n- 移除订单支付链接过期时间返回字段\n-重构京东支付状态监控任务执行逻辑-优化批量检查订单支付状态分页处理\n- 调整数据库索引类型从唯一索引为普通索引- 规范化各类变更类型的中文描述定义\n- 完善历史记录函数签名及调用方式\n- 清理冗余代码并增强错误日志记录", + "gmt_create": "2025-10-18T22:09:05.3956031+08:00", + "gmt_modified": "2025-10-18T22:09:05.3956031+08:00" + }, + { + "id": "0e8687c6e1895e5280c42cda1f05e0fe60456c2b", + "message": "feat(jd):优化苹果权益充值接口调用与日志记录\n\n- 苹果权益充值接口增加ContentJson()方法以明确请求体格式\n- 在苹果权益充值接口中添加响应日志打印逻辑\n- 修改刷新收银台接口的日志描述文案,提升可读性\n- 调整下单接口返回值的日志记录方式,去除冗余包装结构\n- 移除AppleRechargeReq结构体中的UserClient字段定义", + "gmt_create": "2025-10-18T22:09:05.4117275+08:00", + "gmt_modified": "2025-10-18T22:09:05.4117275+08:00" + }, + { + "id": "ecd031f3516ddb30d10184bc29008413fe982138", + "message": "refactor(order): 注释掉订单复用逻辑并添加下单接口返回日志\n\n- 注释掉了检查订单是否已存在的逻辑\n- 注释掉了复用现有京东订单的相关代码\n- 在下单接口返回后添加了详细的响应日志记录- 保留了创建新订单的主要流程逻辑", + "gmt_create": "2025-10-18T22:09:05.4281389+08:00", + "gmt_modified": "2025-10-18T22:09:05.4281389+08:00" + }, + { + "id": "5cbdde321d5a14eeeaf9b4a4885b92b977415750", + "message": "feat(jd_cookie): 启用账户创建权限校验并移除订单创建权限校验\n\n- 在 CreateAccount 接口中启用 SysAuth 登录校验逻辑\n- 移除 CreateOrder 接口中的 SysAuth 登录校验注释- 调整 errHandler 包的导入位置以优化代码结构", + "gmt_create": "2025-10-18T22:09:05.4431883+08:00", + "gmt_modified": "2025-10-18T22:09:05.4431883+08:00" + }, + { + "id": "4dc6ef222bf413d145ce29652128ecbd7ea7e31f", + "message": "feat(jd_cookie): 移除创建账户时的权限检查\n\n- 删除了创建账户接口中的权限验证逻辑\n- 注释掉了原有的权限检查代码块-保留了账户创建的核心业务逻辑\n- 确保接口在无权限校验情况下仍能正常工作", + "gmt_create": "2025-10-18T22:09:05.4751526+08:00", + "gmt_modified": "2025-10-18T22:09:05.4751526+08:00" + }, + { + "id": "9fd91c1bd29bc83ea3a7b2217bbab7af022f74b5", + "message": "feat(jd_cookie): 统一使用IFrame登录权限校验\n\n- 将所有接口的权限校验方法从LoginOnlyLogin替换为LoginOnlyIFrame- 保持权限不足时的错误处理逻辑一致- 更新批量检测、创建、查询等所有相关接口的权限校验方式", + "gmt_create": "2025-10-18T22:09:05.4956637+08:00", + "gmt_modified": "2025-10-18T22:09:05.4956637+08:00" + }, + { + "id": "b4f775b86faecdc99a2ab9e89be2d7ca973762ad", + "message": "feat(jd_cookie): 添加权限验证拦截器- 在所有 jd_cookie 相关接口中增加登录态校验\n- 使用 SysAuth().LoginOnlyLogin 进行统一认证\n- 权限不足时返回 401 错误并提示\"权限不足\"- 引入 errHandler 包处理认证错误信息- 确保只有已登录用户可访问 Cookie 管理功能", + "gmt_create": "2025-10-18T22:09:05.5134605+08:00", + "gmt_modified": "2025-10-18T22:09:05.5134605+08:00" + }, + { + "id": "e6b4b9c801912c27d75ebee52fe74a427920df99", + "message": "refactor(service): 重新整理订单相关接口定义\n\n- 将支付链接获取接口调整到接口尾部\n- 重新组织获取单个订单方法的位置\n- 重新排列订单状态查询接口\n- 调整订单列表查询接口结构\n- 保持接口定义整洁一致,提升代码可读性", + "gmt_create": "2025-10-18T22:09:05.5276495+08:00", + "gmt_modified": "2025-10-18T22:09:05.5276495+08:00" + }, + { + "id": "4d9bf1ca97d6fd14d26fe4edfdcbb64fc8cc57c2", + "message": "chore(ci): 更新Docker仓库地址至git.oceanpay.cc- 修改Docker登录地址为git.oceanpay.cc\n- 更新镜像构建和推送目标地址\n- 调整部署阶段的Docker仓库配置\n- 移除旧仓库相关环境变量引用\n- 更新docker logout命令目标地址- 保持构建参数和标签策略不变", + "gmt_create": "2025-10-18T22:09:05.5530113+08:00", + "gmt_modified": "2025-10-18T22:09:05.5530113+08:00" + }, + { + "id": "1b7e2f0b6c0e9ee2f84cb06b857a01aa99a2d98c", + "message": "feat(jd): 新增京东Cookie订单支付状态自动监控功能\n\n- 设计后台任务定时调度器,周期性检查待支付订单\n- 增加支付状态检查服务,调用京东接口获取订单最新状态\n- 实现卡密提取服务,自动获取并保存卡号卡密信息\n- 扩展京东订单数据模型,增加支付时间、卡密信息等字段\n- 设计支付状态监控业务流程与异常处理策略\n- 优化并发处理与数据库查询效率,提升系统性能\n- 制定详细测试策略,覆盖状态检查和卡密提取核心功能\n- 增加监控与告警机制,保障支付状态查询的稳定性\n- 提供部署配置说明,支持任务间隔、批量大小等参数调整", + "gmt_create": "2025-10-18T22:09:05.5777936+08:00", + "gmt_modified": "2025-10-18T22:09:05.5777936+08:00" + } + ], + "knowledge_relations": [ + { + "id": 1180, + "source_id": "33150d2c-ac78-4784-a31b-e9d342cc880c", + "target_id": "4cc7d7ec-1470-45ec-8b91-d43b0285ff1e", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 33150d2c-ac78-4784-a31b-e9d342cc880c -\u003e 4cc7d7ec-1470-45ec-8b91-d43b0285ff1e", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1181, + "source_id": "33150d2c-ac78-4784-a31b-e9d342cc880c", + "target_id": "1efc56f9-e901-4ce4-b98e-e1c793ab2bda", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 33150d2c-ac78-4784-a31b-e9d342cc880c -\u003e 1efc56f9-e901-4ce4-b98e-e1c793ab2bda", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1182, + "source_id": "33150d2c-ac78-4784-a31b-e9d342cc880c", + "target_id": "1d7ddcb1-d8df-40ae-8bcf-ca2bedc292d3", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 33150d2c-ac78-4784-a31b-e9d342cc880c -\u003e 1d7ddcb1-d8df-40ae-8bcf-ca2bedc292d3", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1183, + "source_id": "050adf51-c0b8-417b-8e31-5502c8d7ebcc", + "target_id": "738f052a-42a0-4959-bafb-657eb467d57d", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 050adf51-c0b8-417b-8e31-5502c8d7ebcc -\u003e 738f052a-42a0-4959-bafb-657eb467d57d", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1184, + "source_id": "050adf51-c0b8-417b-8e31-5502c8d7ebcc", + "target_id": "f10ee956-3c2d-488f-a83d-d998dc2c2bd1", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 050adf51-c0b8-417b-8e31-5502c8d7ebcc -\u003e f10ee956-3c2d-488f-a83d-d998dc2c2bd1", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1185, + "source_id": "050adf51-c0b8-417b-8e31-5502c8d7ebcc", + "target_id": "29857cbd-6dcb-4ee9-b121-6312d5a523c9", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 050adf51-c0b8-417b-8e31-5502c8d7ebcc -\u003e 29857cbd-6dcb-4ee9-b121-6312d5a523c9", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1186, + "source_id": "33c05b7f-e793-4a3f-bb87-9c6ea22d7e63", + "target_id": "b2dccb33-ffec-4b07-8759-f7ce71472ecb", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 33c05b7f-e793-4a3f-bb87-9c6ea22d7e63 -\u003e b2dccb33-ffec-4b07-8759-f7ce71472ecb", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1187, + "source_id": "33c05b7f-e793-4a3f-bb87-9c6ea22d7e63", + "target_id": "99d1a050-0313-4c24-90a9-0db3ac835b2c", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 33c05b7f-e793-4a3f-bb87-9c6ea22d7e63 -\u003e 99d1a050-0313-4c24-90a9-0db3ac835b2c", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1188, + "source_id": "c2fef000-7272-4553-b8e9-650afd08aef6", + "target_id": "5d780517-9a6d-4c42-ba58-f5b8ec8393ce", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: c2fef000-7272-4553-b8e9-650afd08aef6 -\u003e 5d780517-9a6d-4c42-ba58-f5b8ec8393ce", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1189, + "source_id": "c2fef000-7272-4553-b8e9-650afd08aef6", + "target_id": "eb1ee078-c356-49ad-827a-9313420c484d", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: c2fef000-7272-4553-b8e9-650afd08aef6 -\u003e eb1ee078-c356-49ad-827a-9313420c484d", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1190, + "source_id": "077abc2a-81e5-4e9c-9a72-757f4765021c", + "target_id": "0f130c1f-7f7b-4517-97a1-2d3646bbd246", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 077abc2a-81e5-4e9c-9a72-757f4765021c -\u003e 0f130c1f-7f7b-4517-97a1-2d3646bbd246", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1191, + "source_id": "077abc2a-81e5-4e9c-9a72-757f4765021c", + "target_id": "6f8ee399-7380-4fee-a2e4-728f269611b1", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 077abc2a-81e5-4e9c-9a72-757f4765021c -\u003e 6f8ee399-7380-4fee-a2e4-728f269611b1", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1192, + "source_id": "077abc2a-81e5-4e9c-9a72-757f4765021c", + "target_id": "2c270c41-0c72-45b9-be8d-a5605ca16e32", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 077abc2a-81e5-4e9c-9a72-757f4765021c -\u003e 2c270c41-0c72-45b9-be8d-a5605ca16e32", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1193, + "source_id": "e55523f2-f9d0-4297-b67d-dc4fcbee269b", + "target_id": "df46fe53-92ca-4da6-826a-b33df0bd242b", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: e55523f2-f9d0-4297-b67d-dc4fcbee269b -\u003e df46fe53-92ca-4da6-826a-b33df0bd242b", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1194, + "source_id": "e55523f2-f9d0-4297-b67d-dc4fcbee269b", + "target_id": "c7dcc000-3176-454a-a9df-1ecd2131cc5b", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: e55523f2-f9d0-4297-b67d-dc4fcbee269b -\u003e c7dcc000-3176-454a-a9df-1ecd2131cc5b", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1195, + "source_id": "e55523f2-f9d0-4297-b67d-dc4fcbee269b", + "target_id": "824c49c6-ab20-4552-b22a-86d1e9351317", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: e55523f2-f9d0-4297-b67d-dc4fcbee269b -\u003e 824c49c6-ab20-4552-b22a-86d1e9351317", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1196, + "source_id": "e65b9b9b-d210-44c8-8f0c-85e0422070d9", + "target_id": "2c008ded-8f0f-4fae-a0a5-0cfb74c610ea", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: e65b9b9b-d210-44c8-8f0c-85e0422070d9 -\u003e 2c008ded-8f0f-4fae-a0a5-0cfb74c610ea", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1197, + "source_id": "e65b9b9b-d210-44c8-8f0c-85e0422070d9", + "target_id": "17fd343c-4fd0-4124-a801-902c9ecd72ea", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: e65b9b9b-d210-44c8-8f0c-85e0422070d9 -\u003e 17fd343c-4fd0-4124-a801-902c9ecd72ea", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1198, + "source_id": "e65b9b9b-d210-44c8-8f0c-85e0422070d9", + "target_id": "e81e6998-8633-4c13-ae1f-6eb9820aaa79", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: e65b9b9b-d210-44c8-8f0c-85e0422070d9 -\u003e e81e6998-8633-4c13-ae1f-6eb9820aaa79", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "id": 1199, + "source_id": "ab420b44-4f24-4bc3-a44c-bc68b0868ab8", + "target_id": "8b580d72-5612-4fa0-b850-b3a7d72c1e19", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: ab420b44-4f24-4bc3-a44c-bc68b0868ab8 -\u003e 8b580d72-5612-4fa0-b850-b3a7d72c1e19", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1200, + "source_id": "ab420b44-4f24-4bc3-a44c-bc68b0868ab8", + "target_id": "62cc6fce-b7b6-4a5b-8833-1751d5f0ba4e", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: ab420b44-4f24-4bc3-a44c-bc68b0868ab8 -\u003e 62cc6fce-b7b6-4a5b-8833-1751d5f0ba4e", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1201, + "source_id": "51819175-b0b6-4391-899e-6d9466cf804b", + "target_id": "0aafdca3-5383-41f6-95ae-95c4f6eb2f32", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 51819175-b0b6-4391-899e-6d9466cf804b -\u003e 0aafdca3-5383-41f6-95ae-95c4f6eb2f32", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1202, + "source_id": "51819175-b0b6-4391-899e-6d9466cf804b", + "target_id": "692c0d1b-79e2-466b-bd94-9c041d9bda6b", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 51819175-b0b6-4391-899e-6d9466cf804b -\u003e 692c0d1b-79e2-466b-bd94-9c041d9bda6b", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1203, + "source_id": "4cc7d7ec-1470-45ec-8b91-d43b0285ff1e", + "target_id": "5fdf0a72-330a-4ef9-b6f2-56fc3b96a82f", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 4cc7d7ec-1470-45ec-8b91-d43b0285ff1e -\u003e 5fdf0a72-330a-4ef9-b6f2-56fc3b96a82f", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1204, + "source_id": "4cc7d7ec-1470-45ec-8b91-d43b0285ff1e", + "target_id": "1acfa79b-62c0-4874-99e4-6ae09004acc4", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 4cc7d7ec-1470-45ec-8b91-d43b0285ff1e -\u003e 1acfa79b-62c0-4874-99e4-6ae09004acc4", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1205, + "source_id": "4cc7d7ec-1470-45ec-8b91-d43b0285ff1e", + "target_id": "2c96823f-d6db-46ca-a33c-dbfdc28756a1", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 4cc7d7ec-1470-45ec-8b91-d43b0285ff1e -\u003e 2c96823f-d6db-46ca-a33c-dbfdc28756a1", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1206, + "source_id": "0f130c1f-7f7b-4517-97a1-2d3646bbd246", + "target_id": "56080685-56e4-4a91-ba5c-6a25de62ccdf", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 0f130c1f-7f7b-4517-97a1-2d3646bbd246 -\u003e 56080685-56e4-4a91-ba5c-6a25de62ccdf", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1207, + "source_id": "0f130c1f-7f7b-4517-97a1-2d3646bbd246", + "target_id": "bd721dc3-a854-4ab4-af6f-1c1a24c2e660", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 0f130c1f-7f7b-4517-97a1-2d3646bbd246 -\u003e bd721dc3-a854-4ab4-af6f-1c1a24c2e660", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1208, + "source_id": "0f130c1f-7f7b-4517-97a1-2d3646bbd246", + "target_id": "ff38a877-a28e-47d8-b5c9-939b865c97a3", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 0f130c1f-7f7b-4517-97a1-2d3646bbd246 -\u003e ff38a877-a28e-47d8-b5c9-939b865c97a3", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1209, + "source_id": "8b580d72-5612-4fa0-b850-b3a7d72c1e19", + "target_id": "f63d9ee2-939e-4112-8422-b76013d0c37b", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 8b580d72-5612-4fa0-b850-b3a7d72c1e19 -\u003e f63d9ee2-939e-4112-8422-b76013d0c37b", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1210, + "source_id": "8b580d72-5612-4fa0-b850-b3a7d72c1e19", + "target_id": "5512c349-309d-4bd7-9e7e-ec7df28c6d32", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 8b580d72-5612-4fa0-b850-b3a7d72c1e19 -\u003e 5512c349-309d-4bd7-9e7e-ec7df28c6d32", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1211, + "source_id": "8b580d72-5612-4fa0-b850-b3a7d72c1e19", + "target_id": "4a89e30e-d877-427e-98c3-0d58a4fba7a8", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 8b580d72-5612-4fa0-b850-b3a7d72c1e19 -\u003e 4a89e30e-d877-427e-98c3-0d58a4fba7a8", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1212, + "source_id": "6e73ea9a-6384-4196-b8f0-c31e83783450", + "target_id": "06a8f4cd-585e-43e5-992a-156951ca77b1", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 6e73ea9a-6384-4196-b8f0-c31e83783450 -\u003e 06a8f4cd-585e-43e5-992a-156951ca77b1", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1213, + "source_id": "6e73ea9a-6384-4196-b8f0-c31e83783450", + "target_id": "e146bc47-a61b-4bec-bc1a-37faa13b372c", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 6e73ea9a-6384-4196-b8f0-c31e83783450 -\u003e e146bc47-a61b-4bec-bc1a-37faa13b372c", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1214, + "source_id": "6e73ea9a-6384-4196-b8f0-c31e83783450", + "target_id": "0ae6bf62-bc86-44bf-b631-7329d2a379ca", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 6e73ea9a-6384-4196-b8f0-c31e83783450 -\u003e 0ae6bf62-bc86-44bf-b631-7329d2a379ca", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1215, + "source_id": "b2dccb33-ffec-4b07-8759-f7ce71472ecb", + "target_id": "4c36e3bc-fa82-4d1b-a78d-e0832adf415b", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: b2dccb33-ffec-4b07-8759-f7ce71472ecb -\u003e 4c36e3bc-fa82-4d1b-a78d-e0832adf415b", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1216, + "source_id": "b2dccb33-ffec-4b07-8759-f7ce71472ecb", + "target_id": "e05b2dc7-2335-4c8b-b24c-48a1f98f5361", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: b2dccb33-ffec-4b07-8759-f7ce71472ecb -\u003e e05b2dc7-2335-4c8b-b24c-48a1f98f5361", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1217, + "source_id": "1efc56f9-e901-4ce4-b98e-e1c793ab2bda", + "target_id": "e200c8f1-c37b-41e9-bac1-057445ecb066", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 1efc56f9-e901-4ce4-b98e-e1c793ab2bda -\u003e e200c8f1-c37b-41e9-bac1-057445ecb066", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1218, + "source_id": "1efc56f9-e901-4ce4-b98e-e1c793ab2bda", + "target_id": "6e962549-b111-4d8e-b263-89eafba99a84", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 1efc56f9-e901-4ce4-b98e-e1c793ab2bda -\u003e 6e962549-b111-4d8e-b263-89eafba99a84", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1219, + "source_id": "1efc56f9-e901-4ce4-b98e-e1c793ab2bda", + "target_id": "3a97712d-0f09-4a0a-b365-60d2af7a7fe2", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 1efc56f9-e901-4ce4-b98e-e1c793ab2bda -\u003e 3a97712d-0f09-4a0a-b365-60d2af7a7fe2", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1220, + "source_id": "62cc6fce-b7b6-4a5b-8833-1751d5f0ba4e", + "target_id": "0eb7033e-6cb9-4e9c-8641-e80f88d0203c", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 62cc6fce-b7b6-4a5b-8833-1751d5f0ba4e -\u003e 0eb7033e-6cb9-4e9c-8641-e80f88d0203c", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1221, + "source_id": "62cc6fce-b7b6-4a5b-8833-1751d5f0ba4e", + "target_id": "838ae7a4-15cd-489b-b25d-f4af8946b45b", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 62cc6fce-b7b6-4a5b-8833-1751d5f0ba4e -\u003e 838ae7a4-15cd-489b-b25d-f4af8946b45b", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1222, + "source_id": "62cc6fce-b7b6-4a5b-8833-1751d5f0ba4e", + "target_id": "6d1d4be2-a13f-4897-bcc9-362da9158d9b", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 62cc6fce-b7b6-4a5b-8833-1751d5f0ba4e -\u003e 6d1d4be2-a13f-4897-bcc9-362da9158d9b", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1223, + "source_id": "a4cd3134-13ac-4d33-a867-4d225a7f89c3", + "target_id": "0eb68661-00bd-4d95-809e-54d87927a654", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: a4cd3134-13ac-4d33-a867-4d225a7f89c3 -\u003e 0eb68661-00bd-4d95-809e-54d87927a654", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1224, + "source_id": "a4cd3134-13ac-4d33-a867-4d225a7f89c3", + "target_id": "8a159a71-a6ed-4138-93a9-e7c1be49368b", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: a4cd3134-13ac-4d33-a867-4d225a7f89c3 -\u003e 8a159a71-a6ed-4138-93a9-e7c1be49368b", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1225, + "source_id": "a4cd3134-13ac-4d33-a867-4d225a7f89c3", + "target_id": "4bf6885a-1224-4cca-8789-3f3def1f0343", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: a4cd3134-13ac-4d33-a867-4d225a7f89c3 -\u003e 4bf6885a-1224-4cca-8789-3f3def1f0343", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1226, + "source_id": "99d1a050-0313-4c24-90a9-0db3ac835b2c", + "target_id": "3aade0ca-f25c-404f-a8ac-3b3d5d3619c1", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 99d1a050-0313-4c24-90a9-0db3ac835b2c -\u003e 3aade0ca-f25c-404f-a8ac-3b3d5d3619c1", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1227, + "source_id": "99d1a050-0313-4c24-90a9-0db3ac835b2c", + "target_id": "34d853c3-140d-40d8-80fa-e7f32e322305", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 99d1a050-0313-4c24-90a9-0db3ac835b2c -\u003e 34d853c3-140d-40d8-80fa-e7f32e322305", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1228, + "source_id": "99d1a050-0313-4c24-90a9-0db3ac835b2c", + "target_id": "30b6ff79-67a8-4a39-9112-e0af3e9e7f7d", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 99d1a050-0313-4c24-90a9-0db3ac835b2c -\u003e 30b6ff79-67a8-4a39-9112-e0af3e9e7f7d", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1229, + "source_id": "99d1a050-0313-4c24-90a9-0db3ac835b2c", + "target_id": "324bc16b-185c-4af1-8202-3d9b7a9e6e6f", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 99d1a050-0313-4c24-90a9-0db3ac835b2c -\u003e 324bc16b-185c-4af1-8202-3d9b7a9e6e6f", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1230, + "source_id": "2c270c41-0c72-45b9-be8d-a5605ca16e32", + "target_id": "cfbdb9d5-b4d5-420d-9ee1-c9570f5c31f9", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 2c270c41-0c72-45b9-be8d-a5605ca16e32 -\u003e cfbdb9d5-b4d5-420d-9ee1-c9570f5c31f9", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1231, + "source_id": "2c270c41-0c72-45b9-be8d-a5605ca16e32", + "target_id": "53947e3e-89de-416d-857e-54a84330a7ae", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 2c270c41-0c72-45b9-be8d-a5605ca16e32 -\u003e 53947e3e-89de-416d-857e-54a84330a7ae", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1232, + "source_id": "2c270c41-0c72-45b9-be8d-a5605ca16e32", + "target_id": "17fa72bc-2bc8-478c-9b6a-9d6cae53f588", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 2c270c41-0c72-45b9-be8d-a5605ca16e32 -\u003e 17fa72bc-2bc8-478c-9b6a-9d6cae53f588", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1233, + "source_id": "2c270c41-0c72-45b9-be8d-a5605ca16e32", + "target_id": "a3c9a66f-dcd6-40fb-89b8-abb130e7744a", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 2c270c41-0c72-45b9-be8d-a5605ca16e32 -\u003e a3c9a66f-dcd6-40fb-89b8-abb130e7744a", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1234, + "source_id": "1d7ddcb1-d8df-40ae-8bcf-ca2bedc292d3", + "target_id": "fc236117-4117-4af0-8d3d-0c3fbecab71a", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 1d7ddcb1-d8df-40ae-8bcf-ca2bedc292d3 -\u003e fc236117-4117-4af0-8d3d-0c3fbecab71a", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1235, + "source_id": "1d7ddcb1-d8df-40ae-8bcf-ca2bedc292d3", + "target_id": "4d1ec235-b735-4351-abdb-3721a223dd51", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 1d7ddcb1-d8df-40ae-8bcf-ca2bedc292d3 -\u003e 4d1ec235-b735-4351-abdb-3721a223dd51", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1236, + "source_id": "1d7ddcb1-d8df-40ae-8bcf-ca2bedc292d3", + "target_id": "7aca7e2a-1e25-4628-a4ba-3f97fdeb9279", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 1d7ddcb1-d8df-40ae-8bcf-ca2bedc292d3 -\u003e 7aca7e2a-1e25-4628-a4ba-3f97fdeb9279", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1237, + "source_id": "ae7b131d-110f-4347-a2db-f9ee1bb2568a", + "target_id": "a75ff292-fb3f-42ba-84d8-189105b57626", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: ae7b131d-110f-4347-a2db-f9ee1bb2568a -\u003e a75ff292-fb3f-42ba-84d8-189105b57626", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1238, + "source_id": "ae7b131d-110f-4347-a2db-f9ee1bb2568a", + "target_id": "e8e1b906-cdb1-41b2-a03b-8450dfec49e1", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: ae7b131d-110f-4347-a2db-f9ee1bb2568a -\u003e e8e1b906-cdb1-41b2-a03b-8450dfec49e1", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1239, + "source_id": "ae7b131d-110f-4347-a2db-f9ee1bb2568a", + "target_id": "0cfb0e8f-47c2-4030-a2e1-3993fb770b8d", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: ae7b131d-110f-4347-a2db-f9ee1bb2568a -\u003e 0cfb0e8f-47c2-4030-a2e1-3993fb770b8d", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1240, + "source_id": "ae7b131d-110f-4347-a2db-f9ee1bb2568a", + "target_id": "24431815-8687-4b29-b798-214916920f7f", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: ae7b131d-110f-4347-a2db-f9ee1bb2568a -\u003e 24431815-8687-4b29-b798-214916920f7f", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1241, + "source_id": "ae7b131d-110f-4347-a2db-f9ee1bb2568a", + "target_id": "eee4b669-1eb7-45b9-a835-ffebfee1f682", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: ae7b131d-110f-4347-a2db-f9ee1bb2568a -\u003e eee4b669-1eb7-45b9-a835-ffebfee1f682", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1242, + "source_id": "817fc86a-b662-454b-83ed-09be950b1bdc", + "target_id": "d7798344-7bd7-4d4b-b7af-12e478898534", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 817fc86a-b662-454b-83ed-09be950b1bdc -\u003e d7798344-7bd7-4d4b-b7af-12e478898534", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1243, + "source_id": "817fc86a-b662-454b-83ed-09be950b1bdc", + "target_id": "f696338b-1dae-45bc-b4e4-f7aab1a66b0d", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 817fc86a-b662-454b-83ed-09be950b1bdc -\u003e f696338b-1dae-45bc-b4e4-f7aab1a66b0d", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1244, + "source_id": "817fc86a-b662-454b-83ed-09be950b1bdc", + "target_id": "1d532660-5e04-421b-a2b4-3e542c48a890", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 817fc86a-b662-454b-83ed-09be950b1bdc -\u003e 1d532660-5e04-421b-a2b4-3e542c48a890", + "gmt_create": "2025-10-08T19:06:56+08:00", + "gmt_modified": "2025-10-08T19:06:56+08:00" + }, + { + "id": 1251, + "source_id": "a3b7521789787cc4db7608d02c5e95f4", + "target_id": "d018b60f9d48763366246e537520686c", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 22-51", + "gmt_create": "2025-10-11T17:24:20+08:00", + "gmt_modified": "2025-10-11T17:24:20+08:00" + }, + { + "id": 1253, + "source_id": "eb8338fb24a00daa3a4838bbc0ab1393", + "target_id": "f451dcc5212a1a2b4e0ce80b06f8e185", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 8-27", + "gmt_create": "2025-10-11T17:24:20+08:00", + "gmt_modified": "2025-10-11T17:24:20+08:00" + }, + { + "id": 1275, + "source_id": "0f583231f0ca6eb6bdc0cd3104f97d42", + "target_id": "c778028d86a2a65f31627126a2575c0c", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-50", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": 1277, + "source_id": "b6012388f040de469b7ec2244cf9d3bf", + "target_id": "4bad57683321787594727c10ee94c33b", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-37", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": 1279, + "source_id": "40a0c2b01b15ceae41bdd421874c199e", + "target_id": "aee3a2f386eb5a98ddf5ca7cccff0929", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-102", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": 1281, + "source_id": "fb94b419b6c25749805b970980a051ae", + "target_id": "6fe67e9d805a0a633f90f268ef2ee2f4", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-127", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": 1283, + "source_id": "fa2076592876f7f4387e9050085ba9b5", + "target_id": "32bf22e91c31d6f141bf6b7ef0de7b96", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-80", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": 1285, + "source_id": "ce93596b3c315be9ad061ed78b9b4a16", + "target_id": "7face210770aa4ec553604c6d0931175", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-44", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": 1287, + "source_id": "1ede9ed0ed4e2fea117f1f0ee3228874", + "target_id": "842d4a8a22707111e666ac492238b5ef", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-67", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": 1289, + "source_id": "219fe92fb80e3fa8bd7e4080d15e457a", + "target_id": "c701edfecf07f4017d7d956624072fde", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-767", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": 1291, + "source_id": "9592a0fc953a2595f709cd0c67c70a06", + "target_id": "4d71ea0833e7a0a8266b6f2e8b05e459", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-28", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": 1293, + "source_id": "56c658d00971d4697ee90a4fd6912832", + "target_id": "0d5907fd86f99e310c6663b7e705ab7b", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-92", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": 1295, + "source_id": "0f0ab37127003f1af1d234709f1d3198", + "target_id": "488c440eb23bb1208ec810e0d3738028", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-343", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": 1297, + "source_id": "1ffd22848808f089677c2ddc482a954a", + "target_id": "badc687590596030499ebead18afabfc", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-48", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": 1299, + "source_id": "e5ef83e4ccff2f66a4eb56f3b2096bf0", + "target_id": "cf2c6c7ec0ed0b542c5ad37d11c2ea57", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-174", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": 1301, + "source_id": "79ad87595e6f3cccf7d1df8561c8667d", + "target_id": "f67970ad2e09c5f5a6048ff8ef3cd50c", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-10", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": 1327, + "source_id": "94aa282e4a22f85674f3004894e95b12", + "target_id": "9faa5f2db2ec0340fbf2ecfb0e5a7740", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 12-25", + "gmt_create": "2025-10-11T17:25:03+08:00", + "gmt_modified": "2025-10-11T17:25:03+08:00" + }, + { + "id": 1329, + "source_id": "3695f0446f58c552ec036968b720c585", + "target_id": "1c004f6c7e82e215a8538bb563de1a80", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 12-63", + "gmt_create": "2025-10-11T17:25:03+08:00", + "gmt_modified": "2025-10-11T17:25:03+08:00" + }, + { + "id": 1331, + "source_id": "297412eae542d50411094ce29ff6e9b3", + "target_id": "9311a5593c3cb84df188d914b5fcb57b", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 11-33", + "gmt_create": "2025-10-11T17:25:03+08:00", + "gmt_modified": "2025-10-11T17:25:03+08:00" + }, + { + "id": 1333, + "source_id": "4f2117fd41858c8f1f05e73af0c4d045", + "target_id": "734fa931bccd869983dd85fd9b7ab371", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 12-28", + "gmt_create": "2025-10-11T17:25:03+08:00", + "gmt_modified": "2025-10-11T17:25:03+08:00" + }, + { + "id": 1335, + "source_id": "10b4b7e7bda705f2473233626534db93", + "target_id": "d96edb8b929124b14e6a2f23bb5174d1", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 12-27", + "gmt_create": "2025-10-11T17:25:03+08:00", + "gmt_modified": "2025-10-11T17:25:03+08:00" + }, + { + "id": 1337, + "source_id": "251c480af7207ec9635af57c9bc50f04", + "target_id": "6b7240b29633b5a3401cf9e8ec69999f", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 12-22", + "gmt_create": "2025-10-11T17:25:03+08:00", + "gmt_modified": "2025-10-11T17:25:03+08:00" + }, + { + "id": 1342, + "source_id": "24b833965d28e1470eacd7df237acdb4", + "target_id": "338cc7bab8a15d021b6bf4faea030524", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-27", + "gmt_create": "2025-10-11T17:25:03+08:00", + "gmt_modified": "2025-10-11T17:25:03+08:00" + }, + { + "id": 1356, + "source_id": "5824f93b650d7a0b6fb8c1a016077461", + "target_id": "314337c7901e5f608be04c99dbf9dcda", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-67", + "gmt_create": "2025-10-11T17:25:58+08:00", + "gmt_modified": "2025-10-11T17:25:58+08:00" + }, + { + "id": 1358, + "source_id": "11df2c532cb96a0d8e041af4ea176204", + "target_id": "02b920b240a8a0b5cc76dbdd011bfade", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-257", + "gmt_create": "2025-10-11T17:25:58+08:00", + "gmt_modified": "2025-10-11T17:25:58+08:00" + }, + { + "id": 1360, + "source_id": "70f39d04b38fd3c3c76da74b7b0ed20b", + "target_id": "a1f8285bc58503a0979846e628322395", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-230", + "gmt_create": "2025-10-11T17:25:58+08:00", + "gmt_modified": "2025-10-11T17:25:58+08:00" + }, + { + "id": 1362, + "source_id": "b0dcfa2b0067be5ec2e3f00ad722ed85", + "target_id": "62d876856f82a4ea1e63b343aa650ddc", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-164", + "gmt_create": "2025-10-11T17:25:58+08:00", + "gmt_modified": "2025-10-11T17:25:58+08:00" + }, + { + "id": 1364, + "source_id": "cd47a7c1fd3185ff279cca4dd4a1cd9d", + "target_id": "0450d2bd60154c9defe18e2dd0db3944", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-15", + "gmt_create": "2025-10-11T17:25:58+08:00", + "gmt_modified": "2025-10-11T17:25:58+08:00" + }, + { + "id": 1366, + "source_id": "2a00f83021031103c438a59751eee183", + "target_id": "776a898a7e3af295ac0d3f657e027a43", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-13", + "gmt_create": "2025-10-11T17:25:58+08:00", + "gmt_modified": "2025-10-11T17:25:58+08:00" + }, + { + "id": 1368, + "source_id": "eddf871859d423ace01da9a74db6db86", + "target_id": "f4357af3bdee1af700d66352486740ac", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-15", + "gmt_create": "2025-10-11T17:25:58+08:00", + "gmt_modified": "2025-10-11T17:25:58+08:00" + }, + { + "id": 1370, + "source_id": "50111ae80e6ac600d65fbd7b34df3d03", + "target_id": "1f3f6baf21697865c02621086d9ebce9", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-13", + "gmt_create": "2025-10-11T17:25:58+08:00", + "gmt_modified": "2025-10-11T17:25:58+08:00" + }, + { + "id": 1372, + "source_id": "6949b603968e204a80d7e6e337496f12", + "target_id": "852c344b512f86e468cc155a007239c3", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-92", + "gmt_create": "2025-10-11T17:25:58+08:00", + "gmt_modified": "2025-10-11T17:25:58+08:00" + }, + { + "id": 1374, + "source_id": "b896e4b9529b9c35c2662cf25560c5cd", + "target_id": "7f41c190fab616ed408fb3470b01e156", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-14", + "gmt_create": "2025-10-11T17:25:58+08:00", + "gmt_modified": "2025-10-11T17:25:58+08:00" + }, + { + "id": 1376, + "source_id": "26c0da0b-10e1-46fd-ae3c-e0e7b23135ba", + "target_id": "ce051f6cc8a25a53dcd349ccf066f90b", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/card_info_apple/apple_card_info_v1_recharge_list_download_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": 1377, + "source_id": "26c0da0b-10e1-46fd-ae3c-e0e7b23135ba", + "target_id": "315cb5ac67c46c359e9c8f8aecd320da", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/restriction/restriction_v1_user_info_collection_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": 1378, + "source_id": "26c0da0b-10e1-46fd-ae3c-e0e7b23135ba", + "target_id": "69602f92dc2983d638407af34ffc3699", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/cron/t_mall_game_data_sync_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": 1379, + "source_id": "26c0da0b-10e1-46fd-ae3c-e0e7b23135ba", + "target_id": "a4390b2a5bd3345ca09b4f120a912bf6", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/token/user_token_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": 1380, + "source_id": "26c0da0b-10e1-46fd-ae3c-e0e7b23135ba", + "target_id": "8d5d9b9151c15db5b80bdccfa4ad9e4f", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/card_apple_account/account_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": 1381, + "source_id": "26c0da0b-10e1-46fd-ae3c-e0e7b23135ba", + "target_id": "3676af4fc53a7e056b34c4afcae6f032", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/card_apple_account/wallet_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": 1382, + "source_id": "26c0da0b-10e1-46fd-ae3c-e0e7b23135ba", + "target_id": "1339d4fd004425708306ffba6c2dd7f9", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/card_apple_order/order_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": 1383, + "source_id": "26c0da0b-10e1-46fd-ae3c-e0e7b23135ba", + "target_id": "12223cc24bc431745a711c09cde5b50c", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/card_redeem_cookie/place_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": 1384, + "source_id": "26c0da0b-10e1-46fd-ae3c-e0e7b23135ba", + "target_id": "2081083be98975ed163a65fade66d84a", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/card_redeem_account/summary_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": 1385, + "source_id": "26c0da0b-10e1-46fd-ae3c-e0e7b23135ba", + "target_id": "d68b895f71aba40116241dab68952308", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/steal_rule/stats_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": 1386, + "source_id": "26c0da0b-10e1-46fd-ae3c-e0e7b23135ba", + "target_id": "c87e75096c95a73029618add8b2030a6", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/limiter/rate_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": 1387, + "source_id": "26c0da0b-10e1-46fd-ae3c-e0e7b23135ba", + "target_id": "54791cda92ceb80fb0fd1d394b3c7786", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: go.mod", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": 1388, + "source_id": "26c0da0b-10e1-46fd-ae3c-e0e7b23135ba", + "target_id": "6f6df715215e91eb3286c71371bf331d", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: hack/config.yaml", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": 1389, + "source_id": "26c0da0b-10e1-46fd-ae3c-e0e7b23135ba", + "target_id": "c240c13752c53bbb87d71a8654be71ea", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: JD_COOKIE_REFACTOR_REPORT.md", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": 1390, + "source_id": "26c0da0b-10e1-46fd-ae3c-e0e7b23135ba", + "target_id": "f029eb7d6cfc4e70657225da8d0f4d90071071e4", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: f029eb7d6cfc4e70657225da8d0f4d90071071e4", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": 1412, + "source_id": "f72071e80cb61857e0d4b22414fa6ea4", + "target_id": "8fe8c9081678e20a4b8fa4a4bbddf5e4", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 11-123", + "gmt_create": "2025-10-11T17:26:06+08:00", + "gmt_modified": "2025-10-11T17:26:06+08:00" + }, + { + "id": 1414, + "source_id": "03c5c54ee07952069215a22a208842f4", + "target_id": "d21bc3b599b7c526e4c859b7f957c9c3", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-144", + "gmt_create": "2025-10-11T17:26:06+08:00", + "gmt_modified": "2025-10-11T17:26:06+08:00" + }, + { + "id": 1416, + "source_id": "5824f93b650d7a0b6fb8c1a016077461", + "target_id": "f48ef892510854b251b181c258bcd119", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-68", + "gmt_create": "2025-10-11T17:26:06+08:00", + "gmt_modified": "2025-10-11T17:26:06+08:00" + }, + { + "id": 1418, + "source_id": "11df2c532cb96a0d8e041af4ea176204", + "target_id": "964e3fe5d6407728afe85f53719ef569", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-258", + "gmt_create": "2025-10-11T17:26:06+08:00", + "gmt_modified": "2025-10-11T17:26:06+08:00" + }, + { + "id": 1423, + "source_id": "70f39d04b38fd3c3c76da74b7b0ed20b", + "target_id": "616759a9a4d327984230aefdae310fbb", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 22-33", + "gmt_create": "2025-10-11T17:26:06+08:00", + "gmt_modified": "2025-10-11T17:26:06+08:00" + }, + { + "id": 1425, + "source_id": "11df2c532cb96a0d8e041af4ea176204", + "target_id": "d32ea696977b297ef621a0fb8b5ab306", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 35-86", + "gmt_create": "2025-10-11T17:26:06+08:00", + "gmt_modified": "2025-10-11T17:26:06+08:00" + }, + { + "id": 1427, + "source_id": "70f39d04b38fd3c3c76da74b7b0ed20b", + "target_id": "b1f6a58d5a943577f0c54d3666cb8975", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-50", + "gmt_create": "2025-10-11T17:26:06+08:00", + "gmt_modified": "2025-10-11T17:26:06+08:00" + }, + { + "id": 1429, + "source_id": "b100fafa43450f0fdfd71975218cd99c", + "target_id": "589fe36265ad27bcea83406c4f9b4f62", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-14", + "gmt_create": "2025-10-11T17:26:06+08:00", + "gmt_modified": "2025-10-11T17:26:06+08:00" + }, + { + "id": 1431, + "source_id": "5824f93b650d7a0b6fb8c1a016077461", + "target_id": "59b6d508a3e965dc106b1cbeac2570ae", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 40-52", + "gmt_create": "2025-10-11T17:26:06+08:00", + "gmt_modified": "2025-10-11T17:26:06+08:00" + }, + { + "id": 1433, + "source_id": "11df2c532cb96a0d8e041af4ea176204", + "target_id": "01f4775a3f4eabe935537909fd08110b", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 50-55", + "gmt_create": "2025-10-11T17:26:06+08:00", + "gmt_modified": "2025-10-11T17:26:06+08:00" + }, + { + "id": 1435, + "source_id": "edd8bea5c8f9373cd0b4de186914479e", + "target_id": "6172294c21d9eeef4f7e1cbee7494df4", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 500-550", + "gmt_create": "2025-10-11T17:26:06+08:00", + "gmt_modified": "2025-10-11T17:26:06+08:00" + }, + { + "id": 1438, + "source_id": "eec37ad3c15d2c25f166711fa52e741b", + "target_id": "2deccc6412aa3a542406ea4123dbd7e6", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 150-160", + "gmt_create": "2025-10-11T17:26:06+08:00", + "gmt_modified": "2025-10-11T17:26:06+08:00" + }, + { + "id": 1440, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "d002a301044bef263b2a95b977c75925", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/verify/aes_ecb.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1441, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "72755b8cc621f2d563a4a5ee5222529b", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/verify/md5.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1442, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "b279f7393bb4b20c60e4a58537fad6f5", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/mfa/mfa.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1443, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "a3b7521789787cc4db7608d02c5e95f4", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/middleware/auth.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1444, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "674428c72460e01521574ca280c115f4", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/model/sys_user.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1445, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "ee654b1f5fb098fe9e7aeb85bd452349", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/service/sys_user.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1446, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "8193684ba57063beec7b646d4b1b54e0", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/service/sys_auth.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1447, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "55835e5aa0b4632d7c3ab1cb90645f23", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/service/sys_casbin.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1448, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "c08fb0c498d0fab1d988a77466050227", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/dao/v_1_sys_user.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1449, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "9cd3a5d90f9aa905b7855847b1300d50", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/dao/v_1_sys_casbin_rule.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1450, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "b100fafa43450f0fdfd71975218cd99c", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: resource/casbin/rbac_model.conf", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1451, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "c240c13752c53bbb87d71a8654be71ea", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: JD_COOKIE_REFACTOR_REPORT.md", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1452, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "ec6f80518cdb41b1cb7ec141e92638a1", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/middleware/auth.go#1-154", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1453, + "source_id": "a3b7521789787cc4db7608d02c5e95f4", + "target_id": "ec6f80518cdb41b1cb7ec141e92638a1", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-154", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1454, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "972216ab1861cc2715878f10ca1d7e82", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/model/sys_user.go#1-92", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1455, + "source_id": "674428c72460e01521574ca280c115f4", + "target_id": "972216ab1861cc2715878f10ca1d7e82", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-92", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1456, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "43ed130e118ec9a873129314ddcd834d", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/service/sys_casbin.go#1-50", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1457, + "source_id": "55835e5aa0b4632d7c3ab1cb90645f23", + "target_id": "43ed130e118ec9a873129314ddcd834d", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-50", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1458, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "144cff56ec3838a61a926b3ff9a3d25e", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/middleware/auth.go#50-100", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1459, + "source_id": "a3b7521789787cc4db7608d02c5e95f4", + "target_id": "144cff56ec3838a61a926b3ff9a3d25e", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 50-100", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1460, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "c23df18489eaaeec8a340de242b77b44", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/token/user_token.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1461, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "4f93cccb25d8c64e73e92615a203e00e", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: utility/token/user_token.go#1-50", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1462, + "source_id": "c23df18489eaaeec8a340de242b77b44", + "target_id": "4f93cccb25d8c64e73e92615a203e00e", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-50", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1463, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "a964b09bca4acd49db9824c141108f00", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: resource/casbin/rbac_model.conf#1-15", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1464, + "source_id": "b100fafa43450f0fdfd71975218cd99c", + "target_id": "a964b09bca4acd49db9824c141108f00", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-15", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1465, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "5613af50c546b7eeb54ca83263a76c29", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/dao/v_1_sys_casbin_rule.go#1-28", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1466, + "source_id": "9cd3a5d90f9aa905b7855847b1300d50", + "target_id": "5613af50c546b7eeb54ca83263a76c29", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-28", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1467, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "ceaf312dde8910a6de9a4671cd06d559", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: utility/mfa/mfa.go#1-53", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1468, + "source_id": "b279f7393bb4b20c60e4a58537fad6f5", + "target_id": "ceaf312dde8910a6de9a4671cd06d559", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-53", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1469, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "ed43772f3487059e03a475d29e64c140", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/sysUser/sysUser_v1_totp_status_get.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1470, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "7d199570ba96ddc2ca6639d6d726d419", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/controller/sysUser/sysUser_v1_totp_status_get.go#1-37", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1471, + "source_id": "ed43772f3487059e03a475d29e64c140", + "target_id": "7d199570ba96ddc2ca6639d6d726d419", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-37", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1472, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "ed385c7e637955c644231fb8b9437600", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/sysUser/sysUser_v1_totp_set.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1473, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "8c317fe404ce5c22b9feef901431fcc5", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/controller/sysUser/sysUser_v1_totp_set.go#1-34", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1474, + "source_id": "ed385c7e637955c644231fb8b9437600", + "target_id": "8c317fe404ce5c22b9feef901431fcc5", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-34", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1475, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "a5e8020f6c112eb351bfce346cc7e7cd", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: utility/verify/aes_ecb.go#1-91", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1476, + "source_id": "d002a301044bef263b2a95b977c75925", + "target_id": "a5e8020f6c112eb351bfce346cc7e7cd", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-91", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1477, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "cce1b31f34a553e7032bfe746d1cd94b", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: utility/verify/md5.go#1-32", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1478, + "source_id": "72755b8cc621f2d563a4a5ee5222529b", + "target_id": "cce1b31f34a553e7032bfe746d1cd94b", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-32", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1479, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "a4b14b6b79267d38f599e305591c3273", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/service/sys_user.go#1-102", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1480, + "source_id": "ee654b1f5fb098fe9e7aeb85bd452349", + "target_id": "a4b14b6b79267d38f599e305591c3273", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-102", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1481, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "00d464ab1568b59906f97ec8146e8af4", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/errHandler/handler.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1482, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "4eedd1dcf74ca7ed561a2da81f45f3d7", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/errHandler/handler.go#1-50", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1483, + "source_id": "00d464ab1568b59906f97ec8146e8af4", + "target_id": "4eedd1dcf74ca7ed561a2da81f45f3d7", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-50", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1484, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "f029eb7d6cfc4e70657225da8d0f4d90071071e4", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: f029eb7d6cfc4e70657225da8d0f4d90071071e4", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": 1485, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "276c0639f90dcf2a34f4f4fbde119792", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: api/order/v1/form.go", + "gmt_create": "2025-10-11T17:27:33+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "id": 1486, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "b68f5340d85dff7e7356a47028249bea", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: api/order/v1/log.go", + "gmt_create": "2025-10-11T17:27:33+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "id": 1487, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "d004861257e62752cfed1f1a3dee4f6e", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: api/order/v1/order_summary.go", + "gmt_create": "2025-10-11T17:27:33+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "id": 1488, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "117de4e77295f9440aa08bf4b60bb54e", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: api/order/order.go", + "gmt_create": "2025-10-11T17:27:33+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "id": 1489, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "fb972da6475be273c156b3d340c60b4d", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/order/order_new.go", + "gmt_create": "2025-10-11T17:27:33+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "id": 1490, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "1b43f5469efafba6f30e2a9bf228e4d0", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/order/order_v1_order_form_create.go", + "gmt_create": "2025-10-11T17:27:33+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "id": 1491, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "6d0148a632b80d69ab9cb23b7b7c1177", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/order/order_v1_order_form_update.go", + "gmt_create": "2025-10-11T17:27:33+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "id": 1492, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "493b77f6804c0cb6c2b773567f9a98a5", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/order/order_v1_order_form_delete.go", + "gmt_create": "2025-10-11T17:27:33+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "id": 1493, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "16690b403f75ad7364b91d742d4e0ec2", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/order/order_v1_order_form_list.go", + "gmt_create": "2025-10-11T17:27:33+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "id": 1494, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "23d82c1c91bfb481851d2302868008b1", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/order/order_v1_order_log_list.go", + "gmt_create": "2025-10-11T17:27:33+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "id": 1495, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "58a47489aee9a8f906d1d2120d982105", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/order/order_v1_order_log_delete.go", + "gmt_create": "2025-10-11T17:27:33+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "id": 1496, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "b477f7365d4c6efa2c1cbcd88d2e7db9", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/order/order_v1_order_summary_get_list.go", + "gmt_create": "2025-10-11T17:27:33+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "id": 1497, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "3a8478b750f71d410904fb39aa1e55bc", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/order/order_v1_order_summary_daily_get_list.go", + "gmt_create": "2025-10-11T17:27:33+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "id": 1498, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "07658a06e2cd29c67a415fcae7cad0cd", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/model/order_info.go", + "gmt_create": "2025-10-11T17:27:33+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "id": 1499, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "ea969bf93403e59ca22028be70fc6c3a", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/merchant_order/order-summary.go", + "gmt_create": "2025-10-11T17:27:33+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "id": 1500, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "77aff4289e7b60617a6b97873721f586af264581", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 77aff4289e7b60617a6b97873721f586af264581", + "gmt_create": "2025-10-11T17:27:33+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "id": 1501, + "source_id": "b64a6df1-5797-4877-8b53-29fc0fdad59d", + "target_id": "498fdff361f9c01e54357a315e9f7d11", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend\\utility\\integration\\originalJd\\client.go", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": 1502, + "source_id": "b64a6df1-5797-4877-8b53-29fc0fdad59d", + "target_id": "eb65af27cb143cabfacf4e397cb494ca", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend\\utility\\integration\\originalJd\\model.go", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": 1503, + "source_id": "b64a6df1-5797-4877-8b53-29fc0fdad59d", + "target_id": "f94f261c1cc667bd73b5e2d9fc8b4c0f", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend\\internal\\consts\\card_redeem_cookie.go", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": 1504, + "source_id": "b64a6df1-5797-4877-8b53-29fc0fdad59d", + "target_id": "ef7aefce9f83002d91de28b146a92720", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend\\internal\\consts\\card_jd.go", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": 1505, + "source_id": "b64a6df1-5797-4877-8b53-29fc0fdad59d", + "target_id": "dd733661014ef5805339ded90facaed0", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend\\utility\\integration\\originalJd\\client.go#5-35", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": 1506, + "source_id": "498fdff361f9c01e54357a315e9f7d11", + "target_id": "dd733661014ef5805339ded90facaed0", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 5-35", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": 1507, + "source_id": "b64a6df1-5797-4877-8b53-29fc0fdad59d", + "target_id": "9749731ed765b177a75bbb84edc2c781", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend\\utility\\integration\\originalJd\\model.go#35-50", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": 1508, + "source_id": "eb65af27cb143cabfacf4e397cb494ca", + "target_id": "9749731ed765b177a75bbb84edc2c781", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 35-50", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": 1509, + "source_id": "b64a6df1-5797-4877-8b53-29fc0fdad59d", + "target_id": "f415bde86145ca67e63b0a6a7645487a", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend\\utility\\integration\\originalJd\\client.go#65-85", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": 1510, + "source_id": "498fdff361f9c01e54357a315e9f7d11", + "target_id": "f415bde86145ca67e63b0a6a7645487a", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 65-85", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": 1511, + "source_id": "b64a6df1-5797-4877-8b53-29fc0fdad59d", + "target_id": "ff9ed734519da40b64bea347532ad39d", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend\\utility\\integration\\originalJd\\model.go#110-125", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": 1512, + "source_id": "eb65af27cb143cabfacf4e397cb494ca", + "target_id": "ff9ed734519da40b64bea347532ad39d", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 110-125", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": 1513, + "source_id": "b64a6df1-5797-4877-8b53-29fc0fdad59d", + "target_id": "a0944686e185b8cdc6f06d21d5678c43", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend\\internal\\consts\\card_redeem_cookie.go#25-35", + "gmt_create": "2025-10-11T17:28:30+08:00", + "gmt_modified": "2025-10-11T17:28:30+08:00" + }, + { + "id": 1514, + "source_id": "f94f261c1cc667bd73b5e2d9fc8b4c0f", + "target_id": "a0944686e185b8cdc6f06d21d5678c43", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 25-35", + "gmt_create": "2025-10-11T17:28:30+08:00", + "gmt_modified": "2025-10-11T17:28:30+08:00" + }, + { + "id": 1515, + "source_id": "b64a6df1-5797-4877-8b53-29fc0fdad59d", + "target_id": "c6ba97566833b54cd4ff516c8ea88f46", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend\\internal\\consts\\card_jd.go#45-65", + "gmt_create": "2025-10-11T17:28:30+08:00", + "gmt_modified": "2025-10-11T17:28:30+08:00" + }, + { + "id": 1516, + "source_id": "ef7aefce9f83002d91de28b146a92720", + "target_id": "c6ba97566833b54cd4ff516c8ea88f46", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 45-65", + "gmt_create": "2025-10-11T17:28:30+08:00", + "gmt_modified": "2025-10-11T17:28:30+08:00" + }, + { + "id": 1517, + "source_id": "b64a6df1-5797-4877-8b53-29fc0fdad59d", + "target_id": "8a5414d484500ba17e6a788ce484c21b", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend\\utility\\integration\\originalJd\\client.go#10-20", + "gmt_create": "2025-10-11T17:28:30+08:00", + "gmt_modified": "2025-10-11T17:28:30+08:00" + }, + { + "id": 1518, + "source_id": "498fdff361f9c01e54357a315e9f7d11", + "target_id": "8a5414d484500ba17e6a788ce484c21b", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 10-20", + "gmt_create": "2025-10-11T17:28:30+08:00", + "gmt_modified": "2025-10-11T17:28:30+08:00" + }, + { + "id": 1519, + "source_id": "b64a6df1-5797-4877-8b53-29fc0fdad59d", + "target_id": "37112fccfc8b194c480bb373d48115f7", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend\\utility\\integration\\originalJd\\client.go#70-80", + "gmt_create": "2025-10-11T17:28:30+08:00", + "gmt_modified": "2025-10-11T17:28:30+08:00" + }, + { + "id": 1520, + "source_id": "498fdff361f9c01e54357a315e9f7d11", + "target_id": "37112fccfc8b194c480bb373d48115f7", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 70-80", + "gmt_create": "2025-10-11T17:28:30+08:00", + "gmt_modified": "2025-10-11T17:28:30+08:00" + }, + { + "id": 1521, + "source_id": "b64a6df1-5797-4877-8b53-29fc0fdad59d", + "target_id": "77aff4289e7b60617a6b97873721f586af264581", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 77aff4289e7b60617a6b97873721f586af264581", + "gmt_create": "2025-10-11T17:28:30+08:00", + "gmt_modified": "2025-10-11T17:28:30+08:00" + }, + { + "id": 1522, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "5b63b16fce716e9c574c9fcdb6fb533b", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: api/order/v1/order.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1523, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "c0b5e0a48e881e774316a237bd41edcf", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/card_info_apple/card_info_apple_v1_recharge_submit.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1524, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "1c27101b67ffcdf02489a331ce98d3dd", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/card_redeem_jd/card_redeem_jd_v1_place_order.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1525, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "a2750efa03ae7599bd56314495a2da56", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/card_info_jd/card_info_jd_v1_order_callback.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1526, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "711773636c036a042ce625f30229a418", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_submit.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1527, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "1b7d72f7f4a9bb0f3f8a8dc432a433f6", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/model/do/order_info.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1528, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "035d413d594bd8cd49b625ad3200b11c", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/dao/v_1_order_info.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1529, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "449f4de7045f7b39ec1c6aa4ecb4b840", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/service/card_apple_order.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1530, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "a2623d6811b08468df51c167eaf9b774", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/service/card_redeem_order.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1531, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "8ac69700098158e9e90a9a8f1a247a9a", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/consts/sys_user_payment_record.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1532, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "1b43f5469efafba6f30e2a9bf228e4d0", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/order/order_v1_order_form_create.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1533, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "23d82c1c91bfb481851d2302868008b1", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/order/order_v1_order_log_list.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1534, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "b477f7365d4c6efa2c1cbcd88d2e7db9", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/order/order_v1_order_summary_get_list.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1535, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "70e0b28642444d37c06db48c6c61307d", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/card_info_jd/card_info_jd_v1_order_summary_list.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1536, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "3c6298484df164a1e5fe7fc2efa9712c", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/card_info_walmart/card_info_walmart_v1_order_summary_list.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1537, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "fec40ef00c4cd2e564af5cea15277c85", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/card_apple_order/card_apple_order.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1538, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "f18bd86f1dafe9eae88b4f4b00db9bcd", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/card_redeem_order/card_redeem_order.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1539, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "c6ee44f200688a3a1f009e9a166d6481", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/utils/tools.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1540, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "bd83967e8844a9df33a6def66ff88bf8", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/cache/cache.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1541, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "eec37ad3c15d2c25f166711fa52e741b", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/consts/jd_cookie.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1542, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "edd8bea5c8f9373cd0b4de186914479e", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/jd_cookie/order.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1543, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "d6ab1f208fb77fbc9859cad2aa6bb1ed", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/service/jd_cookie.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1544, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "7edb6bdca57d6bc188cd5b2bbbc4a138", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/logic/jd_cookie/order.go#50-130", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1545, + "source_id": "edd8bea5c8f9373cd0b4de186914479e", + "target_id": "7edb6bdca57d6bc188cd5b2bbbc4a138", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 50-130", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1546, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "2deccc6412aa3a542406ea4123dbd7e6", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/consts/jd_cookie.go#150-160", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1547, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "5266c40167bf3310e85d510942a06173", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/logic/jd_cookie/order.go#450-490", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1548, + "source_id": "edd8bea5c8f9373cd0b4de186914479e", + "target_id": "5266c40167bf3310e85d510942a06173", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 450-490", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1549, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "03c5c54ee07952069215a22a208842f4", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/integration/originalJd/model.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1550, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "782300bf902736466e525e642592486f", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: utility/integration/originalJd/model.go#136-143", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1551, + "source_id": "03c5c54ee07952069215a22a208842f4", + "target_id": "782300bf902736466e525e642592486f", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 136-143", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1552, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "77aff4289e7b60617a6b97873721f586af264581", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 77aff4289e7b60617a6b97873721f586af264581", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1553, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "0fdae6a89fef78f6368400b1fe726d987adda7b1", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 0fdae6a89fef78f6368400b1fe726d987adda7b1", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": 1554, + "source_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "target_id": "d002a301044bef263b2a95b977c75925", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/verify/aes_ecb.go", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1555, + "source_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "target_id": "72755b8cc621f2d563a4a5ee5222529b", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/verify/md5.go", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1556, + "source_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "target_id": "91b0ce4e15bd2ec12a8c8f87efd69254", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/config/config.go", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1557, + "source_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "target_id": "c6ee44f200688a3a1f009e9a166d6481", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/utils/tools.go", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1558, + "source_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "target_id": "674428c72460e01521574ca280c115f4", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/model/sys_user.go", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1559, + "source_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "target_id": "7fa23727ee8e479ba4e92dc3eed84908", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/systemV2/logic/user_center/user_center.go", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1560, + "source_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "target_id": "469f62d9db11e2c4fb3697ae2e85f81a", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/dao/internal/v_1_sys_user.go", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1561, + "source_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "target_id": "c240c13752c53bbb87d71a8654be71ea", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: JD_COOKIE_REFACTOR_REPORT.md", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1562, + "source_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "target_id": "47824ef49939140f82365cb3d0eb0cc1", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: utility/verify/aes_ecb.go#1-90", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1563, + "source_id": "d002a301044bef263b2a95b977c75925", + "target_id": "47824ef49939140f82365cb3d0eb0cc1", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-90", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1564, + "source_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "target_id": "cd5e2b6c3c51650146b62ae6dc8f5ad7", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: utility/verify/md5.go#1-31", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1565, + "source_id": "72755b8cc621f2d563a4a5ee5222529b", + "target_id": "cd5e2b6c3c51650146b62ae6dc8f5ad7", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-31", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1566, + "source_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "target_id": "767b677153edb86515b77286476ce79b", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: utility/utils/tools.go#1-25", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1567, + "source_id": "c6ee44f200688a3a1f009e9a166d6481", + "target_id": "767b677153edb86515b77286476ce79b", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-25", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1568, + "source_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "target_id": "fea30ea749579359c4f54de16878cf4f", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: utility/verify/aes_ecb.go#15-85", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1569, + "source_id": "d002a301044bef263b2a95b977c75925", + "target_id": "fea30ea749579359c4f54de16878cf4f", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 15-85", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1570, + "source_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "target_id": "ef1e0649738859b4447918324f2572d9", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: utility/utils/tools.go#22-24", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1571, + "source_id": "c6ee44f200688a3a1f009e9a166d6481", + "target_id": "ef1e0649738859b4447918324f2572d9", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 22-24", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1572, + "source_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "target_id": "0383311e02468d4e918e6065aa543159", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/dao/internal/v_1_sys_user.go#37-81", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1573, + "source_id": "469f62d9db11e2c4fb3697ae2e85f81a", + "target_id": "0383311e02468d4e918e6065aa543159", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 37-81", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1574, + "source_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "target_id": "3b0d083ad6e1e42c3cadee5c77b796a0", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/model/sys_user.go#0-91", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1575, + "source_id": "674428c72460e01521574ca280c115f4", + "target_id": "3b0d083ad6e1e42c3cadee5c77b796a0", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 0-91", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1576, + "source_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "target_id": "35ff891033d9d93c8fa7614ad2fce15d", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: JD_COOKIE_REFACTOR_REPORT.md#1-167", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1577, + "source_id": "c240c13752c53bbb87d71a8654be71ea", + "target_id": "35ff891033d9d93c8fa7614ad2fce15d", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-167", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1578, + "source_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "target_id": "8f77a4f0854077c3774992dffc7b67b7", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: utility/config/config.go#15-35", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1579, + "source_id": "91b0ce4e15bd2ec12a8c8f87efd69254", + "target_id": "8f77a4f0854077c3774992dffc7b67b7", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 15-35", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1580, + "source_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "target_id": "f029eb7d6cfc4e70657225da8d0f4d90071071e4", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: f029eb7d6cfc4e70657225da8d0f4d90071071e4", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": 1581, + "source_id": "743dffa6-cd2e-413c-8747-415bb3c039fc", + "target_id": "77aff4289e7b60617a6b97873721f586af264581", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 77aff4289e7b60617a6b97873721f586af264581", + "gmt_create": "2025-10-11T17:31:20+08:00", + "gmt_modified": "2025-10-11T17:31:20+08:00" + }, + { + "id": 1582, + "source_id": "743dffa6-cd2e-413c-8747-415bb3c039fc", + "target_id": "0fdae6a89fef78f6368400b1fe726d987adda7b1", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 0fdae6a89fef78f6368400b1fe726d987adda7b1", + "gmt_create": "2025-10-11T17:31:20+08:00", + "gmt_modified": "2025-10-11T17:31:20+08:00" + }, + { + "id": 1583, + "source_id": "743dffa6-cd2e-413c-8747-415bb3c039fc", + "target_id": "f029eb7d6cfc4e70657225da8d0f4d90071071e4", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: f029eb7d6cfc4e70657225da8d0f4d90071071e4", + "gmt_create": "2025-10-11T17:31:20+08:00", + "gmt_modified": "2025-10-11T17:31:20+08:00" + }, + { + "id": 1597, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "bb84a187-9957-4c61-82b0-b8997f3b306a", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 8987b1d6-99e5-4387-8d3c-60e739a30e20 -\u003e bb84a187-9957-4c61-82b0-b8997f3b306a", + "gmt_create": "2025-10-11T17:31:20+08:00", + "gmt_modified": "2025-10-11T17:31:20+08:00" + }, + { + "id": 1598, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "b52b76ee-90db-4464-bb9d-431b10755e6e", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 8987b1d6-99e5-4387-8d3c-60e739a30e20 -\u003e b52b76ee-90db-4464-bb9d-431b10755e6e", + "gmt_create": "2025-10-11T17:31:20+08:00", + "gmt_modified": "2025-10-11T17:31:20+08:00" + }, + { + "id": 1599, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 8987b1d6-99e5-4387-8d3c-60e739a30e20 -\u003e 9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "gmt_create": "2025-10-11T17:31:20+08:00", + "gmt_modified": "2025-10-11T17:31:20+08:00" + }, + { + "id": 1600, + "source_id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "target_id": "d15e79da-d03f-46a7-9939-d486c82bdd9e", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 8987b1d6-99e5-4387-8d3c-60e739a30e20 -\u003e d15e79da-d03f-46a7-9939-d486c82bdd9e", + "gmt_create": "2025-10-11T17:31:20+08:00", + "gmt_modified": "2025-10-11T17:31:20+08:00" + }, + { + "id": 1601, + "source_id": "b64a6df1-5797-4877-8b53-29fc0fdad59d", + "target_id": "477c9fd9-139a-43fe-87ae-8d64529bbf2c", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: b64a6df1-5797-4877-8b53-29fc0fdad59d -\u003e 477c9fd9-139a-43fe-87ae-8d64529bbf2c", + "gmt_create": "2025-10-11T17:31:20+08:00", + "gmt_modified": "2025-10-11T17:31:20+08:00" + }, + { + "id": 1602, + "source_id": "b64a6df1-5797-4877-8b53-29fc0fdad59d", + "target_id": "4c9682c6-1065-4e84-8b74-f2fdd80c62f4", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: b64a6df1-5797-4877-8b53-29fc0fdad59d -\u003e 4c9682c6-1065-4e84-8b74-f2fdd80c62f4", + "gmt_create": "2025-10-11T17:31:20+08:00", + "gmt_modified": "2025-10-11T17:31:20+08:00" + }, + { + "id": 1603, + "source_id": "b64a6df1-5797-4877-8b53-29fc0fdad59d", + "target_id": "a6a1a0f2-4a40-46ed-a2fa-abeaf60eea55", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: b64a6df1-5797-4877-8b53-29fc0fdad59d -\u003e a6a1a0f2-4a40-46ed-a2fa-abeaf60eea55", + "gmt_create": "2025-10-11T17:31:20+08:00", + "gmt_modified": "2025-10-11T17:31:20+08:00" + }, + { + "id": 1604, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "753b0096-e6c4-42d1-aba0-93c8df17fdc9", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 2ab1acd9-0488-4f69-a292-63359e8a485a -\u003e 753b0096-e6c4-42d1-aba0-93c8df17fdc9", + "gmt_create": "2025-10-11T17:31:20+08:00", + "gmt_modified": "2025-10-11T17:31:20+08:00" + }, + { + "id": 1605, + "source_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "target_id": "080fba3c-3cca-40b8-b913-c5cf213a36f9", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 2ab1acd9-0488-4f69-a292-63359e8a485a -\u003e 080fba3c-3cca-40b8-b913-c5cf213a36f9", + "gmt_create": "2025-10-11T17:31:20+08:00", + "gmt_modified": "2025-10-11T17:31:20+08:00" + }, + { + "id": 1606, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "61e64814-3402-4560-ac80-de2897628585", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: ba1c4880-8600-4564-afa6-175208ea101b -\u003e 61e64814-3402-4560-ac80-de2897628585", + "gmt_create": "2025-10-11T17:31:20+08:00", + "gmt_modified": "2025-10-11T17:31:20+08:00" + }, + { + "id": 1607, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "353ff7c7-0ce0-4cc3-a0aa-1d724d7c2190", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: ba1c4880-8600-4564-afa6-175208ea101b -\u003e 353ff7c7-0ce0-4cc3-a0aa-1d724d7c2190", + "gmt_create": "2025-10-11T17:31:20+08:00", + "gmt_modified": "2025-10-11T17:31:20+08:00" + }, + { + "id": 1608, + "source_id": "ba1c4880-8600-4564-afa6-175208ea101b", + "target_id": "04861c55-7eb4-4fb8-9367-ea7653e898c2", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: ba1c4880-8600-4564-afa6-175208ea101b -\u003e 04861c55-7eb4-4fb8-9367-ea7653e898c2", + "gmt_create": "2025-10-11T17:31:20+08:00", + "gmt_modified": "2025-10-11T17:31:20+08:00" + }, + { + "id": 1609, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "f64c7936d86ec71ec54ea9cb5a6d7466", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: manifest/config/config.yaml", + "gmt_create": "2025-10-18T22:04:18.202424+08:00", + "gmt_modified": "2025-10-18T22:04:18.202424+08:00" + }, + { + "id": 1610, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "e5e06384050da6e9cb71d788b8fdfea5", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: manifest/docker/Dockerfile", + "gmt_create": "2025-10-18T22:04:18.2086155+08:00", + "gmt_modified": "2025-10-18T22:04:18.2086155+08:00" + }, + { + "id": 1611, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "5c71a6de5070579b5c90694ac98bb368", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: manifest/docker/docker-compose.yml", + "gmt_create": "2025-10-18T22:04:18.2145251+08:00", + "gmt_modified": "2025-10-18T22:04:18.2145251+08:00" + }, + { + "id": 1612, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "07153a17d7dda70c75d2b1b4146f582c", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: manifest/docker/docker-compose-local.yaml", + "gmt_create": "2025-10-18T22:04:18.2202679+08:00", + "gmt_modified": "2025-10-18T22:04:18.2202679+08:00" + }, + { + "id": 1613, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "ff277b9199e792d02dbfa13f55915d43", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: manifest/docker/install.sh", + "gmt_create": "2025-10-18T22:04:18.2269134+08:00", + "gmt_modified": "2025-10-18T22:04:18.2269134+08:00" + }, + { + "id": 1614, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "4d75f6651634ab298f2875fc0e83333d", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: manifest/deploy/kustomize/base/kustomization.yaml", + "gmt_create": "2025-10-18T22:04:18.2337666+08:00", + "gmt_modified": "2025-10-18T22:04:18.2337666+08:00" + }, + { + "id": 1615, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "c668b2b1eb7f16d3e643a19a9e1fdd7b", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: manifest/deploy/kustomize/overlays/develop/kustomization.yaml", + "gmt_create": "2025-10-18T22:04:18.2398251+08:00", + "gmt_modified": "2025-10-18T22:04:18.2398251+08:00" + }, + { + "id": 1616, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "1e38df357652b98eb89f47c776d89716", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: manifest/deploy/kustomize/base/deployment.yaml", + "gmt_create": "2025-10-18T22:04:18.2467139+08:00", + "gmt_modified": "2025-10-18T22:04:18.2467139+08:00" + }, + { + "id": 1617, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "375bbed4688b0d8de4a69655f763d5fe", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: manifest/deploy/kustomize/overlays/develop/deployment.yaml", + "gmt_create": "2025-10-18T22:04:18.2535169+08:00", + "gmt_modified": "2025-10-18T22:04:18.2535169+08:00" + }, + { + "id": 1618, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "9bf50a69c00a52a1dff9af6d0a524561", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: manifest/deploy/kustomize/overlays/develop/configmap.yaml", + "gmt_create": "2025-10-18T22:04:18.2625177+08:00", + "gmt_modified": "2025-10-18T22:04:18.2625177+08:00" + }, + { + "id": 1619, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "cd7e39cff0a7e858c297aca5f1d6a079", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: Makefile", + "gmt_create": "2025-10-18T22:04:18.2716482+08:00", + "gmt_modified": "2025-10-18T22:04:18.2716482+08:00" + }, + { + "id": 1620, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "fa263673f2a99e1b81a89d8bcba135f2", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: hack/hack.mk", + "gmt_create": "2025-10-18T22:04:18.2799418+08:00", + "gmt_modified": "2025-10-18T22:04:18.2799418+08:00" + }, + { + "id": 1621, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "a032002d1754289832a7235ddf38bba8", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: .drone.yml", + "gmt_create": "2025-10-18T22:04:18.2857343+08:00", + "gmt_modified": "2025-10-18T22:04:18.2857343+08:00" + }, + { + "id": 1622, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "2e66ec3759ab8e44a2f8b14f29e91610", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/cron/cron.go", + "gmt_create": "2025-10-18T22:04:18.2925313+08:00", + "gmt_modified": "2025-10-18T22:04:18.2925313+08:00" + }, + { + "id": 1623, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "acfa1be45056640e25383a94f19dc7d9", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: manifest/config/config.yaml#1-104", + "gmt_create": "2025-10-18T22:04:18.2978636+08:00", + "gmt_modified": "2025-10-18T22:04:18.2978636+08:00" + }, + { + "id": 1624, + "source_id": "f64c7936d86ec71ec54ea9cb5a6d7466", + "target_id": "acfa1be45056640e25383a94f19dc7d9", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-104", + "gmt_create": "2025-10-18T22:04:18.3042022+08:00", + "gmt_modified": "2025-10-18T22:04:18.3042022+08:00" + }, + { + "id": 1625, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "b73368b03e242affa847ca3d7470031e", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: manifest/docker/Dockerfile#1-41", + "gmt_create": "2025-10-18T22:04:18.3106994+08:00", + "gmt_modified": "2025-10-18T22:04:18.3106994+08:00" + }, + { + "id": 1626, + "source_id": "e5e06384050da6e9cb71d788b8fdfea5", + "target_id": "b73368b03e242affa847ca3d7470031e", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-41", + "gmt_create": "2025-10-18T22:04:18.3170747+08:00", + "gmt_modified": "2025-10-18T22:04:18.3170747+08:00" + }, + { + "id": 1627, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "db1c31f617d9e5f634d8339367911606", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: manifest/docker/docker-compose.yml#1-19", + "gmt_create": "2025-10-18T22:04:18.3249445+08:00", + "gmt_modified": "2025-10-18T22:04:18.3249445+08:00" + }, + { + "id": 1628, + "source_id": "5c71a6de5070579b5c90694ac98bb368", + "target_id": "db1c31f617d9e5f634d8339367911606", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-19", + "gmt_create": "2025-10-18T22:04:18.3321852+08:00", + "gmt_modified": "2025-10-18T22:04:18.3321852+08:00" + }, + { + "id": 1629, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "dd64c275dd8d4bc11cde8a7b7a290fed", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: manifest/docker/docker-compose-local.yaml#1-20", + "gmt_create": "2025-10-18T22:04:18.3374347+08:00", + "gmt_modified": "2025-10-18T22:04:18.3374347+08:00" + }, + { + "id": 1630, + "source_id": "07153a17d7dda70c75d2b1b4146f582c", + "target_id": "dd64c275dd8d4bc11cde8a7b7a290fed", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-20", + "gmt_create": "2025-10-18T22:04:18.3438611+08:00", + "gmt_modified": "2025-10-18T22:04:18.3438611+08:00" + }, + { + "id": 1631, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "d6cc2f26e69178bb84fde4c8efd2bc72", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: Makefile#1-6", + "gmt_create": "2025-10-18T22:04:18.3528074+08:00", + "gmt_modified": "2025-10-18T22:04:18.3528074+08:00" + }, + { + "id": 1632, + "source_id": "cd7e39cff0a7e858c297aca5f1d6a079", + "target_id": "d6cc2f26e69178bb84fde4c8efd2bc72", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-6", + "gmt_create": "2025-10-18T22:04:18.3594385+08:00", + "gmt_modified": "2025-10-18T22:04:18.3594385+08:00" + }, + { + "id": 1633, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "dfaf7eeee313e45381a5c84acad7d598", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: hack/hack.mk#1-75", + "gmt_create": "2025-10-18T22:04:18.3650628+08:00", + "gmt_modified": "2025-10-18T22:04:18.3650628+08:00" + }, + { + "id": 1634, + "source_id": "fa263673f2a99e1b81a89d8bcba135f2", + "target_id": "dfaf7eeee313e45381a5c84acad7d598", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-75", + "gmt_create": "2025-10-18T22:04:18.3706908+08:00", + "gmt_modified": "2025-10-18T22:04:18.3706908+08:00" + }, + { + "id": 1635, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "037c00a89165736016c43de51f38904f", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: manifest/docker/install.sh#1-144", + "gmt_create": "2025-10-18T22:04:18.376612+08:00", + "gmt_modified": "2025-10-18T22:04:18.376612+08:00" + }, + { + "id": 1636, + "source_id": "ff277b9199e792d02dbfa13f55915d43", + "target_id": "037c00a89165736016c43de51f38904f", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-144", + "gmt_create": "2025-10-18T22:04:18.383598+08:00", + "gmt_modified": "2025-10-18T22:04:18.383598+08:00" + }, + { + "id": 1637, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "de0ba4e69640dc07afdabcd8239a78d4", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: manifest/deploy/kustomize/base/kustomization.yaml#1-9", + "gmt_create": "2025-10-18T22:04:18.3955575+08:00", + "gmt_modified": "2025-10-18T22:04:18.3955575+08:00" + }, + { + "id": 1638, + "source_id": "4d75f6651634ab298f2875fc0e83333d", + "target_id": "de0ba4e69640dc07afdabcd8239a78d4", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-9", + "gmt_create": "2025-10-18T22:04:18.4023848+08:00", + "gmt_modified": "2025-10-18T22:04:18.4023848+08:00" + }, + { + "id": 1639, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "6bd49f88fb853be92cced1cf022cf602", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: manifest/deploy/kustomize/overlays/develop/kustomization.yaml#1-15", + "gmt_create": "2025-10-18T22:04:18.4092235+08:00", + "gmt_modified": "2025-10-18T22:04:18.4092235+08:00" + }, + { + "id": 1640, + "source_id": "c668b2b1eb7f16d3e643a19a9e1fdd7b", + "target_id": "6bd49f88fb853be92cced1cf022cf602", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-15", + "gmt_create": "2025-10-18T22:04:18.4162712+08:00", + "gmt_modified": "2025-10-18T22:04:18.4162712+08:00" + }, + { + "id": 1641, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "3b39ff5f0cfc1dd7c098c94d3f933f75", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: manifest/deploy/kustomize/base/deployment.yaml#1-22", + "gmt_create": "2025-10-18T22:04:18.4225986+08:00", + "gmt_modified": "2025-10-18T22:04:18.4225986+08:00" + }, + { + "id": 1642, + "source_id": "1e38df357652b98eb89f47c776d89716", + "target_id": "3b39ff5f0cfc1dd7c098c94d3f933f75", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-22", + "gmt_create": "2025-10-18T22:04:18.4305306+08:00", + "gmt_modified": "2025-10-18T22:04:18.4305306+08:00" + }, + { + "id": 1643, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "0e4358230bffd4be2ea7053332694d44", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: manifest/deploy/kustomize/overlays/develop/deployment.yaml#1-10", + "gmt_create": "2025-10-18T22:04:18.4363047+08:00", + "gmt_modified": "2025-10-18T22:04:18.4363047+08:00" + }, + { + "id": 1644, + "source_id": "375bbed4688b0d8de4a69655f763d5fe", + "target_id": "0e4358230bffd4be2ea7053332694d44", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-10", + "gmt_create": "2025-10-18T22:04:18.4450006+08:00", + "gmt_modified": "2025-10-18T22:04:18.4450006+08:00" + }, + { + "id": 1645, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "ab5aade552f972707c516a2836e5599e", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: manifest/deploy/kustomize/overlays/develop/configmap.yaml#1-15", + "gmt_create": "2025-10-18T22:04:18.4550537+08:00", + "gmt_modified": "2025-10-18T22:04:18.4550537+08:00" + }, + { + "id": 1646, + "source_id": "9bf50a69c00a52a1dff9af6d0a524561", + "target_id": "ab5aade552f972707c516a2836e5599e", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-15", + "gmt_create": "2025-10-18T22:04:18.464459+08:00", + "gmt_modified": "2025-10-18T22:04:18.464459+08:00" + }, + { + "id": 1647, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "7ba715316b620dc29a8f18d4de067b23", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: .drone.yml#1-46", + "gmt_create": "2025-10-18T22:04:18.4782853+08:00", + "gmt_modified": "2025-10-18T22:04:18.4782853+08:00" + }, + { + "id": 1648, + "source_id": "a032002d1754289832a7235ddf38bba8", + "target_id": "7ba715316b620dc29a8f18d4de067b23", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-46", + "gmt_create": "2025-10-18T22:04:18.4851318+08:00", + "gmt_modified": "2025-10-18T22:04:18.4851318+08:00" + }, + { + "id": 1649, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "c5ee11836f7ab42cda2655f445cac377", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: utility/cron/cron.go#1-65", + "gmt_create": "2025-10-18T22:04:18.4911791+08:00", + "gmt_modified": "2025-10-18T22:04:18.4911791+08:00" + }, + { + "id": 1650, + "source_id": "2e66ec3759ab8e44a2f8b14f29e91610", + "target_id": "c5ee11836f7ab42cda2655f445cac377", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-65", + "gmt_create": "2025-10-18T22:04:18.4983457+08:00", + "gmt_modified": "2025-10-18T22:04:18.4983457+08:00" + }, + { + "id": 1651, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "34", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 34", + "gmt_create": "2025-10-18T22:04:18.5116488+08:00", + "gmt_modified": "2025-10-18T22:04:18.5116488+08:00" + }, + { + "id": 1652, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "12", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 12", + "gmt_create": "2025-10-18T22:04:18.5231655+08:00", + "gmt_modified": "2025-10-18T22:04:18.5231655+08:00" + }, + { + "id": 1653, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "81494a0669c2c7e2fc491bbeea59dc78597e1efa", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 81494a0669c2c7e2fc491bbeea59dc78597e1efa", + "gmt_create": "2025-10-18T22:04:18.5343973+08:00", + "gmt_modified": "2025-10-18T22:04:18.5343973+08:00" + }, + { + "id": 1654, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "0f583231f0ca6eb6bdc0cd3104f97d42", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/main.go", + "gmt_create": "2025-10-18T22:04:37.0326589+08:00", + "gmt_modified": "2025-10-18T22:04:37.0326589+08:00" + }, + { + "id": 1655, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "debc2930279b67133bdabc1b8627fa74", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/utility/otel/config.go", + "gmt_create": "2025-10-18T22:04:37.0412594+08:00", + "gmt_modified": "2025-10-18T22:04:37.0412594+08:00" + }, + { + "id": 1656, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "646de3e21aede32684ac250608e30f81", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/utility/otel/manager.go", + "gmt_create": "2025-10-18T22:04:37.0488483+08:00", + "gmt_modified": "2025-10-18T22:04:37.0488483+08:00" + }, + { + "id": 1657, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "1455afd43a1181b4924167eee7f2bf61", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/utility/otel/utils.go", + "gmt_create": "2025-10-18T22:04:37.0563436+08:00", + "gmt_modified": "2025-10-18T22:04:37.0563436+08:00" + }, + { + "id": 1658, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "4aab766e7ad6f5e8c17384b0d5361728", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/resource/casbin/rbac_model.conf", + "gmt_create": "2025-10-18T22:04:37.0644435+08:00", + "gmt_modified": "2025-10-18T22:04:37.0644435+08:00" + }, + { + "id": 1659, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "487ce7ed78126fa758cc2d348b2f410e", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/utility/integration/redeem/jd/api.go", + "gmt_create": "2025-10-18T22:04:37.0716017+08:00", + "gmt_modified": "2025-10-18T22:04:37.0716017+08:00" + }, + { + "id": 1660, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "85326ba007bc4b730914abf2639ab613", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/utility/integration/redeem/ctrip/api.go", + "gmt_create": "2025-10-18T22:04:37.0796843+08:00", + "gmt_modified": "2025-10-18T22:04:37.0796843+08:00" + }, + { + "id": 1661, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "08fcd1de22231d0da02880634f8774fa", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/utility/integration/redeem/walmart/api.go", + "gmt_create": "2025-10-18T22:04:37.0874514+08:00", + "gmt_modified": "2025-10-18T22:04:37.0874514+08:00" + }, + { + "id": 1662, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "38d3cae75228d13a3dd19e8fa2956753", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/utility/integration/tmall/api/api.go", + "gmt_create": "2025-10-18T22:04:37.0954173+08:00", + "gmt_modified": "2025-10-18T22:04:37.0954173+08:00" + }, + { + "id": 1663, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "ce3a1385eaebaa905699b23ad83e209c", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/utility/integration/originalJd/client.go", + "gmt_create": "2025-10-18T22:04:37.1032888+08:00", + "gmt_modified": "2025-10-18T22:04:37.1032888+08:00" + }, + { + "id": 1664, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "966e173135a1b07b87f554aa60f65dd1", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/utility/integration/originalJd/model.go", + "gmt_create": "2025-10-18T22:04:37.1085543+08:00", + "gmt_modified": "2025-10-18T22:04:37.1085543+08:00" + }, + { + "id": 1665, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "348a584cbaee62585af0b8f576760382", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/jd_cookie/order.go", + "gmt_create": "2025-10-18T22:04:37.1196615+08:00", + "gmt_modified": "2025-10-18T22:04:37.1196615+08:00" + }, + { + "id": 1666, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "268b3e7951536fbd682c2f50b8960980", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/utility/integration/redeem/jd/api.go#1-5", + "gmt_create": "2025-10-18T22:04:37.1277835+08:00", + "gmt_modified": "2025-10-18T22:04:37.1277835+08:00" + }, + { + "id": 1667, + "source_id": "487ce7ed78126fa758cc2d348b2f410e", + "target_id": "268b3e7951536fbd682c2f50b8960980", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-5", + "gmt_create": "2025-10-18T22:04:37.1307583+08:00", + "gmt_modified": "2025-10-18T22:04:37.1307583+08:00" + }, + { + "id": 1668, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "9f040686e23b6fd6b3b53522a50a3fae", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/utility/integration/redeem/ctrip/api.go#1-5", + "gmt_create": "2025-10-18T22:04:37.1428276+08:00", + "gmt_modified": "2025-10-18T22:04:37.1428276+08:00" + }, + { + "id": 1669, + "source_id": "85326ba007bc4b730914abf2639ab613", + "target_id": "9f040686e23b6fd6b3b53522a50a3fae", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-5", + "gmt_create": "2025-10-18T22:04:37.1501177+08:00", + "gmt_modified": "2025-10-18T22:04:37.1501177+08:00" + }, + { + "id": 1670, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "d5f63253bfce66da1b9e040b318f5ac8", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/utility/integration/redeem/walmart/api.go#1-5", + "gmt_create": "2025-10-18T22:04:37.1589259+08:00", + "gmt_modified": "2025-10-18T22:04:37.1589259+08:00" + }, + { + "id": 1671, + "source_id": "08fcd1de22231d0da02880634f8774fa", + "target_id": "d5f63253bfce66da1b9e040b318f5ac8", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-5", + "gmt_create": "2025-10-18T22:04:37.1662199+08:00", + "gmt_modified": "2025-10-18T22:04:37.1662199+08:00" + }, + { + "id": 1672, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "8fcf454d6439e16e2ee45b592d199565", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/utility/integration/tmall/api/api.go#1-20", + "gmt_create": "2025-10-18T22:04:37.1735007+08:00", + "gmt_modified": "2025-10-18T22:04:37.1735007+08:00" + }, + { + "id": 1673, + "source_id": "38d3cae75228d13a3dd19e8fa2956753", + "target_id": "8fcf454d6439e16e2ee45b592d199565", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-20", + "gmt_create": "2025-10-18T22:04:37.1827874+08:00", + "gmt_modified": "2025-10-18T22:04:37.1827874+08:00" + }, + { + "id": 1674, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "e7f3e2357a5be12aba6f1b222070b75b", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/utility/integration/originalJd/client.go#11-123", + "gmt_create": "2025-10-18T22:04:37.192532+08:00", + "gmt_modified": "2025-10-18T22:04:37.192532+08:00" + }, + { + "id": 1675, + "source_id": "ce3a1385eaebaa905699b23ad83e209c", + "target_id": "e7f3e2357a5be12aba6f1b222070b75b", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 11-123", + "gmt_create": "2025-10-18T22:04:37.2002593+08:00", + "gmt_modified": "2025-10-18T22:04:37.2002593+08:00" + }, + { + "id": 1676, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "513dd1188dfbad313f70d29fb1e183bc", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/utility/integration/originalJd/model.go#1-144", + "gmt_create": "2025-10-18T22:04:37.2087821+08:00", + "gmt_modified": "2025-10-18T22:04:37.2087821+08:00" + }, + { + "id": 1677, + "source_id": "966e173135a1b07b87f554aa60f65dd1", + "target_id": "513dd1188dfbad313f70d29fb1e183bc", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-144", + "gmt_create": "2025-10-18T22:04:37.2165829+08:00", + "gmt_modified": "2025-10-18T22:04:37.2165829+08:00" + }, + { + "id": 1678, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "4fdff47316ebde6fa296678a3558466a", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/utility/otel/config.go#1-68", + "gmt_create": "2025-10-18T22:04:37.2249681+08:00", + "gmt_modified": "2025-10-18T22:04:37.2249681+08:00" + }, + { + "id": 1679, + "source_id": "debc2930279b67133bdabc1b8627fa74", + "target_id": "4fdff47316ebde6fa296678a3558466a", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-68", + "gmt_create": "2025-10-18T22:04:37.2326244+08:00", + "gmt_modified": "2025-10-18T22:04:37.2326244+08:00" + }, + { + "id": 1680, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "3172bdd0bdcdcc9961668dac5cd7736a", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/utility/otel/manager.go#1-258", + "gmt_create": "2025-10-18T22:04:37.2407478+08:00", + "gmt_modified": "2025-10-18T22:04:37.2407478+08:00" + }, + { + "id": 1681, + "source_id": "646de3e21aede32684ac250608e30f81", + "target_id": "3172bdd0bdcdcc9961668dac5cd7736a", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-258", + "gmt_create": "2025-10-18T22:04:37.2486526+08:00", + "gmt_modified": "2025-10-18T22:04:37.2486526+08:00" + }, + { + "id": 1682, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "c778028d86a2a65f31627126a2575c0c", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/main.go#1-50", + "gmt_create": "2025-10-18T22:04:37.2579824+08:00", + "gmt_modified": "2025-10-18T22:04:37.2579824+08:00" + }, + { + "id": 1683, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "f43353da0dd842671b2ecd75845577a0", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/utility/otel/utils.go#22-33", + "gmt_create": "2025-10-18T22:04:37.2671683+08:00", + "gmt_modified": "2025-10-18T22:04:37.2671683+08:00" + }, + { + "id": 1684, + "source_id": "1455afd43a1181b4924167eee7f2bf61", + "target_id": "f43353da0dd842671b2ecd75845577a0", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 22-33", + "gmt_create": "2025-10-18T22:04:37.2750869+08:00", + "gmt_modified": "2025-10-18T22:04:37.2750869+08:00" + }, + { + "id": 1685, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "878ca019cafcda589777cca1b9d046d5", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/utility/otel/manager.go#35-86", + "gmt_create": "2025-10-18T22:04:37.2836195+08:00", + "gmt_modified": "2025-10-18T22:04:37.2836195+08:00" + }, + { + "id": 1686, + "source_id": "646de3e21aede32684ac250608e30f81", + "target_id": "878ca019cafcda589777cca1b9d046d5", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 35-86", + "gmt_create": "2025-10-18T22:04:37.291487+08:00", + "gmt_modified": "2025-10-18T22:04:37.291487+08:00" + }, + { + "id": 1687, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "7f9267cfe8229dcd33f476ce31fd1bfa", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/utility/otel/utils.go#1-50", + "gmt_create": "2025-10-18T22:04:37.3004994+08:00", + "gmt_modified": "2025-10-18T22:04:37.3004994+08:00" + }, + { + "id": 1688, + "source_id": "1455afd43a1181b4924167eee7f2bf61", + "target_id": "7f9267cfe8229dcd33f476ce31fd1bfa", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-50", + "gmt_create": "2025-10-18T22:04:37.3085962+08:00", + "gmt_modified": "2025-10-18T22:04:37.3085962+08:00" + }, + { + "id": 1689, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "d80df587153dec12950eadafbd55b449", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/resource/casbin/rbac_model.conf#1-14", + "gmt_create": "2025-10-18T22:04:37.3166684+08:00", + "gmt_modified": "2025-10-18T22:04:37.3166684+08:00" + }, + { + "id": 1690, + "source_id": "4aab766e7ad6f5e8c17384b0d5361728", + "target_id": "d80df587153dec12950eadafbd55b449", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-14", + "gmt_create": "2025-10-18T22:04:37.3247803+08:00", + "gmt_modified": "2025-10-18T22:04:37.3247803+08:00" + }, + { + "id": 1691, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "f25e656cbd55294916b70a73a1c4e583", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/utility/otel/config.go#40-52", + "gmt_create": "2025-10-18T22:04:37.3337921+08:00", + "gmt_modified": "2025-10-18T22:04:37.3337921+08:00" + }, + { + "id": 1692, + "source_id": "debc2930279b67133bdabc1b8627fa74", + "target_id": "f25e656cbd55294916b70a73a1c4e583", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 40-52", + "gmt_create": "2025-10-18T22:04:37.3418128+08:00", + "gmt_modified": "2025-10-18T22:04:37.3418128+08:00" + }, + { + "id": 1693, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "74c031b18c09b203210b77a20abc9d53", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/utility/otel/manager.go#50-55", + "gmt_create": "2025-10-18T22:04:37.3498558+08:00", + "gmt_modified": "2025-10-18T22:04:37.3498558+08:00" + }, + { + "id": 1694, + "source_id": "646de3e21aede32684ac250608e30f81", + "target_id": "74c031b18c09b203210b77a20abc9d53", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 50-55", + "gmt_create": "2025-10-18T22:04:37.3573379+08:00", + "gmt_modified": "2025-10-18T22:04:37.3573379+08:00" + }, + { + "id": 1695, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "3ae8a564e67df9aaecee08d5880927e3", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/logic/jd_cookie/order.go#500-550", + "gmt_create": "2025-10-18T22:04:37.3679375+08:00", + "gmt_modified": "2025-10-18T22:04:37.3679375+08:00" + }, + { + "id": 1696, + "source_id": "348a584cbaee62585af0b8f576760382", + "target_id": "3ae8a564e67df9aaecee08d5880927e3", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 500-550", + "gmt_create": "2025-10-18T22:04:37.3751664+08:00", + "gmt_modified": "2025-10-18T22:04:37.3751664+08:00" + }, + { + "id": 1697, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "14a77dff2e965ae92bd92a79f7c51ea1", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/consts/jd_cookie.go", + "gmt_create": "2025-10-18T22:04:37.3837322+08:00", + "gmt_modified": "2025-10-18T22:04:37.3837322+08:00" + }, + { + "id": 1698, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "a4121ec796fe7df03e581a951109bf2c", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/consts/jd_cookie.go#150-160", + "gmt_create": "2025-10-18T22:04:37.3917675+08:00", + "gmt_modified": "2025-10-18T22:04:37.3917675+08:00" + }, + { + "id": 1699, + "source_id": "14a77dff2e965ae92bd92a79f7c51ea1", + "target_id": "a4121ec796fe7df03e581a951109bf2c", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 150-160", + "gmt_create": "2025-10-18T22:04:37.3996625+08:00", + "gmt_modified": "2025-10-18T22:04:37.3996625+08:00" + }, + { + "id": 1700, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "6f2b7aa144efdea96e65be3ab8ac7fa2cdbc2225", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 6f2b7aa144efdea96e65be3ab8ac7fa2cdbc2225", + "gmt_create": "2025-10-18T22:04:37.4137574+08:00", + "gmt_modified": "2025-10-18T22:04:37.4137574+08:00" + }, + { + "id": 1701, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "fe3dcd33e3ae6611c76e350efc9232c0e71ddecf", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: fe3dcd33e3ae6611c76e350efc9232c0e71ddecf", + "gmt_create": "2025-10-18T22:04:37.4287933+08:00", + "gmt_modified": "2025-10-18T22:04:37.4287933+08:00" + }, + { + "id": 1702, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "76ab51c20a1b2b44037ea4706db6cd49a6be8f3b", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 76ab51c20a1b2b44037ea4706db6cd49a6be8f3b", + "gmt_create": "2025-10-18T22:04:37.4436286+08:00", + "gmt_modified": "2025-10-18T22:04:37.4436286+08:00" + }, + { + "id": 1703, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "f3b5ab94ad13f5d0cc3bbaccd7fb568c17eef2fb", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: f3b5ab94ad13f5d0cc3bbaccd7fb568c17eef2fb", + "gmt_create": "2025-10-18T22:04:37.4577683+08:00", + "gmt_modified": "2025-10-18T22:04:37.4577683+08:00" + }, + { + "id": 1704, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "0f583231f0ca6eb6bdc0cd3104f97d42", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/main.go", + "gmt_create": "2025-10-18T22:05:30.10335+08:00", + "gmt_modified": "2025-10-18T22:05:30.10335+08:00" + }, + { + "id": 1705, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "b6012388f040de469b7ec2244cf9d3bf", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/logic.go", + "gmt_create": "2025-10-18T22:05:30.1110121+08:00", + "gmt_modified": "2025-10-18T22:05:30.1110121+08:00" + }, + { + "id": 1706, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "40a0c2b01b15ceae41bdd421874c199e", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/service/sys_user.go", + "gmt_create": "2025-10-18T22:05:30.1188943+08:00", + "gmt_modified": "2025-10-18T22:05:30.1188943+08:00" + }, + { + "id": 1707, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "9592a0fc953a2595f709cd0c67c70a06", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/dao/v_1_sys_user.go", + "gmt_create": "2025-10-18T22:05:30.1267858+08:00", + "gmt_modified": "2025-10-18T22:05:30.1267858+08:00" + }, + { + "id": 1708, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "56c658d00971d4697ee90a4fd6912832", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/model/sys_user.go", + "gmt_create": "2025-10-18T22:05:30.134642+08:00", + "gmt_modified": "2025-10-18T22:05:30.134642+08:00" + }, + { + "id": 1709, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "219fe92fb80e3fa8bd7e4080d15e457a", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/sys_user/sys_user.go", + "gmt_create": "2025-10-18T22:05:30.1428959+08:00", + "gmt_modified": "2025-10-18T22:05:30.1428959+08:00" + }, + { + "id": 1710, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "0f0ab37127003f1af1d234709f1d3198", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/card_apple_order/order.go", + "gmt_create": "2025-10-18T22:05:30.1507253+08:00", + "gmt_modified": "2025-10-18T22:05:30.1507253+08:00" + }, + { + "id": 1711, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "0de0fc73ea1c0c78e2d71d04a0a94411", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/card_redeem_order/order.go", + "gmt_create": "2025-10-18T22:05:30.1586224+08:00", + "gmt_modified": "2025-10-18T22:05:30.1586224+08:00" + }, + { + "id": 1712, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "1ffd22848808f089677c2ddc482a954a", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/merchant_order/order.go", + "gmt_create": "2025-10-18T22:05:30.1668424+08:00", + "gmt_modified": "2025-10-18T22:05:30.1668424+08:00" + }, + { + "id": 1713, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "e5ef83e4ccff2f66a4eb56f3b2096bf0", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/restriction/restriction.go", + "gmt_create": "2025-10-18T22:05:30.1747351+08:00", + "gmt_modified": "2025-10-18T22:05:30.1747351+08:00" + }, + { + "id": 1714, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "d341b69869e9863f8bd7ed7614572d1c", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/card_t_mall_order/order.go", + "gmt_create": "2025-10-18T22:05:30.1868283+08:00", + "gmt_modified": "2025-10-18T22:05:30.1868283+08:00" + }, + { + "id": 1715, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "fb94b419b6c25749805b970980a051ae", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/service/card_apple_order.go", + "gmt_create": "2025-10-18T22:05:30.1953481+08:00", + "gmt_modified": "2025-10-18T22:05:30.1953481+08:00" + }, + { + "id": 1716, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "fa2076592876f7f4387e9050085ba9b5", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/service/card_redeem_order.go", + "gmt_create": "2025-10-18T22:05:30.2066128+08:00", + "gmt_modified": "2025-10-18T22:05:30.2066128+08:00" + }, + { + "id": 1717, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "ce93596b3c315be9ad061ed78b9b4a16", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/service/merchant_order.go", + "gmt_create": "2025-10-18T22:05:30.2166209+08:00", + "gmt_modified": "2025-10-18T22:05:30.2166209+08:00" + }, + { + "id": 1718, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "1ede9ed0ed4e2fea117f1f0ee3228874", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/service/restriction.go", + "gmt_create": "2025-10-18T22:05:30.2250338+08:00", + "gmt_modified": "2025-10-18T22:05:30.2250338+08:00" + }, + { + "id": 1719, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "c22d8bb47932b7530c368ff1de72e79a", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/service/card_t_mall_order.go", + "gmt_create": "2025-10-18T22:05:30.2347422+08:00", + "gmt_modified": "2025-10-18T22:05:30.2347422+08:00" + }, + { + "id": 1720, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "79ad87595e6f3cccf7d1df8561c8667d", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/manifest/config/config.yaml", + "gmt_create": "2025-10-18T22:05:30.2458515+08:00", + "gmt_modified": "2025-10-18T22:05:30.2458515+08:00" + }, + { + "id": 1721, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "348a584cbaee62585af0b8f576760382", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/jd_cookie/order.go", + "gmt_create": "2025-10-18T22:05:30.2544227+08:00", + "gmt_modified": "2025-10-18T22:05:30.2544227+08:00" + }, + { + "id": 1722, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "9fbcfcc5b312f6ea4b7a2f526f4fc0c4", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/service/jd_cookie.go", + "gmt_create": "2025-10-18T22:05:30.2665522+08:00", + "gmt_modified": "2025-10-18T22:05:30.2665522+08:00" + }, + { + "id": 1723, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "0f4b79c169b55a4a353922e49057ab34", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/jd_cookie/order_create.go", + "gmt_create": "2025-10-18T22:05:30.2749339+08:00", + "gmt_modified": "2025-10-18T22:05:30.2749339+08:00" + }, + { + "id": 1724, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "8297c82d56a4566b4e439161bc2454c7", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/jd_cookie/order_utils.go", + "gmt_create": "2025-10-18T22:05:30.2839026+08:00", + "gmt_modified": "2025-10-18T22:05:30.2839026+08:00" + }, + { + "id": 1725, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "6f426da779ea01b260285f35941ee350", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: e:\\projects\\kami\\kami_backend/internal/logic/jd_cookie/order_jd.go", + "gmt_create": "2025-10-18T22:05:30.2917693+08:00", + "gmt_modified": "2025-10-18T22:05:30.2917693+08:00" + }, + { + "id": 1726, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "c778028d86a2a65f31627126a2575c0c", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/main.go#1-50", + "gmt_create": "2025-10-18T22:05:30.2998415+08:00", + "gmt_modified": "2025-10-18T22:05:30.2998415+08:00" + }, + { + "id": 1727, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "4bad57683321787594727c10ee94c33b", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/logic/logic.go#1-37", + "gmt_create": "2025-10-18T22:05:30.3082755+08:00", + "gmt_modified": "2025-10-18T22:05:30.3082755+08:00" + }, + { + "id": 1728, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "aee3a2f386eb5a98ddf5ca7cccff0929", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/service/sys_user.go#1-102", + "gmt_create": "2025-10-18T22:05:30.3163085+08:00", + "gmt_modified": "2025-10-18T22:05:30.3163085+08:00" + }, + { + "id": 1729, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "6fe67e9d805a0a633f90f268ef2ee2f4", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/service/card_apple_order.go#1-127", + "gmt_create": "2025-10-18T22:05:30.324396+08:00", + "gmt_modified": "2025-10-18T22:05:30.324396+08:00" + }, + { + "id": 1730, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "32bf22e91c31d6f141bf6b7ef0de7b96", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/service/card_redeem_order.go#1-80", + "gmt_create": "2025-10-18T22:05:30.3322241+08:00", + "gmt_modified": "2025-10-18T22:05:30.3322241+08:00" + }, + { + "id": 1731, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "7face210770aa4ec553604c6d0931175", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/service/merchant_order.go#1-44", + "gmt_create": "2025-10-18T22:05:30.3403148+08:00", + "gmt_modified": "2025-10-18T22:05:30.3403148+08:00" + }, + { + "id": 1732, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "842d4a8a22707111e666ac492238b5ef", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/service/restriction.go#1-67", + "gmt_create": "2025-10-18T22:05:30.3482036+08:00", + "gmt_modified": "2025-10-18T22:05:30.3482036+08:00" + }, + { + "id": 1733, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "c701edfecf07f4017d7d956624072fde", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/logic/sys_user/sys_user.go#1-767", + "gmt_create": "2025-10-18T22:05:30.3576998+08:00", + "gmt_modified": "2025-10-18T22:05:30.3576998+08:00" + }, + { + "id": 1734, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "4d71ea0833e7a0a8266b6f2e8b05e459", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/dao/v_1_sys_user.go#1-28", + "gmt_create": "2025-10-18T22:05:30.3640263+08:00", + "gmt_modified": "2025-10-18T22:05:30.3640263+08:00" + }, + { + "id": 1735, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "0d5907fd86f99e310c6663b7e705ab7b", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/model/sys_user.go#1-92", + "gmt_create": "2025-10-18T22:05:30.3771473+08:00", + "gmt_modified": "2025-10-18T22:05:30.3771473+08:00" + }, + { + "id": 1736, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "488c440eb23bb1208ec810e0d3738028", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/logic/card_apple_order/order.go#1-343", + "gmt_create": "2025-10-18T22:05:30.3897765+08:00", + "gmt_modified": "2025-10-18T22:05:30.3897765+08:00" + }, + { + "id": 1737, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "badc687590596030499ebead18afabfc", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/logic/merchant_order/order.go#1-48", + "gmt_create": "2025-10-18T22:05:30.3987809+08:00", + "gmt_modified": "2025-10-18T22:05:30.3987809+08:00" + }, + { + "id": 1738, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "cf2c6c7ec0ed0b542c5ad37d11c2ea57", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/internal/logic/restriction/restriction.go#1-174", + "gmt_create": "2025-10-18T22:05:30.407689+08:00", + "gmt_modified": "2025-10-18T22:05:30.407689+08:00" + }, + { + "id": 1739, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "f67970ad2e09c5f5a6048ff8ef3cd50c", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: e:\\projects\\kami\\kami_backend/manifest/config/config.yaml#1-10", + "gmt_create": "2025-10-18T22:05:30.4219416+08:00", + "gmt_modified": "2025-10-18T22:05:30.4219416+08:00" + }, + { + "id": 1740, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "8bc2d51c8ba46582286270b3dd85e166f2562e51", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 8bc2d51c8ba46582286270b3dd85e166f2562e51", + "gmt_create": "2025-10-18T22:05:30.4417599+08:00", + "gmt_modified": "2025-10-18T22:05:30.4417599+08:00" + }, + { + "id": 1741, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "d4205dbef5fa248356ab84f4f34e92d41043bbc0", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: d4205dbef5fa248356ab84f4f34e92d41043bbc0", + "gmt_create": "2025-10-18T22:05:30.4629662+08:00", + "gmt_modified": "2025-10-18T22:05:30.4629662+08:00" + }, + { + "id": 1742, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "bc2d58753b8fe0b4f7150657bf40cfe756ce48de", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: bc2d58753b8fe0b4f7150657bf40cfe756ce48de", + "gmt_create": "2025-10-18T22:05:30.4787387+08:00", + "gmt_modified": "2025-10-18T22:05:30.4787387+08:00" + }, + { + "id": 1743, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "924061810e00a9e9d86f6e24e1baedbc27407d07", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 924061810e00a9e9d86f6e24e1baedbc27407d07", + "gmt_create": "2025-10-18T22:05:30.4954902+08:00", + "gmt_modified": "2025-10-18T22:05:30.4954902+08:00" + }, + { + "id": 1744, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "d1b7f907caa0c3c59628241250901cb7239b25a8", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: d1b7f907caa0c3c59628241250901cb7239b25a8", + "gmt_create": "2025-10-18T22:05:30.5109178+08:00", + "gmt_modified": "2025-10-18T22:05:30.5109178+08:00" + }, + { + "id": 1745, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "81494a0669c2c7e2fc491bbeea59dc78597e1efa", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 81494a0669c2c7e2fc491bbeea59dc78597e1efa", + "gmt_create": "2025-10-18T22:05:30.5170678+08:00", + "gmt_modified": "2025-10-18T22:05:30.5170678+08:00" + }, + { + "id": 1746, + "source_id": "6d5ebff3-909f-4c98-92c8-8c0d636415bc", + "target_id": "a3b7521789787cc4db7608d02c5e95f4", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/middleware/auth.go", + "gmt_create": "2025-10-18T22:05:40.4834168+08:00", + "gmt_modified": "2025-10-18T22:05:40.4834168+08:00" + }, + { + "id": 1747, + "source_id": "6d5ebff3-909f-4c98-92c8-8c0d636415bc", + "target_id": "eb8338fb24a00daa3a4838bbc0ab1393", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/middleware/error_handler.go", + "gmt_create": "2025-10-18T22:05:40.4920655+08:00", + "gmt_modified": "2025-10-18T22:05:40.4920655+08:00" + }, + { + "id": 1748, + "source_id": "6d5ebff3-909f-4c98-92c8-8c0d636415bc", + "target_id": "8193684ba57063beec7b646d4b1b54e0", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/service/sys_auth.go", + "gmt_create": "2025-10-18T22:05:40.5052201+08:00", + "gmt_modified": "2025-10-18T22:05:40.5052201+08:00" + }, + { + "id": 1749, + "source_id": "6d5ebff3-909f-4c98-92c8-8c0d636415bc", + "target_id": "b02b1b196de6c12a1b511f4fe368aefa", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/sys_auth/sysAuth.go", + "gmt_create": "2025-10-18T22:05:40.5163111+08:00", + "gmt_modified": "2025-10-18T22:05:40.5163111+08:00" + }, + { + "id": 1750, + "source_id": "6d5ebff3-909f-4c98-92c8-8c0d636415bc", + "target_id": "fb7ae04d8afd7c7f540758059df7b9fc", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/jd_cookie/jd_cookie_v1_create_account.go", + "gmt_create": "2025-10-18T22:05:40.5259111+08:00", + "gmt_modified": "2025-10-18T22:05:40.5259111+08:00" + }, + { + "id": 1751, + "source_id": "6d5ebff3-909f-4c98-92c8-8c0d636415bc", + "target_id": "d212b7838198d532442a43a2720f228c", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/jd_cookie/jd_cookie_v1_create_order.go", + "gmt_create": "2025-10-18T22:05:40.5365535+08:00", + "gmt_modified": "2025-10-18T22:05:40.5365535+08:00" + }, + { + "id": 1752, + "source_id": "6d5ebff3-909f-4c98-92c8-8c0d636415bc", + "target_id": "ecaa7eef95a04c10e41b14218959f6bf", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/jd_cookie/jd_cookie_v1_batch_check.go", + "gmt_create": "2025-10-18T22:05:40.5487102+08:00", + "gmt_modified": "2025-10-18T22:05:40.5487102+08:00" + }, + { + "id": 1753, + "source_id": "6d5ebff3-909f-4c98-92c8-8c0d636415bc", + "target_id": "c23df18489eaaeec8a340de242b77b44", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/token/user_token.go", + "gmt_create": "2025-10-18T22:05:40.55637+08:00", + "gmt_modified": "2025-10-18T22:05:40.55637+08:00" + }, + { + "id": 1754, + "source_id": "6d5ebff3-909f-4c98-92c8-8c0d636415bc", + "target_id": "91b0ce4e15bd2ec12a8c8f87efd69254", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/config/config.go", + "gmt_create": "2025-10-18T22:05:40.5674215+08:00", + "gmt_modified": "2025-10-18T22:05:40.5674215+08:00" + }, + { + "id": 1755, + "source_id": "6d5ebff3-909f-4c98-92c8-8c0d636415bc", + "target_id": "a2cc9e42068f81d57e6658912bec50c7", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/errHandler/code.go", + "gmt_create": "2025-10-18T22:05:40.5799206+08:00", + "gmt_modified": "2025-10-18T22:05:40.5799206+08:00" + }, + { + "id": 1756, + "source_id": "6d5ebff3-909f-4c98-92c8-8c0d636415bc", + "target_id": "d018b60f9d48763366246e537520686c", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/middleware/auth.go#22-51", + "gmt_create": "2025-10-18T22:05:40.5907363+08:00", + "gmt_modified": "2025-10-18T22:05:40.5907363+08:00" + }, + { + "id": 1757, + "source_id": "6d5ebff3-909f-4c98-92c8-8c0d636415bc", + "target_id": "f451dcc5212a1a2b4e0ce80b06f8e185", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/middleware/error_handler.go#8-27", + "gmt_create": "2025-10-18T22:05:40.6014344+08:00", + "gmt_modified": "2025-10-18T22:05:40.6014344+08:00" + }, + { + "id": 1758, + "source_id": "6d5ebff3-909f-4c98-92c8-8c0d636415bc", + "target_id": "28", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 28", + "gmt_create": "2025-10-18T22:05:40.6199167+08:00", + "gmt_modified": "2025-10-18T22:05:40.6199167+08:00" + }, + { + "id": 1759, + "source_id": "6d5ebff3-909f-4c98-92c8-8c0d636415bc", + "target_id": "30", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 30", + "gmt_create": "2025-10-18T22:05:40.6360605+08:00", + "gmt_modified": "2025-10-18T22:05:40.6360605+08:00" + }, + { + "id": 1760, + "source_id": "6d5ebff3-909f-4c98-92c8-8c0d636415bc", + "target_id": "31", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 31", + "gmt_create": "2025-10-18T22:05:40.6520781+08:00", + "gmt_modified": "2025-10-18T22:05:40.6520781+08:00" + }, + { + "id": 1761, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "6949b603968e204a80d7e6e337496f12", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/cmd/cmd.go", + "gmt_create": "2025-10-18T22:05:41.2187964+08:00", + "gmt_modified": "2025-10-18T22:05:41.2187964+08:00" + }, + { + "id": 1762, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "cd47a7c1fd3185ff279cca4dd4a1cd9d", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: api/monitor/monitor.go", + "gmt_create": "2025-10-18T22:05:41.2266729+08:00", + "gmt_modified": "2025-10-18T22:05:41.2266729+08:00" + }, + { + "id": 1763, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "2a00f83021031103c438a59751eee183", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: api/monitor/v1/heathcheck.go", + "gmt_create": "2025-10-18T22:05:41.2346456+08:00", + "gmt_modified": "2025-10-18T22:05:41.2346456+08:00" + }, + { + "id": 1764, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "d9ed9131ddb364556f43b561d041ddd5", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/monitor/monitor.go", + "gmt_create": "2025-10-18T22:05:41.2425669+08:00", + "gmt_modified": "2025-10-18T22:05:41.2425669+08:00" + }, + { + "id": 1765, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "eddf871859d423ace01da9a74db6db86", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/monitor/monitor_new.go", + "gmt_create": "2025-10-18T22:05:41.2505483+08:00", + "gmt_modified": "2025-10-18T22:05:41.2505483+08:00" + }, + { + "id": 1766, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "50111ae80e6ac600d65fbd7b34df3d03", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/monitor/monitor_v1_health_check.go", + "gmt_create": "2025-10-18T22:05:41.2574741+08:00", + "gmt_modified": "2025-10-18T22:05:41.2574741+08:00" + }, + { + "id": 1767, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "5824f93b650d7a0b6fb8c1a016077461", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/otel/config.go", + "gmt_create": "2025-10-18T22:05:41.2655406+08:00", + "gmt_modified": "2025-10-18T22:05:41.2655406+08:00" + }, + { + "id": 1768, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "11df2c532cb96a0d8e041af4ea176204", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/otel/manager.go", + "gmt_create": "2025-10-18T22:05:41.2740603+08:00", + "gmt_modified": "2025-10-18T22:05:41.2740603+08:00" + }, + { + "id": 1769, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "b0dcfa2b0067be5ec2e3f00ad722ed85", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/otel/handler.go", + "gmt_create": "2025-10-18T22:05:41.282615+08:00", + "gmt_modified": "2025-10-18T22:05:41.282615+08:00" + }, + { + "id": 1770, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "70f39d04b38fd3c3c76da74b7b0ed20b", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/otel/utils.go", + "gmt_create": "2025-10-18T22:05:41.2908425+08:00", + "gmt_modified": "2025-10-18T22:05:41.2908425+08:00" + }, + { + "id": 1771, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "b896e4b9529b9c35c2662cf25560c5cd", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/monitor/monitor.go", + "gmt_create": "2025-10-18T22:05:41.2987425+08:00", + "gmt_modified": "2025-10-18T22:05:41.2987425+08:00" + }, + { + "id": 1772, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "95d76ee51d8eba69c520952975f3836c", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/jd_cookie/order_create.go", + "gmt_create": "2025-10-18T22:05:41.3066425+08:00", + "gmt_modified": "2025-10-18T22:05:41.3066425+08:00" + }, + { + "id": 1773, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "b9997c2d25a8edb37042b9aed4b87d4a", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/jd_cookie/order_utils.go", + "gmt_create": "2025-10-18T22:05:41.3145982+08:00", + "gmt_modified": "2025-10-18T22:05:41.3145982+08:00" + }, + { + "id": 1774, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "f72071e80cb61857e0d4b22414fa6ea4", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: utility/integration/originalJd/client.go", + "gmt_create": "2025-10-18T22:05:41.3230749+08:00", + "gmt_modified": "2025-10-18T22:05:41.3230749+08:00" + }, + { + "id": 1775, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "ed31ce19cca1ebd07457e557c8cb7147", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/jd_cookie/order_jd.go", + "gmt_create": "2025-10-18T22:05:41.3320454+08:00", + "gmt_modified": "2025-10-18T22:05:41.3320454+08:00" + }, + { + "id": 1776, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "314337c7901e5f608be04c99dbf9dcda", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: utility/otel/config.go#1-67", + "gmt_create": "2025-10-18T22:05:41.3404118+08:00", + "gmt_modified": "2025-10-18T22:05:41.3404118+08:00" + }, + { + "id": 1777, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "02b920b240a8a0b5cc76dbdd011bfade", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: utility/otel/manager.go#1-257", + "gmt_create": "2025-10-18T22:05:41.3482616+08:00", + "gmt_modified": "2025-10-18T22:05:41.3482616+08:00" + }, + { + "id": 1778, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "a1f8285bc58503a0979846e628322395", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: utility/otel/utils.go#1-230", + "gmt_create": "2025-10-18T22:05:41.3566857+08:00", + "gmt_modified": "2025-10-18T22:05:41.3566857+08:00" + }, + { + "id": 1779, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "62d876856f82a4ea1e63b343aa650ddc", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: utility/otel/handler.go#1-164", + "gmt_create": "2025-10-18T22:05:41.3688259+08:00", + "gmt_modified": "2025-10-18T22:05:41.3688259+08:00" + }, + { + "id": 1780, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "0450d2bd60154c9defe18e2dd0db3944", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: api/monitor/monitor.go#1-15", + "gmt_create": "2025-10-18T22:05:41.3822901+08:00", + "gmt_modified": "2025-10-18T22:05:41.3822901+08:00" + }, + { + "id": 1781, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "776a898a7e3af295ac0d3f657e027a43", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: api/monitor/v1/heathcheck.go#1-13", + "gmt_create": "2025-10-18T22:05:41.3904999+08:00", + "gmt_modified": "2025-10-18T22:05:41.3904999+08:00" + }, + { + "id": 1782, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "f4357af3bdee1af700d66352486740ac", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/controller/monitor/monitor_new.go#1-15", + "gmt_create": "2025-10-18T22:05:41.3983884+08:00", + "gmt_modified": "2025-10-18T22:05:41.3983884+08:00" + }, + { + "id": 1783, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "1f3f6baf21697865c02621086d9ebce9", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/controller/monitor/monitor_v1_health_check.go#1-13", + "gmt_create": "2025-10-18T22:05:41.4063583+08:00", + "gmt_modified": "2025-10-18T22:05:41.4063583+08:00" + }, + { + "id": 1784, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "852c344b512f86e468cc155a007239c3", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/cmd/cmd.go#1-92", + "gmt_create": "2025-10-18T22:05:41.4163497+08:00", + "gmt_modified": "2025-10-18T22:05:41.4163497+08:00" + }, + { + "id": 1785, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "7f41c190fab616ed408fb3470b01e156", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: utility/monitor/monitor.go#1-14", + "gmt_create": "2025-10-18T22:05:41.4248119+08:00", + "gmt_modified": "2025-10-18T22:05:41.4248119+08:00" + }, + { + "id": 1786, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "a2a994df6eb92d304845f8f2711506072549cadc", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: a2a994df6eb92d304845f8f2711506072549cadc", + "gmt_create": "2025-10-18T22:05:41.4484971+08:00", + "gmt_modified": "2025-10-18T22:05:41.4484971+08:00" + }, + { + "id": 1787, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "270af97a7ad47f343323425419e15a4b40b5b2d6", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 270af97a7ad47f343323425419e15a4b40b5b2d6", + "gmt_create": "2025-10-18T22:05:41.4645492+08:00", + "gmt_modified": "2025-10-18T22:05:41.4645492+08:00" + }, + { + "id": 1788, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "26", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 26", + "gmt_create": "2025-10-18T22:05:41.4806592+08:00", + "gmt_modified": "2025-10-18T22:05:41.4806592+08:00" + }, + { + "id": 1789, + "source_id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "target_id": "81494a0669c2c7e2fc491bbeea59dc78597e1efa", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 81494a0669c2c7e2fc491bbeea59dc78597e1efa", + "gmt_create": "2025-10-18T22:05:41.4891417+08:00", + "gmt_modified": "2025-10-18T22:05:41.4891417+08:00" + }, + { + "id": 1790, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "94aa282e4a22f85674f3004894e95b12", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/model/entity/v_1_account_info.go", + "gmt_create": "2025-10-18T22:08:05.3128972+08:00", + "gmt_modified": "2025-10-18T22:08:05.3128972+08:00" + }, + { + "id": 1791, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "3695f0446f58c552ec036968b720c585", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/model/entity/v_1_order_info.go", + "gmt_create": "2025-10-18T22:08:05.3211319+08:00", + "gmt_modified": "2025-10-18T22:08:05.3211319+08:00" + }, + { + "id": 1792, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "297412eae542d50411094ce29ff6e9b3", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/model/entity/v_1_card_apple_recharge_info.go", + "gmt_create": "2025-10-18T22:08:05.330082+08:00", + "gmt_modified": "2025-10-18T22:08:05.330082+08:00" + }, + { + "id": 1793, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "4f2117fd41858c8f1f05e73af0c4d045", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/model/entity/v_1_jd_cookie_account.go", + "gmt_create": "2025-10-18T22:08:05.3386957+08:00", + "gmt_modified": "2025-10-18T22:08:05.3386957+08:00" + }, + { + "id": 1794, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "10b4b7e7bda705f2473233626534db93", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/model/entity/v_1_jd_cookie_jd_order.go", + "gmt_create": "2025-10-18T22:08:05.347261+08:00", + "gmt_modified": "2025-10-18T22:08:05.347261+08:00" + }, + { + "id": 1795, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "251c480af7207ec9635af57c9bc50f04", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/model/entity/v_1_jd_cookie_order.go", + "gmt_create": "2025-10-18T22:08:05.3558037+08:00", + "gmt_modified": "2025-10-18T22:08:05.3558037+08:00" + }, + { + "id": 1796, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "24b833965d28e1470eacd7df237acdb4", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/dao/v_1_account_info.go", + "gmt_create": "2025-10-18T22:08:05.3632278+08:00", + "gmt_modified": "2025-10-18T22:08:05.3632278+08:00" + }, + { + "id": 1797, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "035d413d594bd8cd49b625ad3200b11c", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/dao/v_1_order_info.go", + "gmt_create": "2025-10-18T22:08:05.3712038+08:00", + "gmt_modified": "2025-10-18T22:08:05.3712038+08:00" + }, + { + "id": 1798, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "9ea71fe3dd3d7290fd60892723bb7ee8", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/dao/v_1_card_apple_recharge_info.go", + "gmt_create": "2025-10-18T22:08:05.3801607+08:00", + "gmt_modified": "2025-10-18T22:08:05.3801607+08:00" + }, + { + "id": 1799, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "8d29c379353db1d02b0dbd096eb8a47d", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/dao/v_1_jd_cookie_account.go", + "gmt_create": "2025-10-18T22:08:05.3889046+08:00", + "gmt_modified": "2025-10-18T22:08:05.3889046+08:00" + }, + { + "id": 1800, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "319d5ee6b3c76bed0110a972df7470d8", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/dao/v_1_jd_cookie_jd_order.go", + "gmt_create": "2025-10-18T22:08:05.3964963+08:00", + "gmt_modified": "2025-10-18T22:08:05.3964963+08:00" + }, + { + "id": 1801, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "81cfcd51a2f0449da14f3d4052765c08", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/dao/v_1_jd_cookie_order.go", + "gmt_create": "2025-10-18T22:08:05.404324+08:00", + "gmt_modified": "2025-10-18T22:08:05.404324+08:00" + }, + { + "id": 1802, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "48b3a3cd9e9db7485c82648a8f9c69dc", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/controller/merchant/merchant_v1_merchant_config_add.go", + "gmt_create": "2025-10-18T22:08:05.414489+08:00", + "gmt_modified": "2025-10-18T22:08:05.414489+08:00" + }, + { + "id": 1803, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "9909bbb8255b96a053563e9f3afd6e52", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/account/account.go", + "gmt_create": "2025-10-18T22:08:05.4224121+08:00", + "gmt_modified": "2025-10-18T22:08:05.4224121+08:00" + }, + { + "id": 1804, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "c80482f4470a8e3dd050e61ff9bd3738", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/merchant_order/order.go", + "gmt_create": "2025-10-18T22:08:05.4296074+08:00", + "gmt_modified": "2025-10-18T22:08:05.4296074+08:00" + }, + { + "id": 1805, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "92c36754f0dbd99fed9aa1523374158d", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/card_apple_order/order.go", + "gmt_create": "2025-10-18T22:08:05.4386432+08:00", + "gmt_modified": "2025-10-18T22:08:05.4386432+08:00" + }, + { + "id": 1806, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "cbe32a6c2d1cadcc72019566cad819b6", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/card_apple_order/status.go", + "gmt_create": "2025-10-18T22:08:05.4463688+08:00", + "gmt_modified": "2025-10-18T22:08:05.4463688+08:00" + }, + { + "id": 1807, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "987fc36e572014bb0a7c02bc015c9fa2", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/card_apple_order/recharge_history.go", + "gmt_create": "2025-10-18T22:08:05.4526549+08:00", + "gmt_modified": "2025-10-18T22:08:05.4526549+08:00" + }, + { + "id": 1808, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "39c6a811a6208e20dc5b28becf3a2cbe", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/card_apple_order/steal_relation.go", + "gmt_create": "2025-10-18T22:08:05.4606764+08:00", + "gmt_modified": "2025-10-18T22:08:05.4606764+08:00" + }, + { + "id": 1809, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "fe83d023754ae2aedb7c68ac0f3dcf31", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/jd_cookie/account.go", + "gmt_create": "2025-10-18T22:08:05.4685721+08:00", + "gmt_modified": "2025-10-18T22:08:05.4685721+08:00" + }, + { + "id": 1810, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "edd8bea5c8f9373cd0b4de186914479e", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/jd_cookie/order.go", + "gmt_create": "2025-10-18T22:08:05.4765601+08:00", + "gmt_modified": "2025-10-18T22:08:05.4765601+08:00" + }, + { + "id": 1811, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "961047bec51802fc7855502acf4bbc07", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/logic/jd_cookie/rotation.go", + "gmt_create": "2025-10-18T22:08:05.4839672+08:00", + "gmt_modified": "2025-10-18T22:08:05.4839672+08:00" + }, + { + "id": 1812, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "9faa5f2db2ec0340fbf2ecfb0e5a7740", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/model/entity/v_1_account_info.go#12-25", + "gmt_create": "2025-10-18T22:08:05.4918253+08:00", + "gmt_modified": "2025-10-18T22:08:05.4918253+08:00" + }, + { + "id": 1813, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "1c004f6c7e82e215a8538bb563de1a80", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/model/entity/v_1_order_info.go#12-63", + "gmt_create": "2025-10-18T22:08:05.4997317+08:00", + "gmt_modified": "2025-10-18T22:08:05.4997317+08:00" + }, + { + "id": 1814, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "9311a5593c3cb84df188d914b5fcb57b", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/model/entity/v_1_card_apple_recharge_info.go#11-33", + "gmt_create": "2025-10-18T22:08:05.5076842+08:00", + "gmt_modified": "2025-10-18T22:08:05.5076842+08:00" + }, + { + "id": 1815, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "734fa931bccd869983dd85fd9b7ab371", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/model/entity/v_1_jd_cookie_account.go#12-28", + "gmt_create": "2025-10-18T22:08:05.5161255+08:00", + "gmt_modified": "2025-10-18T22:08:05.5161255+08:00" + }, + { + "id": 1816, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "6d306b24351264c7f10e496503d064f0", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/model/entity/v_1_jd_cookie_jd_order.go#12-33", + "gmt_create": "2025-10-18T22:08:05.5240797+08:00", + "gmt_modified": "2025-10-18T22:08:05.5240797+08:00" + }, + { + "id": 1817, + "source_id": "10b4b7e7bda705f2473233626534db93", + "target_id": "6d306b24351264c7f10e496503d064f0", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 12-33", + "gmt_create": "2025-10-18T22:08:05.5314838+08:00", + "gmt_modified": "2025-10-18T22:08:05.5314838+08:00" + }, + { + "id": 1818, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "447357bff1aece2f7004a592d1590f3c", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/model/entity/v_1_jd_cookie_order.go#12-25", + "gmt_create": "2025-10-18T22:08:05.5397096+08:00", + "gmt_modified": "2025-10-18T22:08:05.5397096+08:00" + }, + { + "id": 1819, + "source_id": "251c480af7207ec9635af57c9bc50f04", + "target_id": "447357bff1aece2f7004a592d1590f3c", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 12-25", + "gmt_create": "2025-10-18T22:08:05.5472739+08:00", + "gmt_modified": "2025-10-18T22:08:05.5472739+08:00" + }, + { + "id": 1820, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "dc285be35577dcc5b342eafd1a253628", + "source_type": "WIKI_ITEM", + "target_type": "SOURCE_FILE", + "relationship_type": "REFERENCED_BY", + "extra": "Wiki references source file: internal/model/do/v_1_jd_cookie_order.go", + "gmt_create": "2025-10-18T22:08:05.5635495+08:00", + "gmt_modified": "2025-10-18T22:08:05.5635495+08:00" + }, + { + "id": 1821, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "856abda221f83e850763d32c49eeb8f4", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/model/do/v_1_jd_cookie_order.go#12-26", + "gmt_create": "2025-10-18T22:08:05.5715036+08:00", + "gmt_modified": "2025-10-18T22:08:05.5715036+08:00" + }, + { + "id": 1822, + "source_id": "dc285be35577dcc5b342eafd1a253628", + "target_id": "856abda221f83e850763d32c49eeb8f4", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 12-26", + "gmt_create": "2025-10-18T22:08:05.5791334+08:00", + "gmt_modified": "2025-10-18T22:08:05.5791334+08:00" + }, + { + "id": 1823, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "33fd8e434adea0293ba416951c3b04c1", + "source_type": "WIKI_ITEM", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Wiki contains code snippet: internal/dao/v_1_jd_cookie_order.go#1-27", + "gmt_create": "2025-10-18T22:08:05.587973+08:00", + "gmt_modified": "2025-10-18T22:08:05.587973+08:00" + }, + { + "id": 1824, + "source_id": "81cfcd51a2f0449da14f3d4052765c08", + "target_id": "33fd8e434adea0293ba416951c3b04c1", + "source_type": "SOURCE_FILE", + "target_type": "CODE_SNIPPET", + "relationship_type": "CONTAINS", + "extra": "Source file contains code snippet: 1-27", + "gmt_create": "2025-10-18T22:08:05.5960913+08:00", + "gmt_modified": "2025-10-18T22:08:05.5960913+08:00" + }, + { + "id": 1825, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "e88855ef6b355e26a0332e37c8fbf35f06f1a6df", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: e88855ef6b355e26a0332e37c8fbf35f06f1a6df", + "gmt_create": "2025-10-18T22:08:05.6113034+08:00", + "gmt_modified": "2025-10-18T22:08:05.6113034+08:00" + }, + { + "id": 1826, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "924061810e00a9e9d86f6e24e1baedbc27407d07", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 924061810e00a9e9d86f6e24e1baedbc27407d07", + "gmt_create": "2025-10-18T22:08:05.6195146+08:00", + "gmt_modified": "2025-10-18T22:08:05.6195146+08:00" + }, + { + "id": 1827, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "192aa438cae812c9ca95a5c06a15ca0066237458", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 192aa438cae812c9ca95a5c06a15ca0066237458", + "gmt_create": "2025-10-18T22:08:05.6333558+08:00", + "gmt_modified": "2025-10-18T22:08:05.6333558+08:00" + }, + { + "id": 1828, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "8748578e0b514c8688d4696b1d6586fca63e8fe7", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 8748578e0b514c8688d4696b1d6586fca63e8fe7", + "gmt_create": "2025-10-18T22:08:05.6461845+08:00", + "gmt_modified": "2025-10-18T22:08:05.6461845+08:00" + }, + { + "id": 1829, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "a2a994df6eb92d304845f8f2711506072549cadc", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: a2a994df6eb92d304845f8f2711506072549cadc", + "gmt_create": "2025-10-18T22:09:05.1176366+08:00", + "gmt_modified": "2025-10-18T22:09:05.1176366+08:00" + }, + { + "id": 1830, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "e88855ef6b355e26a0332e37c8fbf35f06f1a6df", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: e88855ef6b355e26a0332e37c8fbf35f06f1a6df", + "gmt_create": "2025-10-18T22:09:05.1264405+08:00", + "gmt_modified": "2025-10-18T22:09:05.1264405+08:00" + }, + { + "id": 1831, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "c1e3051c8ba46582286270b3dd85e166f2562e51", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: c1e3051c8ba46582286270b3dd85e166f2562e51", + "gmt_create": "2025-10-18T22:09:05.1398907+08:00", + "gmt_modified": "2025-10-18T22:09:05.1398907+08:00" + }, + { + "id": 1832, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "270af97a7ad47f343323425419e15a4b40b5b2d6", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 270af97a7ad47f343323425419e15a4b40b5b2d6", + "gmt_create": "2025-10-18T22:09:05.1463877+08:00", + "gmt_modified": "2025-10-18T22:09:05.1463877+08:00" + }, + { + "id": 1833, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "6f2b7aa144efdea96e65be3ab8ac7fa2cdbc2225", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 6f2b7aa144efdea96e65be3ab8ac7fa2cdbc2225", + "gmt_create": "2025-10-18T22:09:05.1574686+08:00", + "gmt_modified": "2025-10-18T22:09:05.1574686+08:00" + }, + { + "id": 1834, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "d4205dbef5fa248356ab84f4f34e92d41043bbc0", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: d4205dbef5fa248356ab84f4f34e92d41043bbc0", + "gmt_create": "2025-10-18T22:09:05.16467+08:00", + "gmt_modified": "2025-10-18T22:09:05.16467+08:00" + }, + { + "id": 1835, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "07388743bf6fdea5ecacfd52844951cf29f1ba5a", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 07388743bf6fdea5ecacfd52844951cf29f1ba5a", + "gmt_create": "2025-10-18T22:09:05.1782373+08:00", + "gmt_modified": "2025-10-18T22:09:05.1782373+08:00" + }, + { + "id": 1836, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "bc2d58753b8fe0b4f7150657bf40cfe756ce48de", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: bc2d58753b8fe0b4f7150657bf40cfe756ce48de", + "gmt_create": "2025-10-18T22:09:05.1866321+08:00", + "gmt_modified": "2025-10-18T22:09:05.1866321+08:00" + }, + { + "id": 1837, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "d812e1700bb51f25a2e6c7b596cd836326ad0a8f", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: d812e1700bb51f25a2e6c7b596cd836326ad0a8f", + "gmt_create": "2025-10-18T22:09:05.1993165+08:00", + "gmt_modified": "2025-10-18T22:09:05.1993165+08:00" + }, + { + "id": 1838, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "924061810e00a9e9d86f6e24e1baedbc27407d07", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 924061810e00a9e9d86f6e24e1baedbc27407d07", + "gmt_create": "2025-10-18T22:09:05.2073529+08:00", + "gmt_modified": "2025-10-18T22:09:05.2073529+08:00" + }, + { + "id": 1839, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "ead96af520d030f786869d1a2fc84abf7515ba13", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: ead96af520d030f786869d1a2fc84abf7515ba13", + "gmt_create": "2025-10-18T22:09:05.2217537+08:00", + "gmt_modified": "2025-10-18T22:09:05.2217537+08:00" + }, + { + "id": 1840, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "cd0ccf6429ac2f33e0a4924282006d85e3631cc8", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: cd0ccf6429ac2f33e0a4924282006d85e3631cc8", + "gmt_create": "2025-10-18T22:09:05.2320793+08:00", + "gmt_modified": "2025-10-18T22:09:05.2320793+08:00" + }, + { + "id": 1841, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "5d7a452b6c2a45cd789f302cd469b899a95c3437", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 5d7a452b6c2a45cd789f302cd469b899a95c3437", + "gmt_create": "2025-10-18T22:09:05.250597+08:00", + "gmt_modified": "2025-10-18T22:09:05.250597+08:00" + }, + { + "id": 1842, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "a50b8b99287d7ee5416b2fa438d7632bca6af461", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: a50b8b99287d7ee5416b2fa438d7632bca6af461", + "gmt_create": "2025-10-18T22:09:05.2654866+08:00", + "gmt_modified": "2025-10-18T22:09:05.2654866+08:00" + }, + { + "id": 1843, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "7e6d24ac888cf8fdd9d027a3cce623957ca0f8b4", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 7e6d24ac888cf8fdd9d027a3cce623957ca0f8b4", + "gmt_create": "2025-10-18T22:09:05.2814504+08:00", + "gmt_modified": "2025-10-18T22:09:05.2814504+08:00" + }, + { + "id": 1844, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "f6a7e7fcd25a928fdf743967980299caf6e95ee8", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: f6a7e7fcd25a928fdf743967980299caf6e95ee8", + "gmt_create": "2025-10-18T22:09:05.2959346+08:00", + "gmt_modified": "2025-10-18T22:09:05.2959346+08:00" + }, + { + "id": 1845, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "192aa438cae812c9ca95a5c06a15ca0066237458", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 192aa438cae812c9ca95a5c06a15ca0066237458", + "gmt_create": "2025-10-18T22:09:05.3041732+08:00", + "gmt_modified": "2025-10-18T22:09:05.3041732+08:00" + }, + { + "id": 1846, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "59ca3a804f2475b26818d37f3acb8e791eeeec52", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 59ca3a804f2475b26818d37f3acb8e791eeeec52", + "gmt_create": "2025-10-18T22:09:05.3183501+08:00", + "gmt_modified": "2025-10-18T22:09:05.3183501+08:00" + }, + { + "id": 1847, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "8748578e0b514c8688d4696b1d6586fca63e8fe7", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 8748578e0b514c8688d4696b1d6586fca63e8fe7", + "gmt_create": "2025-10-18T22:09:05.326766+08:00", + "gmt_modified": "2025-10-18T22:09:05.326766+08:00" + }, + { + "id": 1848, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "f358aa0745eebab14e4848cc7b7093d63ab7ca0c", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: f358aa0745eebab14e4848cc7b7093d63ab7ca0c", + "gmt_create": "2025-10-18T22:09:05.338776+08:00", + "gmt_modified": "2025-10-18T22:09:05.338776+08:00" + }, + { + "id": 1849, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "5b059bdb84f8cac3da01ca9e53d0136a28747e2e", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 5b059bdb84f8cac3da01ca9e53d0136a28747e2e", + "gmt_create": "2025-10-18T22:09:05.3526401+08:00", + "gmt_modified": "2025-10-18T22:09:05.3526401+08:00" + }, + { + "id": 1850, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "5170f98c4b5503fbe309f2d93d8361deb7adb713", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 5170f98c4b5503fbe309f2d93d8361deb7adb713", + "gmt_create": "2025-10-18T22:09:05.3682881+08:00", + "gmt_modified": "2025-10-18T22:09:05.3682881+08:00" + }, + { + "id": 1851, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "fe3dcd33e3ae6611c76e350efc9232c0e71ddecf", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: fe3dcd33e3ae6611c76e350efc9232c0e71ddecf", + "gmt_create": "2025-10-18T22:09:05.3786725+08:00", + "gmt_modified": "2025-10-18T22:09:05.3786725+08:00" + }, + { + "id": 1852, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "f3b5ab94ad13f5d0cc3bbaccd7fb568c17eef2fb", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: f3b5ab94ad13f5d0cc3bbaccd7fb568c17eef2fb", + "gmt_create": "2025-10-18T22:09:05.3870835+08:00", + "gmt_modified": "2025-10-18T22:09:05.3870835+08:00" + }, + { + "id": 1853, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "baead12025e075376e7927981cdbdb29fc3e9127", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: baead12025e075376e7927981cdbdb29fc3e9127", + "gmt_create": "2025-10-18T22:09:05.4035075+08:00", + "gmt_modified": "2025-10-18T22:09:05.4035075+08:00" + }, + { + "id": 1854, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "0e8687c6e1895e5280c42cda1f05e0fe60456c2b", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 0e8687c6e1895e5280c42cda1f05e0fe60456c2b", + "gmt_create": "2025-10-18T22:09:05.4195688+08:00", + "gmt_modified": "2025-10-18T22:09:05.4195688+08:00" + }, + { + "id": 1855, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "ecd031f3516ddb30d10184bc29008413fe982138", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: ecd031f3516ddb30d10184bc29008413fe982138", + "gmt_create": "2025-10-18T22:09:05.4344842+08:00", + "gmt_modified": "2025-10-18T22:09:05.4344842+08:00" + }, + { + "id": 1856, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "5cbdde321d5a14eeeaf9b4a4885b92b977415750", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 5cbdde321d5a14eeeaf9b4a4885b92b977415750", + "gmt_create": "2025-10-18T22:09:05.4637483+08:00", + "gmt_modified": "2025-10-18T22:09:05.4637483+08:00" + }, + { + "id": 1857, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "4dc6ef222bf413d145ce29652128ecbd7ea7e31f", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 4dc6ef222bf413d145ce29652128ecbd7ea7e31f", + "gmt_create": "2025-10-18T22:09:05.4854702+08:00", + "gmt_modified": "2025-10-18T22:09:05.4854702+08:00" + }, + { + "id": 1858, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "9fd91c1bd29bc83ea3a7b2217bbab7af022f74b5", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 9fd91c1bd29bc83ea3a7b2217bbab7af022f74b5", + "gmt_create": "2025-10-18T22:09:05.5051569+08:00", + "gmt_modified": "2025-10-18T22:09:05.5051569+08:00" + }, + { + "id": 1859, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "b4f775b86faecdc99a2ab9e89be2d7ca973762ad", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: b4f775b86faecdc99a2ab9e89be2d7ca973762ad", + "gmt_create": "2025-10-18T22:09:05.5192885+08:00", + "gmt_modified": "2025-10-18T22:09:05.5192885+08:00" + }, + { + "id": 1860, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "e6b4b9c801912c27d75ebee52fe74a427920df99", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: e6b4b9c801912c27d75ebee52fe74a427920df99", + "gmt_create": "2025-10-18T22:09:05.5345437+08:00", + "gmt_modified": "2025-10-18T22:09:05.5345437+08:00" + }, + { + "id": 1861, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "d1b7f907caa0c3c59628241250901cb7239b25a8", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: d1b7f907caa0c3c59628241250901cb7239b25a8", + "gmt_create": "2025-10-18T22:09:05.5445807+08:00", + "gmt_modified": "2025-10-18T22:09:05.5445807+08:00" + }, + { + "id": 1862, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "4d9bf1ca97d6fd14d26fe4edfdcbb64fc8cc57c2", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 4d9bf1ca97d6fd14d26fe4edfdcbb64fc8cc57c2", + "gmt_create": "2025-10-18T22:09:05.5604876+08:00", + "gmt_modified": "2025-10-18T22:09:05.5604876+08:00" + }, + { + "id": 1863, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "81494a0669c2c7e2fc491bbeea59dc78597e1efa", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 81494a0669c2c7e2fc491bbeea59dc78597e1efa", + "gmt_create": "2025-10-18T22:09:05.5690448+08:00", + "gmt_modified": "2025-10-18T22:09:05.5690448+08:00" + }, + { + "id": 1864, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "1b7e2f0b6c0e9ee2f84cb06b857a01aa99a2d98c", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 1b7e2f0b6c0e9ee2f84cb06b857a01aa99a2d98c", + "gmt_create": "2025-10-18T22:09:05.5842165+08:00", + "gmt_modified": "2025-10-18T22:09:05.5842165+08:00" + }, + { + "id": 1865, + "source_id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "target_id": "76ab51c20a1b2b44037ea4706db6cd49a6be8f3b", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 76ab51c20a1b2b44037ea4706db6cd49a6be8f3b", + "gmt_create": "2025-10-18T22:09:05.593644+08:00", + "gmt_modified": "2025-10-18T22:09:05.593644+08:00" + }, + { + "id": 1866, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "a2a994df6eb92d304845f8f2711506072549cadc", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: a2a994df6eb92d304845f8f2711506072549cadc", + "gmt_create": "2025-10-18T22:10:35.1612926+08:00", + "gmt_modified": "2025-10-18T22:10:35.1612926+08:00" + }, + { + "id": 1867, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "e88855ef6b355e26a0332e37c8fbf35f06f1a6df", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: e88855ef6b355e26a0332e37c8fbf35f06f1a6df", + "gmt_create": "2025-10-18T22:10:35.1690832+08:00", + "gmt_modified": "2025-10-18T22:10:35.1690832+08:00" + }, + { + "id": 1868, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "c1e3051c8ba46582286270b3dd85e166f2562e51", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: c1e3051c8ba46582286270b3dd85e166f2562e51", + "gmt_create": "2025-10-18T22:10:35.1765843+08:00", + "gmt_modified": "2025-10-18T22:10:35.1765843+08:00" + }, + { + "id": 1869, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "270af97a7ad47f343323425419e15a4b40b5b2d6", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 270af97a7ad47f343323425419e15a4b40b5b2d6", + "gmt_create": "2025-10-18T22:10:35.1850337+08:00", + "gmt_modified": "2025-10-18T22:10:35.1850337+08:00" + }, + { + "id": 1870, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "6f2b7aa144efdea96e65be3ab8ac7fa2cdbc2225", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 6f2b7aa144efdea96e65be3ab8ac7fa2cdbc2225", + "gmt_create": "2025-10-18T22:10:35.1930777+08:00", + "gmt_modified": "2025-10-18T22:10:35.1930777+08:00" + }, + { + "id": 1871, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "d4205dbef5fa248356ab84f4f34e92d41043bbc0", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: d4205dbef5fa248356ab84f4f34e92d41043bbc0", + "gmt_create": "2025-10-18T22:10:35.2021282+08:00", + "gmt_modified": "2025-10-18T22:10:35.2021282+08:00" + }, + { + "id": 1872, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "07388743bf6fdea5ecacfd52844951cf29f1ba5a", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 07388743bf6fdea5ecacfd52844951cf29f1ba5a", + "gmt_create": "2025-10-18T22:10:35.2105103+08:00", + "gmt_modified": "2025-10-18T22:10:35.2105103+08:00" + }, + { + "id": 1873, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "bc2d58753b8fe0b4f7150657bf40cfe756ce48de", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: bc2d58753b8fe0b4f7150657bf40cfe756ce48de", + "gmt_create": "2025-10-18T22:10:35.2178448+08:00", + "gmt_modified": "2025-10-18T22:10:35.2178448+08:00" + }, + { + "id": 1874, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "d812e1700bb51f25a2e6c7b596cd836326ad0a8f", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: d812e1700bb51f25a2e6c7b596cd836326ad0a8f", + "gmt_create": "2025-10-18T22:10:35.2271633+08:00", + "gmt_modified": "2025-10-18T22:10:35.2271633+08:00" + }, + { + "id": 1875, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "924061810e00a9e9d86f6e24e1baedbc27407d07", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 924061810e00a9e9d86f6e24e1baedbc27407d07", + "gmt_create": "2025-10-18T22:10:35.2349941+08:00", + "gmt_modified": "2025-10-18T22:10:35.2349941+08:00" + }, + { + "id": 1876, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "ead96af520d030f786869d1a2fc84abf7515ba13", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: ead96af520d030f786869d1a2fc84abf7515ba13", + "gmt_create": "2025-10-18T22:10:35.2434134+08:00", + "gmt_modified": "2025-10-18T22:10:35.2434134+08:00" + }, + { + "id": 1877, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "cd0ccf6429ac2f33e0a4924282006d85e3631cc8", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: cd0ccf6429ac2f33e0a4924282006d85e3631cc8", + "gmt_create": "2025-10-18T22:10:35.25112+08:00", + "gmt_modified": "2025-10-18T22:10:35.25112+08:00" + }, + { + "id": 1878, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "5d7a452b6c2a45cd789f302cd469b899a95c3437", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 5d7a452b6c2a45cd789f302cd469b899a95c3437", + "gmt_create": "2025-10-18T22:10:35.2589683+08:00", + "gmt_modified": "2025-10-18T22:10:35.2589683+08:00" + }, + { + "id": 1879, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "a50b8b99287d7ee5416b2fa438d7632bca6af461", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: a50b8b99287d7ee5416b2fa438d7632bca6af461", + "gmt_create": "2025-10-18T22:10:35.2667502+08:00", + "gmt_modified": "2025-10-18T22:10:35.2667502+08:00" + }, + { + "id": 1880, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "7e6d24ac888cf8fdd9d027a3cce623957ca0f8b4", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 7e6d24ac888cf8fdd9d027a3cce623957ca0f8b4", + "gmt_create": "2025-10-18T22:10:35.2749499+08:00", + "gmt_modified": "2025-10-18T22:10:35.2749499+08:00" + }, + { + "id": 1881, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "f6a7e7fcd25a928fdf743967980299caf6e95ee8", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: f6a7e7fcd25a928fdf743967980299caf6e95ee8", + "gmt_create": "2025-10-18T22:10:35.2828528+08:00", + "gmt_modified": "2025-10-18T22:10:35.2828528+08:00" + }, + { + "id": 1882, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "192aa438cae812c9ca95a5c06a15ca0066237458", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 192aa438cae812c9ca95a5c06a15ca0066237458", + "gmt_create": "2025-10-18T22:10:35.2909558+08:00", + "gmt_modified": "2025-10-18T22:10:35.2909558+08:00" + }, + { + "id": 1883, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "59ca3a804f2475b26818d37f3acb8e791eeeec52", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 59ca3a804f2475b26818d37f3acb8e791eeeec52", + "gmt_create": "2025-10-18T22:10:35.2990004+08:00", + "gmt_modified": "2025-10-18T22:10:35.2990004+08:00" + }, + { + "id": 1884, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "8748578e0b514c8688d4696b1d6586fca63e8fe7", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 8748578e0b514c8688d4696b1d6586fca63e8fe7", + "gmt_create": "2025-10-18T22:10:35.3070227+08:00", + "gmt_modified": "2025-10-18T22:10:35.3070227+08:00" + }, + { + "id": 1885, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "f358aa0745eebab14e4848cc7b7093d63ab7ca0c", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: f358aa0745eebab14e4848cc7b7093d63ab7ca0c", + "gmt_create": "2025-10-18T22:10:35.3147749+08:00", + "gmt_modified": "2025-10-18T22:10:35.3147749+08:00" + }, + { + "id": 1886, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "5b059bdb84f8cac3da01ca9e53d0136a28747e2e", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 5b059bdb84f8cac3da01ca9e53d0136a28747e2e", + "gmt_create": "2025-10-18T22:10:35.3229078+08:00", + "gmt_modified": "2025-10-18T22:10:35.3229078+08:00" + }, + { + "id": 1887, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "5170f98c4b5503fbe309f2d93d8361deb7adb713", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 5170f98c4b5503fbe309f2d93d8361deb7adb713", + "gmt_create": "2025-10-18T22:10:35.330886+08:00", + "gmt_modified": "2025-10-18T22:10:35.330886+08:00" + }, + { + "id": 1888, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "fe3dcd33e3ae6611c76e350efc9232c0e71ddecf", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: fe3dcd33e3ae6611c76e350efc9232c0e71ddecf", + "gmt_create": "2025-10-18T22:10:35.3387554+08:00", + "gmt_modified": "2025-10-18T22:10:35.3387554+08:00" + }, + { + "id": 1889, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "f3b5ab94ad13f5d0cc3bbaccd7fb568c17eef2fb", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: f3b5ab94ad13f5d0cc3bbaccd7fb568c17eef2fb", + "gmt_create": "2025-10-18T22:10:35.3470889+08:00", + "gmt_modified": "2025-10-18T22:10:35.3470889+08:00" + }, + { + "id": 1890, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "baead12025e075376e7927981cdbdb29fc3e9127", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: baead12025e075376e7927981cdbdb29fc3e9127", + "gmt_create": "2025-10-18T22:10:35.3549722+08:00", + "gmt_modified": "2025-10-18T22:10:35.3549722+08:00" + }, + { + "id": 1891, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "0e8687c6e1895e5280c42cda1f05e0fe60456c2b", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 0e8687c6e1895e5280c42cda1f05e0fe60456c2b", + "gmt_create": "2025-10-18T22:10:35.362844+08:00", + "gmt_modified": "2025-10-18T22:10:35.362844+08:00" + }, + { + "id": 1892, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "ecd031f3516ddb30d10184bc29008413fe982138", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: ecd031f3516ddb30d10184bc29008413fe982138", + "gmt_create": "2025-10-18T22:10:35.3710294+08:00", + "gmt_modified": "2025-10-18T22:10:35.3710294+08:00" + }, + { + "id": 1893, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "5cbdde321d5a14eeeaf9b4a4885b92b977415750", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 5cbdde321d5a14eeeaf9b4a4885b92b977415750", + "gmt_create": "2025-10-18T22:10:35.378058+08:00", + "gmt_modified": "2025-10-18T22:10:35.378058+08:00" + }, + { + "id": 1894, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "4dc6ef222bf413d145ce29652128ecbd7ea7e31f", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 4dc6ef222bf413d145ce29652128ecbd7ea7e31f", + "gmt_create": "2025-10-18T22:10:35.3869108+08:00", + "gmt_modified": "2025-10-18T22:10:35.3869108+08:00" + }, + { + "id": 1895, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "9fd91c1bd29bc83ea3a7b2217bbab7af022f74b5", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 9fd91c1bd29bc83ea3a7b2217bbab7af022f74b5", + "gmt_create": "2025-10-18T22:10:35.3948847+08:00", + "gmt_modified": "2025-10-18T22:10:35.3948847+08:00" + }, + { + "id": 1896, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "b4f775b86faecdc99a2ab9e89be2d7ca973762ad", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: b4f775b86faecdc99a2ab9e89be2d7ca973762ad", + "gmt_create": "2025-10-18T22:10:35.4032889+08:00", + "gmt_modified": "2025-10-18T22:10:35.4032889+08:00" + }, + { + "id": 1897, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "e6b4b9c801912c27d75ebee52fe74a427920df99", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: e6b4b9c801912c27d75ebee52fe74a427920df99", + "gmt_create": "2025-10-18T22:10:35.4110598+08:00", + "gmt_modified": "2025-10-18T22:10:35.4110598+08:00" + }, + { + "id": 1898, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "d1b7f907caa0c3c59628241250901cb7239b25a8", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: d1b7f907caa0c3c59628241250901cb7239b25a8", + "gmt_create": "2025-10-18T22:10:35.4188416+08:00", + "gmt_modified": "2025-10-18T22:10:35.4188416+08:00" + }, + { + "id": 1899, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "4d9bf1ca97d6fd14d26fe4edfdcbb64fc8cc57c2", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 4d9bf1ca97d6fd14d26fe4edfdcbb64fc8cc57c2", + "gmt_create": "2025-10-18T22:10:35.4270643+08:00", + "gmt_modified": "2025-10-18T22:10:35.4270643+08:00" + }, + { + "id": 1900, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "81494a0669c2c7e2fc491bbeea59dc78597e1efa", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 81494a0669c2c7e2fc491bbeea59dc78597e1efa", + "gmt_create": "2025-10-18T22:10:35.4358955+08:00", + "gmt_modified": "2025-10-18T22:10:35.4358955+08:00" + }, + { + "id": 1901, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "1b7e2f0b6c0e9ee2f84cb06b857a01aa99a2d98c", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 1b7e2f0b6c0e9ee2f84cb06b857a01aa99a2d98c", + "gmt_create": "2025-10-18T22:10:35.4441926+08:00", + "gmt_modified": "2025-10-18T22:10:35.4441926+08:00" + }, + { + "id": 1902, + "source_id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "target_id": "76ab51c20a1b2b44037ea4706db6cd49a6be8f3b", + "source_type": "WIKI_ITEM", + "target_type": "COMMIT", + "relationship_type": "GENERATED_IN", + "extra": "Wiki generated in commit: 76ab51c20a1b2b44037ea4706db6cd49a6be8f3b", + "gmt_create": "2025-10-18T22:10:35.4520196+08:00", + "gmt_modified": "2025-10-18T22:10:35.4520196+08:00" + }, + { + "id": 1903, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "e4fe353d-cefc-4899-9e57-39fc9f112127", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 5ff3fb8f-241e-4d7b-a9f7-3f265eda053f -\u003e e4fe353d-cefc-4899-9e57-39fc9f112127", + "gmt_create": "2025-10-18T22:10:35.5407534+08:00", + "gmt_modified": "2025-10-18T22:10:35.5407534+08:00" + }, + { + "id": 1904, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "f42a4fa0-61ee-471d-b8f0-9dfa22159b7c", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 5ff3fb8f-241e-4d7b-a9f7-3f265eda053f -\u003e f42a4fa0-61ee-471d-b8f0-9dfa22159b7c", + "gmt_create": "2025-10-18T22:10:35.5497255+08:00", + "gmt_modified": "2025-10-18T22:10:35.5497255+08:00" + }, + { + "id": 1905, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "06c4893c-d2e9-4b61-a99e-f66a1d2cdfc9", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 5ff3fb8f-241e-4d7b-a9f7-3f265eda053f -\u003e 06c4893c-d2e9-4b61-a99e-f66a1d2cdfc9", + "gmt_create": "2025-10-18T22:10:35.5582316+08:00", + "gmt_modified": "2025-10-18T22:10:35.5582316+08:00" + }, + { + "id": 1906, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "399f12e9-6620-446c-9e02-808c39c61bba", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 5ff3fb8f-241e-4d7b-a9f7-3f265eda053f -\u003e 399f12e9-6620-446c-9e02-808c39c61bba", + "gmt_create": "2025-10-18T22:10:35.5648903+08:00", + "gmt_modified": "2025-10-18T22:10:35.5648903+08:00" + }, + { + "id": 1907, + "source_id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "target_id": "d106423b-19ad-4e22-8a4a-567e2ff27e36", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 5ff3fb8f-241e-4d7b-a9f7-3f265eda053f -\u003e d106423b-19ad-4e22-8a4a-567e2ff27e36", + "gmt_create": "2025-10-18T22:10:35.5754994+08:00", + "gmt_modified": "2025-10-18T22:10:35.5754994+08:00" + }, + { + "id": 1908, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "33150d2c-ac78-4784-a31b-e9d342cc880c", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: caeb482b-4671-4692-98b5-948f768bcf2d -\u003e 33150d2c-ac78-4784-a31b-e9d342cc880c", + "gmt_create": "2025-10-18T22:10:35.5840138+08:00", + "gmt_modified": "2025-10-18T22:10:35.5840138+08:00" + }, + { + "id": 1909, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: caeb482b-4671-4692-98b5-948f768bcf2d -\u003e 2ab1acd9-0488-4f69-a292-63359e8a485a", + "gmt_create": "2025-10-18T22:10:35.5928714+08:00", + "gmt_modified": "2025-10-18T22:10:35.5928714+08:00" + }, + { + "id": 1910, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "c46f3f6b-d36e-48a1-84b7-1e14cb598119", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: caeb482b-4671-4692-98b5-948f768bcf2d -\u003e c46f3f6b-d36e-48a1-84b7-1e14cb598119", + "gmt_create": "2025-10-18T22:10:35.6012697+08:00", + "gmt_modified": "2025-10-18T22:10:35.6012697+08:00" + }, + { + "id": 1911, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "077abc2a-81e5-4e9c-9a72-757f4765021c", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: caeb482b-4671-4692-98b5-948f768bcf2d -\u003e 077abc2a-81e5-4e9c-9a72-757f4765021c", + "gmt_create": "2025-10-18T22:10:35.6065604+08:00", + "gmt_modified": "2025-10-18T22:10:35.6065604+08:00" + }, + { + "id": 1912, + "source_id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "target_id": "ab420b44-4f24-4bc3-a44c-bc68b0868ab8", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: caeb482b-4671-4692-98b5-948f768bcf2d -\u003e ab420b44-4f24-4bc3-a44c-bc68b0868ab8", + "gmt_create": "2025-10-18T22:10:35.6120018+08:00", + "gmt_modified": "2025-10-18T22:10:35.6120018+08:00" + }, + { + "id": 1913, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "b64a6df1-5797-4877-8b53-29fc0fdad59d", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 32329179-a4a2-47e2-83dd-1a93c046af96 -\u003e b64a6df1-5797-4877-8b53-29fc0fdad59d", + "gmt_create": "2025-10-18T22:10:35.6260297+08:00", + "gmt_modified": "2025-10-18T22:10:35.6260297+08:00" + }, + { + "id": 1914, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "f071af41-6de4-4751-8a76-5e5d5d0c02df", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 32329179-a4a2-47e2-83dd-1a93c046af96 -\u003e f071af41-6de4-4751-8a76-5e5d5d0c02df", + "gmt_create": "2025-10-18T22:10:35.63409+08:00", + "gmt_modified": "2025-10-18T22:10:35.63409+08:00" + }, + { + "id": 1915, + "source_id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "target_id": "d5e98815-ab00-4c12-8402-2fbc852d8dbd", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 32329179-a4a2-47e2-83dd-1a93c046af96 -\u003e d5e98815-ab00-4c12-8402-2fbc852d8dbd", + "gmt_create": "2025-10-18T22:10:35.6429003+08:00", + "gmt_modified": "2025-10-18T22:10:35.6429003+08:00" + }, + { + "id": 1916, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "d2e0d8f8-6a5a-4d1d-aa94-30a022535241", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 056cda49-d96e-49a5-831c-7def9872435e -\u003e d2e0d8f8-6a5a-4d1d-aa94-30a022535241", + "gmt_create": "2025-10-18T22:10:35.652216+08:00", + "gmt_modified": "2025-10-18T22:10:35.652216+08:00" + }, + { + "id": 1917, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "33c05b7f-e793-4a3f-bb87-9c6ea22d7e63", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 056cda49-d96e-49a5-831c-7def9872435e -\u003e 33c05b7f-e793-4a3f-bb87-9c6ea22d7e63", + "gmt_create": "2025-10-18T22:10:35.6599895+08:00", + "gmt_modified": "2025-10-18T22:10:35.6599895+08:00" + }, + { + "id": 1918, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "c2fef000-7272-4553-b8e9-650afd08aef6", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 056cda49-d96e-49a5-831c-7def9872435e -\u003e c2fef000-7272-4553-b8e9-650afd08aef6", + "gmt_create": "2025-10-18T22:10:35.6677844+08:00", + "gmt_modified": "2025-10-18T22:10:35.6677844+08:00" + }, + { + "id": 1919, + "source_id": "056cda49-d96e-49a5-831c-7def9872435e", + "target_id": "4708f37c-6c92-4fa9-aba1-fa843c3863f2", + "source_type": "WIKI_ITEM", + "target_type": "WIKI_ITEM", + "relationship_type": "PARENT_CHILD", + "extra": "Wiki parent-child relationship: 056cda49-d96e-49a5-831c-7def9872435e -\u003e 4708f37c-6c92-4fa9-aba1-fa843c3863f2", + "gmt_create": "2025-10-18T22:10:35.6757649+08:00", + "gmt_modified": "2025-10-18T22:10:35.6757649+08:00" + } + ], + "source_files": [ + { + "id": "a3b7521789787cc4db7608d02c5e95f4", + "path": "internal/middleware/auth.go", + "filename": "auth.go", + "gmt_create": "2025-10-11T17:24:20+08:00", + "gmt_modified": "2025-10-11T17:24:20+08:00" + }, + { + "id": "eb8338fb24a00daa3a4838bbc0ab1393", + "path": "internal/middleware/error_handler.go", + "filename": "error_handler.go", + "gmt_create": "2025-10-11T17:24:20+08:00", + "gmt_modified": "2025-10-11T17:24:20+08:00" + }, + { + "id": "c23df18489eaaeec8a340de242b77b44", + "path": "utility/token/user_token.go", + "filename": "user_token.go", + "gmt_create": "2025-10-11T17:24:20+08:00", + "gmt_modified": "2025-10-11T17:24:20+08:00" + }, + { + "id": "91b0ce4e15bd2ec12a8c8f87efd69254", + "path": "utility/config/config.go", + "filename": "config.go", + "gmt_create": "2025-10-11T17:24:20+08:00", + "gmt_modified": "2025-10-11T17:24:20+08:00" + }, + { + "id": "a2cc9e42068f81d57e6658912bec50c7", + "path": "internal/errHandler/code.go", + "filename": "code.go", + "gmt_create": "2025-10-11T17:24:20+08:00", + "gmt_modified": "2025-10-11T17:24:20+08:00" + }, + { + "id": "0f583231f0ca6eb6bdc0cd3104f97d42", + "path": "/main.go", + "filename": "main.go", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "b6012388f040de469b7ec2244cf9d3bf", + "path": "/internal/logic/logic.go", + "filename": "logic.go", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "40a0c2b01b15ceae41bdd421874c199e", + "path": "/internal/service/sys_user.go", + "filename": "sys_user.go", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "9592a0fc953a2595f709cd0c67c70a06", + "path": "/internal/dao/v_1_sys_user.go", + "filename": "v_1_sys_user.go", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "56c658d00971d4697ee90a4fd6912832", + "path": "/internal/model/sys_user.go", + "filename": "sys_user.go", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "219fe92fb80e3fa8bd7e4080d15e457a", + "path": "/internal/logic/sys_user/sys_user.go", + "filename": "sys_user.go", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "0f0ab37127003f1af1d234709f1d3198", + "path": "/internal/logic/card_apple_order/order.go", + "filename": "order.go", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "0de0fc73ea1c0c78e2d71d04a0a94411", + "path": "/internal/logic/card_redeem_order/order.go", + "filename": "order.go", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "1ffd22848808f089677c2ddc482a954a", + "path": "/internal/logic/merchant_order/order.go", + "filename": "order.go", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "e5ef83e4ccff2f66a4eb56f3b2096bf0", + "path": "/internal/logic/restriction/restriction.go", + "filename": "restriction.go", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "d341b69869e9863f8bd7ed7614572d1c", + "path": "/internal/logic/card_t_mall_order/order.go", + "filename": "order.go", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "fb94b419b6c25749805b970980a051ae", + "path": "/internal/service/card_apple_order.go", + "filename": "card_apple_order.go", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "fa2076592876f7f4387e9050085ba9b5", + "path": "/internal/service/card_redeem_order.go", + "filename": "card_redeem_order.go", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "ce93596b3c315be9ad061ed78b9b4a16", + "path": "/internal/service/merchant_order.go", + "filename": "merchant_order.go", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "1ede9ed0ed4e2fea117f1f0ee3228874", + "path": "/internal/service/restriction.go", + "filename": "restriction.go", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "c22d8bb47932b7530c368ff1de72e79a", + "path": "/internal/service/card_t_mall_order.go", + "filename": "card_t_mall_order.go", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "79ad87595e6f3cccf7d1df8561c8667d", + "path": "/manifest/config/config.yaml", + "filename": "config.yaml", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "348a584cbaee62585af0b8f576760382", + "path": "/internal/logic/jd_cookie/order.go", + "filename": "order.go", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "9fbcfcc5b312f6ea4b7a2f526f4fc0c4", + "path": "/internal/service/jd_cookie.go", + "filename": "jd_cookie.go", + "gmt_create": "2025-10-11T17:24:50+08:00", + "gmt_modified": "2025-10-11T17:24:50+08:00" + }, + { + "id": "94aa282e4a22f85674f3004894e95b12", + "path": "internal/model/entity/v_1_account_info.go", + "filename": "v_1_account_info.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "3695f0446f58c552ec036968b720c585", + "path": "internal/model/entity/v_1_order_info.go", + "filename": "v_1_order_info.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "297412eae542d50411094ce29ff6e9b3", + "path": "internal/model/entity/v_1_card_apple_recharge_info.go", + "filename": "v_1_card_apple_recharge_info.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "4f2117fd41858c8f1f05e73af0c4d045", + "path": "internal/model/entity/v_1_jd_cookie_account.go", + "filename": "v_1_jd_cookie_account.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "10b4b7e7bda705f2473233626534db93", + "path": "internal/model/entity/v_1_jd_cookie_jd_order.go", + "filename": "v_1_jd_cookie_jd_order.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "251c480af7207ec9635af57c9bc50f04", + "path": "internal/model/entity/v_1_jd_cookie_order.go", + "filename": "v_1_jd_cookie_order.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "24b833965d28e1470eacd7df237acdb4", + "path": "internal/dao/v_1_account_info.go", + "filename": "v_1_account_info.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "035d413d594bd8cd49b625ad3200b11c", + "path": "internal/dao/v_1_order_info.go", + "filename": "v_1_order_info.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "9ea71fe3dd3d7290fd60892723bb7ee8", + "path": "internal/dao/v_1_card_apple_recharge_info.go", + "filename": "v_1_card_apple_recharge_info.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "8d29c379353db1d02b0dbd096eb8a47d", + "path": "internal/dao/v_1_jd_cookie_account.go", + "filename": "v_1_jd_cookie_account.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "319d5ee6b3c76bed0110a972df7470d8", + "path": "internal/dao/v_1_jd_cookie_jd_order.go", + "filename": "v_1_jd_cookie_jd_order.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "81cfcd51a2f0449da14f3d4052765c08", + "path": "internal/dao/v_1_jd_cookie_order.go", + "filename": "v_1_jd_cookie_order.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "48b3a3cd9e9db7485c82648a8f9c69dc", + "path": "internal/controller/merchant/merchant_v1_merchant_config_add.go", + "filename": "merchant_v1_merchant_config_add.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "9909bbb8255b96a053563e9f3afd6e52", + "path": "internal/logic/account/account.go", + "filename": "account.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "c80482f4470a8e3dd050e61ff9bd3738", + "path": "internal/logic/merchant_order/order.go", + "filename": "order.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "92c36754f0dbd99fed9aa1523374158d", + "path": "internal/logic/card_apple_order/order.go", + "filename": "order.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "cbe32a6c2d1cadcc72019566cad819b6", + "path": "internal/logic/card_apple_order/status.go", + "filename": "status.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "987fc36e572014bb0a7c02bc015c9fa2", + "path": "internal/logic/card_apple_order/recharge_history.go", + "filename": "recharge_history.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "39c6a811a6208e20dc5b28becf3a2cbe", + "path": "internal/logic/card_apple_order/steal_relation.go", + "filename": "steal_relation.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "fe83d023754ae2aedb7c68ac0f3dcf31", + "path": "internal/logic/jd_cookie/account.go", + "filename": "account.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "edd8bea5c8f9373cd0b4de186914479e", + "path": "internal/logic/jd_cookie/order.go", + "filename": "order.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "961047bec51802fc7855502acf4bbc07", + "path": "internal/logic/jd_cookie/rotation.go", + "filename": "rotation.go", + "gmt_create": "2025-10-11T17:25:02+08:00", + "gmt_modified": "2025-10-11T17:25:02+08:00" + }, + { + "id": "6949b603968e204a80d7e6e337496f12", + "path": "internal/cmd/cmd.go", + "filename": "cmd.go", + "gmt_create": "2025-10-11T17:25:57+08:00", + "gmt_modified": "2025-10-11T17:25:57+08:00" + }, + { + "id": "cd47a7c1fd3185ff279cca4dd4a1cd9d", + "path": "api/monitor/monitor.go", + "filename": "monitor.go", + "gmt_create": "2025-10-11T17:25:57+08:00", + "gmt_modified": "2025-10-11T17:25:57+08:00" + }, + { + "id": "2a00f83021031103c438a59751eee183", + "path": "api/monitor/v1/heathcheck.go", + "filename": "heathcheck.go", + "gmt_create": "2025-10-11T17:25:57+08:00", + "gmt_modified": "2025-10-11T17:25:57+08:00" + }, + { + "id": "d9ed9131ddb364556f43b561d041ddd5", + "path": "internal/controller/monitor/monitor.go", + "filename": "monitor.go", + "gmt_create": "2025-10-11T17:25:57+08:00", + "gmt_modified": "2025-10-11T17:25:57+08:00" + }, + { + "id": "eddf871859d423ace01da9a74db6db86", + "path": "internal/controller/monitor/monitor_new.go", + "filename": "monitor_new.go", + "gmt_create": "2025-10-11T17:25:57+08:00", + "gmt_modified": "2025-10-11T17:25:57+08:00" + }, + { + "id": "50111ae80e6ac600d65fbd7b34df3d03", + "path": "internal/controller/monitor/monitor_v1_health_check.go", + "filename": "monitor_v1_health_check.go", + "gmt_create": "2025-10-11T17:25:57+08:00", + "gmt_modified": "2025-10-11T17:25:57+08:00" + }, + { + "id": "5824f93b650d7a0b6fb8c1a016077461", + "path": "utility/otel/config.go", + "filename": "config.go", + "gmt_create": "2025-10-11T17:25:57+08:00", + "gmt_modified": "2025-10-11T17:25:57+08:00" + }, + { + "id": "11df2c532cb96a0d8e041af4ea176204", + "path": "utility/otel/manager.go", + "filename": "manager.go", + "gmt_create": "2025-10-11T17:25:57+08:00", + "gmt_modified": "2025-10-11T17:25:57+08:00" + }, + { + "id": "b0dcfa2b0067be5ec2e3f00ad722ed85", + "path": "utility/otel/handler.go", + "filename": "handler.go", + "gmt_create": "2025-10-11T17:25:57+08:00", + "gmt_modified": "2025-10-11T17:25:57+08:00" + }, + { + "id": "70f39d04b38fd3c3c76da74b7b0ed20b", + "path": "utility/otel/utils.go", + "filename": "utils.go", + "gmt_create": "2025-10-11T17:25:57+08:00", + "gmt_modified": "2025-10-11T17:25:57+08:00" + }, + { + "id": "b896e4b9529b9c35c2662cf25560c5cd", + "path": "utility/monitor/monitor.go", + "filename": "monitor.go", + "gmt_create": "2025-10-11T17:25:57+08:00", + "gmt_modified": "2025-10-11T17:25:57+08:00" + }, + { + "id": "ce051f6cc8a25a53dcd349ccf066f90b", + "path": "internal/controller/card_info_apple/apple_card_info_v1_recharge_list_download_test.go", + "filename": "apple_card_info_v1_recharge_list_download_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": "315cb5ac67c46c359e9c8f8aecd320da", + "path": "internal/controller/restriction/restriction_v1_user_info_collection_test.go", + "filename": "restriction_v1_user_info_collection_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": "69602f92dc2983d638407af34ffc3699", + "path": "utility/cron/t_mall_game_data_sync_test.go", + "filename": "t_mall_game_data_sync_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": "a4390b2a5bd3345ca09b4f120a912bf6", + "path": "utility/token/user_token_test.go", + "filename": "user_token_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": "8d5d9b9151c15db5b80bdccfa4ad9e4f", + "path": "internal/logic/card_apple_account/account_test.go", + "filename": "account_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": "3676af4fc53a7e056b34c4afcae6f032", + "path": "internal/logic/card_apple_account/wallet_test.go", + "filename": "wallet_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": "1339d4fd004425708306ffba6c2dd7f9", + "path": "internal/logic/card_apple_order/order_test.go", + "filename": "order_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": "12223cc24bc431745a711c09cde5b50c", + "path": "internal/logic/card_redeem_cookie/place_test.go", + "filename": "place_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": "2081083be98975ed163a65fade66d84a", + "path": "internal/logic/card_redeem_account/summary_test.go", + "filename": "summary_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": "d68b895f71aba40116241dab68952308", + "path": "internal/logic/steal_rule/stats_test.go", + "filename": "stats_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": "c87e75096c95a73029618add8b2030a6", + "path": "internal/logic/limiter/rate_test.go", + "filename": "rate_test.go", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": "54791cda92ceb80fb0fd1d394b3c7786", + "path": "go.mod", + "filename": "go.mod", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": "6f6df715215e91eb3286c71371bf331d", + "path": "hack/config.yaml", + "filename": "config.yaml", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": "c240c13752c53bbb87d71a8654be71ea", + "path": "JD_COOKIE_REFACTOR_REPORT.md", + "filename": "JD_COOKIE_REFACTOR_REPORT.md", + "gmt_create": "2025-10-11T17:26:03+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "id": "b100fafa43450f0fdfd71975218cd99c", + "path": "resource/casbin/rbac_model.conf", + "filename": "rbac_model.conf", + "gmt_create": "2025-10-11T17:26:05+08:00", + "gmt_modified": "2025-10-11T17:26:05+08:00" + }, + { + "id": "f72071e80cb61857e0d4b22414fa6ea4", + "path": "utility/integration/originalJd/client.go", + "filename": "client.go", + "gmt_create": "2025-10-11T17:26:05+08:00", + "gmt_modified": "2025-10-11T17:26:05+08:00" + }, + { + "id": "03c5c54ee07952069215a22a208842f4", + "path": "utility/integration/originalJd/model.go", + "filename": "model.go", + "gmt_create": "2025-10-11T17:26:05+08:00", + "gmt_modified": "2025-10-11T17:26:05+08:00" + }, + { + "id": "eec37ad3c15d2c25f166711fa52e741b", + "path": "internal/consts/jd_cookie.go", + "filename": "jd_cookie.go", + "gmt_create": "2025-10-11T17:26:06+08:00", + "gmt_modified": "2025-10-11T17:26:06+08:00" + }, + { + "id": "d002a301044bef263b2a95b977c75925", + "path": "utility/verify/aes_ecb.go", + "filename": "aes_ecb.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "72755b8cc621f2d563a4a5ee5222529b", + "path": "utility/verify/md5.go", + "filename": "md5.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "b279f7393bb4b20c60e4a58537fad6f5", + "path": "utility/mfa/mfa.go", + "filename": "mfa.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "674428c72460e01521574ca280c115f4", + "path": "internal/model/sys_user.go", + "filename": "sys_user.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "ee654b1f5fb098fe9e7aeb85bd452349", + "path": "internal/service/sys_user.go", + "filename": "sys_user.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "8193684ba57063beec7b646d4b1b54e0", + "path": "internal/service/sys_auth.go", + "filename": "sys_auth.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "55835e5aa0b4632d7c3ab1cb90645f23", + "path": "internal/service/sys_casbin.go", + "filename": "sys_casbin.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "c08fb0c498d0fab1d988a77466050227", + "path": "internal/dao/v_1_sys_user.go", + "filename": "v_1_sys_user.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "9cd3a5d90f9aa905b7855847b1300d50", + "path": "internal/dao/v_1_sys_casbin_rule.go", + "filename": "v_1_sys_casbin_rule.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "ed43772f3487059e03a475d29e64c140", + "path": "internal/controller/sysUser/sysUser_v1_totp_status_get.go", + "filename": "sysUser_v1_totp_status_get.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "ed385c7e637955c644231fb8b9437600", + "path": "internal/controller/sysUser/sysUser_v1_totp_set.go", + "filename": "sysUser_v1_totp_set.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "00d464ab1568b59906f97ec8146e8af4", + "path": "internal/errHandler/handler.go", + "filename": "handler.go", + "gmt_create": "2025-10-11T17:27:31+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "id": "276c0639f90dcf2a34f4f4fbde119792", + "path": "api/order/v1/form.go", + "filename": "form.go", + "gmt_create": "2025-10-11T17:27:32+08:00", + "gmt_modified": "2025-10-11T17:27:32+08:00" + }, + { + "id": "b68f5340d85dff7e7356a47028249bea", + "path": "api/order/v1/log.go", + "filename": "log.go", + "gmt_create": "2025-10-11T17:27:32+08:00", + "gmt_modified": "2025-10-11T17:27:32+08:00" + }, + { + "id": "d004861257e62752cfed1f1a3dee4f6e", + "path": "api/order/v1/order_summary.go", + "filename": "order_summary.go", + "gmt_create": "2025-10-11T17:27:32+08:00", + "gmt_modified": "2025-10-11T17:27:32+08:00" + }, + { + "id": "117de4e77295f9440aa08bf4b60bb54e", + "path": "api/order/order.go", + "filename": "order.go", + "gmt_create": "2025-10-11T17:27:32+08:00", + "gmt_modified": "2025-10-11T17:27:32+08:00" + }, + { + "id": "fb972da6475be273c156b3d340c60b4d", + "path": "internal/controller/order/order_new.go", + "filename": "order_new.go", + "gmt_create": "2025-10-11T17:27:32+08:00", + "gmt_modified": "2025-10-11T17:27:32+08:00" + }, + { + "id": "1b43f5469efafba6f30e2a9bf228e4d0", + "path": "internal/controller/order/order_v1_order_form_create.go", + "filename": "order_v1_order_form_create.go", + "gmt_create": "2025-10-11T17:27:32+08:00", + "gmt_modified": "2025-10-11T17:27:32+08:00" + }, + { + "id": "6d0148a632b80d69ab9cb23b7b7c1177", + "path": "internal/controller/order/order_v1_order_form_update.go", + "filename": "order_v1_order_form_update.go", + "gmt_create": "2025-10-11T17:27:32+08:00", + "gmt_modified": "2025-10-11T17:27:32+08:00" + }, + { + "id": "493b77f6804c0cb6c2b773567f9a98a5", + "path": "internal/controller/order/order_v1_order_form_delete.go", + "filename": "order_v1_order_form_delete.go", + "gmt_create": "2025-10-11T17:27:32+08:00", + "gmt_modified": "2025-10-11T17:27:32+08:00" + }, + { + "id": "16690b403f75ad7364b91d742d4e0ec2", + "path": "internal/controller/order/order_v1_order_form_list.go", + "filename": "order_v1_order_form_list.go", + "gmt_create": "2025-10-11T17:27:32+08:00", + "gmt_modified": "2025-10-11T17:27:32+08:00" + }, + { + "id": "23d82c1c91bfb481851d2302868008b1", + "path": "internal/controller/order/order_v1_order_log_list.go", + "filename": "order_v1_order_log_list.go", + "gmt_create": "2025-10-11T17:27:32+08:00", + "gmt_modified": "2025-10-11T17:27:32+08:00" + }, + { + "id": "58a47489aee9a8f906d1d2120d982105", + "path": "internal/controller/order/order_v1_order_log_delete.go", + "filename": "order_v1_order_log_delete.go", + "gmt_create": "2025-10-11T17:27:32+08:00", + "gmt_modified": "2025-10-11T17:27:32+08:00" + }, + { + "id": "b477f7365d4c6efa2c1cbcd88d2e7db9", + "path": "internal/controller/order/order_v1_order_summary_get_list.go", + "filename": "order_v1_order_summary_get_list.go", + "gmt_create": "2025-10-11T17:27:32+08:00", + "gmt_modified": "2025-10-11T17:27:32+08:00" + }, + { + "id": "3a8478b750f71d410904fb39aa1e55bc", + "path": "internal/controller/order/order_v1_order_summary_daily_get_list.go", + "filename": "order_v1_order_summary_daily_get_list.go", + "gmt_create": "2025-10-11T17:27:32+08:00", + "gmt_modified": "2025-10-11T17:27:32+08:00" + }, + { + "id": "07658a06e2cd29c67a415fcae7cad0cd", + "path": "internal/model/order_info.go", + "filename": "order_info.go", + "gmt_create": "2025-10-11T17:27:33+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "id": "ea969bf93403e59ca22028be70fc6c3a", + "path": "internal/logic/merchant_order/order-summary.go", + "filename": "order-summary.go", + "gmt_create": "2025-10-11T17:27:33+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "id": "498fdff361f9c01e54357a315e9f7d11", + "path": "\\utility\\integration\\originalJd\\client.go", + "filename": "client.go", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": "eb65af27cb143cabfacf4e397cb494ca", + "path": "\\utility\\integration\\originalJd\\model.go", + "filename": "model.go", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": "f94f261c1cc667bd73b5e2d9fc8b4c0f", + "path": "\\internal\\consts\\card_redeem_cookie.go", + "filename": "card_redeem_cookie.go", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": "ef7aefce9f83002d91de28b146a92720", + "path": "\\internal\\consts\\card_jd.go", + "filename": "card_jd.go", + "gmt_create": "2025-10-11T17:28:29+08:00", + "gmt_modified": "2025-10-11T17:28:29+08:00" + }, + { + "id": "5b63b16fce716e9c574c9fcdb6fb533b", + "path": "api/order/v1/order.go", + "filename": "order.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "c0b5e0a48e881e774316a237bd41edcf", + "path": "internal/controller/card_info_apple/card_info_apple_v1_recharge_submit.go", + "filename": "card_info_apple_v1_recharge_submit.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "1c27101b67ffcdf02489a331ce98d3dd", + "path": "internal/controller/card_redeem_jd/card_redeem_jd_v1_place_order.go", + "filename": "card_redeem_jd_v1_place_order.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "a2750efa03ae7599bd56314495a2da56", + "path": "internal/controller/card_info_jd/card_info_jd_v1_order_callback.go", + "filename": "card_info_jd_v1_order_callback.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "711773636c036a042ce625f30229a418", + "path": "internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_submit.go", + "filename": "card_info_t_mall_game_v1_t_mall_game_order_submit.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "1b7d72f7f4a9bb0f3f8a8dc432a433f6", + "path": "internal/model/do/order_info.go", + "filename": "order_info.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "449f4de7045f7b39ec1c6aa4ecb4b840", + "path": "internal/service/card_apple_order.go", + "filename": "card_apple_order.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "a2623d6811b08468df51c167eaf9b774", + "path": "internal/service/card_redeem_order.go", + "filename": "card_redeem_order.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "8ac69700098158e9e90a9a8f1a247a9a", + "path": "internal/consts/sys_user_payment_record.go", + "filename": "sys_user_payment_record.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "70e0b28642444d37c06db48c6c61307d", + "path": "internal/controller/card_info_jd/card_info_jd_v1_order_summary_list.go", + "filename": "card_info_jd_v1_order_summary_list.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "3c6298484df164a1e5fe7fc2efa9712c", + "path": "internal/controller/card_info_walmart/card_info_walmart_v1_order_summary_list.go", + "filename": "card_info_walmart_v1_order_summary_list.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "fec40ef00c4cd2e564af5cea15277c85", + "path": "internal/logic/card_apple_order/card_apple_order.go", + "filename": "card_apple_order.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "f18bd86f1dafe9eae88b4f4b00db9bcd", + "path": "internal/logic/card_redeem_order/card_redeem_order.go", + "filename": "card_redeem_order.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "c6ee44f200688a3a1f009e9a166d6481", + "path": "utility/utils/tools.go", + "filename": "tools.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "bd83967e8844a9df33a6def66ff88bf8", + "path": "utility/cache/cache.go", + "filename": "cache.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "d6ab1f208fb77fbc9859cad2aa6bb1ed", + "path": "internal/service/jd_cookie.go", + "filename": "jd_cookie.go", + "gmt_create": "2025-10-11T17:28:54+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "id": "7fa23727ee8e479ba4e92dc3eed84908", + "path": "internal/systemV2/logic/user_center/user_center.go", + "filename": "user_center.go", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": "469f62d9db11e2c4fb3697ae2e85f81a", + "path": "internal/dao/internal/v_1_sys_user.go", + "filename": "v_1_sys_user.go", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "id": "f64c7936d86ec71ec54ea9cb5a6d7466", + "path": "manifest/config/config.yaml", + "filename": "config.yaml", + "gmt_create": "2025-10-18T22:04:18.0355519+08:00", + "gmt_modified": "2025-10-18T22:04:18.0355519+08:00" + }, + { + "id": "e5e06384050da6e9cb71d788b8fdfea5", + "path": "manifest/docker/Dockerfile", + "filename": "Dockerfile", + "gmt_create": "2025-10-18T22:04:18.0404058+08:00", + "gmt_modified": "2025-10-18T22:04:18.0404058+08:00" + }, + { + "id": "5c71a6de5070579b5c90694ac98bb368", + "path": "manifest/docker/docker-compose.yml", + "filename": "docker-compose.yml", + "gmt_create": "2025-10-18T22:04:18.045564+08:00", + "gmt_modified": "2025-10-18T22:04:18.045564+08:00" + }, + { + "id": "07153a17d7dda70c75d2b1b4146f582c", + "path": "manifest/docker/docker-compose-local.yaml", + "filename": "docker-compose-local.yaml", + "gmt_create": "2025-10-18T22:04:18.0507822+08:00", + "gmt_modified": "2025-10-18T22:04:18.0507822+08:00" + }, + { + "id": "ff277b9199e792d02dbfa13f55915d43", + "path": "manifest/docker/install.sh", + "filename": "install.sh", + "gmt_create": "2025-10-18T22:04:18.0570375+08:00", + "gmt_modified": "2025-10-18T22:04:18.0570375+08:00" + }, + { + "id": "4d75f6651634ab298f2875fc0e83333d", + "path": "manifest/deploy/kustomize/base/kustomization.yaml", + "filename": "kustomization.yaml", + "gmt_create": "2025-10-18T22:04:18.0616035+08:00", + "gmt_modified": "2025-10-18T22:04:18.0616035+08:00" + }, + { + "id": "c668b2b1eb7f16d3e643a19a9e1fdd7b", + "path": "manifest/deploy/kustomize/overlays/develop/kustomization.yaml", + "filename": "kustomization.yaml", + "gmt_create": "2025-10-18T22:04:18.068002+08:00", + "gmt_modified": "2025-10-18T22:04:18.068002+08:00" + }, + { + "id": "1e38df357652b98eb89f47c776d89716", + "path": "manifest/deploy/kustomize/base/deployment.yaml", + "filename": "deployment.yaml", + "gmt_create": "2025-10-18T22:04:18.0759148+08:00", + "gmt_modified": "2025-10-18T22:04:18.0759148+08:00" + }, + { + "id": "375bbed4688b0d8de4a69655f763d5fe", + "path": "manifest/deploy/kustomize/overlays/develop/deployment.yaml", + "filename": "deployment.yaml", + "gmt_create": "2025-10-18T22:04:18.0815958+08:00", + "gmt_modified": "2025-10-18T22:04:18.0815958+08:00" + }, + { + "id": "9bf50a69c00a52a1dff9af6d0a524561", + "path": "manifest/deploy/kustomize/overlays/develop/configmap.yaml", + "filename": "configmap.yaml", + "gmt_create": "2025-10-18T22:04:18.0863212+08:00", + "gmt_modified": "2025-10-18T22:04:18.0863212+08:00" + }, + { + "id": "cd7e39cff0a7e858c297aca5f1d6a079", + "path": "Makefile", + "filename": "Makefile", + "gmt_create": "2025-10-18T22:04:18.0917618+08:00", + "gmt_modified": "2025-10-18T22:04:18.0917618+08:00" + }, + { + "id": "fa263673f2a99e1b81a89d8bcba135f2", + "path": "hack/hack.mk", + "filename": "hack.mk", + "gmt_create": "2025-10-18T22:04:18.0974975+08:00", + "gmt_modified": "2025-10-18T22:04:18.0974975+08:00" + }, + { + "id": "a032002d1754289832a7235ddf38bba8", + "path": ".drone.yml", + "filename": ".drone.yml", + "gmt_create": "2025-10-18T22:04:18.1021952+08:00", + "gmt_modified": "2025-10-18T22:04:18.1021952+08:00" + }, + { + "id": "2e66ec3759ab8e44a2f8b14f29e91610", + "path": "utility/cron/cron.go", + "filename": "cron.go", + "gmt_create": "2025-10-18T22:04:18.1080754+08:00", + "gmt_modified": "2025-10-18T22:04:18.1080754+08:00" + }, + { + "id": "debc2930279b67133bdabc1b8627fa74", + "path": "/utility/otel/config.go", + "filename": "config.go", + "gmt_create": "2025-10-18T22:04:36.8479724+08:00", + "gmt_modified": "2025-10-18T22:04:36.8479724+08:00" + }, + { + "id": "646de3e21aede32684ac250608e30f81", + "path": "/utility/otel/manager.go", + "filename": "manager.go", + "gmt_create": "2025-10-18T22:04:36.8531813+08:00", + "gmt_modified": "2025-10-18T22:04:36.8531813+08:00" + }, + { + "id": "1455afd43a1181b4924167eee7f2bf61", + "path": "/utility/otel/utils.go", + "filename": "utils.go", + "gmt_create": "2025-10-18T22:04:36.8592563+08:00", + "gmt_modified": "2025-10-18T22:04:36.8592563+08:00" + }, + { + "id": "4aab766e7ad6f5e8c17384b0d5361728", + "path": "/resource/casbin/rbac_model.conf", + "filename": "rbac_model.conf", + "gmt_create": "2025-10-18T22:04:36.8648376+08:00", + "gmt_modified": "2025-10-18T22:04:36.8648376+08:00" + }, + { + "id": "487ce7ed78126fa758cc2d348b2f410e", + "path": "/utility/integration/redeem/jd/api.go", + "filename": "api.go", + "gmt_create": "2025-10-18T22:04:36.8716665+08:00", + "gmt_modified": "2025-10-18T22:04:36.8716665+08:00" + }, + { + "id": "85326ba007bc4b730914abf2639ab613", + "path": "/utility/integration/redeem/ctrip/api.go", + "filename": "api.go", + "gmt_create": "2025-10-18T22:04:36.877719+08:00", + "gmt_modified": "2025-10-18T22:04:36.877719+08:00" + }, + { + "id": "08fcd1de22231d0da02880634f8774fa", + "path": "/utility/integration/redeem/walmart/api.go", + "filename": "api.go", + "gmt_create": "2025-10-18T22:04:36.883495+08:00", + "gmt_modified": "2025-10-18T22:04:36.883495+08:00" + }, + { + "id": "38d3cae75228d13a3dd19e8fa2956753", + "path": "/utility/integration/tmall/api/api.go", + "filename": "api.go", + "gmt_create": "2025-10-18T22:04:36.8911501+08:00", + "gmt_modified": "2025-10-18T22:04:36.8911501+08:00" + }, + { + "id": "ce3a1385eaebaa905699b23ad83e209c", + "path": "/utility/integration/originalJd/client.go", + "filename": "client.go", + "gmt_create": "2025-10-18T22:04:36.8966685+08:00", + "gmt_modified": "2025-10-18T22:04:36.8966685+08:00" + }, + { + "id": "966e173135a1b07b87f554aa60f65dd1", + "path": "/utility/integration/originalJd/model.go", + "filename": "model.go", + "gmt_create": "2025-10-18T22:04:36.9027386+08:00", + "gmt_modified": "2025-10-18T22:04:36.9027386+08:00" + }, + { + "id": "14a77dff2e965ae92bd92a79f7c51ea1", + "path": "/internal/consts/jd_cookie.go", + "filename": "jd_cookie.go", + "gmt_create": "2025-10-18T22:04:37.0191238+08:00", + "gmt_modified": "2025-10-18T22:04:37.0191238+08:00" + }, + { + "id": "0f4b79c169b55a4a353922e49057ab34", + "path": "/internal/logic/jd_cookie/order_create.go", + "filename": "order_create.go", + "gmt_create": "2025-10-18T22:05:30.069927+08:00", + "gmt_modified": "2025-10-18T22:05:30.069927+08:00" + }, + { + "id": "8297c82d56a4566b4e439161bc2454c7", + "path": "/internal/logic/jd_cookie/order_utils.go", + "filename": "order_utils.go", + "gmt_create": "2025-10-18T22:05:30.0788437+08:00", + "gmt_modified": "2025-10-18T22:05:30.0788437+08:00" + }, + { + "id": "6f426da779ea01b260285f35941ee350", + "path": "/internal/logic/jd_cookie/order_jd.go", + "filename": "order_jd.go", + "gmt_create": "2025-10-18T22:05:30.0849023+08:00", + "gmt_modified": "2025-10-18T22:05:30.0849023+08:00" + }, + { + "id": "b02b1b196de6c12a1b511f4fe368aefa", + "path": "internal/logic/sys_auth/sysAuth.go", + "filename": "sysAuth.go", + "gmt_create": "2025-10-18T22:05:40.4491492+08:00", + "gmt_modified": "2025-10-18T22:05:40.4491492+08:00" + }, + { + "id": "fb7ae04d8afd7c7f540758059df7b9fc", + "path": "internal/controller/jd_cookie/jd_cookie_v1_create_account.go", + "filename": "jd_cookie_v1_create_account.go", + "gmt_create": "2025-10-18T22:05:40.4570569+08:00", + "gmt_modified": "2025-10-18T22:05:40.4570569+08:00" + }, + { + "id": "d212b7838198d532442a43a2720f228c", + "path": "internal/controller/jd_cookie/jd_cookie_v1_create_order.go", + "filename": "jd_cookie_v1_create_order.go", + "gmt_create": "2025-10-18T22:05:40.4634879+08:00", + "gmt_modified": "2025-10-18T22:05:40.4634879+08:00" + }, + { + "id": "ecaa7eef95a04c10e41b14218959f6bf", + "path": "internal/controller/jd_cookie/jd_cookie_v1_batch_check.go", + "filename": "jd_cookie_v1_batch_check.go", + "gmt_create": "2025-10-18T22:05:40.4730172+08:00", + "gmt_modified": "2025-10-18T22:05:40.4730172+08:00" + }, + { + "id": "95d76ee51d8eba69c520952975f3836c", + "path": "internal/logic/jd_cookie/order_create.go", + "filename": "order_create.go", + "gmt_create": "2025-10-18T22:05:41.1838545+08:00", + "gmt_modified": "2025-10-18T22:05:41.1838545+08:00" + }, + { + "id": "b9997c2d25a8edb37042b9aed4b87d4a", + "path": "internal/logic/jd_cookie/order_utils.go", + "filename": "order_utils.go", + "gmt_create": "2025-10-18T22:05:41.1896896+08:00", + "gmt_modified": "2025-10-18T22:05:41.1896896+08:00" + }, + { + "id": "ed31ce19cca1ebd07457e557c8cb7147", + "path": "internal/logic/jd_cookie/order_jd.go", + "filename": "order_jd.go", + "gmt_create": "2025-10-18T22:05:41.1959963+08:00", + "gmt_modified": "2025-10-18T22:05:41.1959963+08:00" + }, + { + "id": "dc285be35577dcc5b342eafd1a253628", + "path": "internal/model/do/v_1_jd_cookie_order.go", + "filename": "v_1_jd_cookie_order.go", + "gmt_create": "2025-10-18T22:08:05.2916788+08:00", + "gmt_modified": "2025-10-18T22:08:05.2916788+08:00" + } + ], + "wiki_catalogs": [ + { + "id": "8292f51b-85c1-41d5-a58a-50585ba999d1", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "项目概述", + "description": "project-overview", + "prompt": "创建关于kami_backend项目的全面概述内容。解释该项目作为电商平台卡密管理后端系统的核心目的和架构设计。详细描述其基于GoFrame框架的MVC架构,以及如何为京东、天猫、沃尔玛、Ctrip等多个电商平台提供统一的卡密充值与兑换、订单处理和账户管理API服务。阐述系统的主要组件及其相互关系,包括API层、控制器层、服务层、业务逻辑层和数据访问层。为初学者提供概念性介绍,同时为经验丰富的开发者提供技术细节,包括系统的工作流程、关键设计决策和整体技术愿景。使用代码库中的实际示例来说明核心功能,并保持与代码库一致的术语。", + "progress_status": "completed", + "dependent_files": "main.go,CLAUDE.md,README.md,Makefile", + "gmt_create": "2025-10-08T18:17:58+08:00", + "gmt_modified": "2025-10-08T18:22:33+08:00", + "raw_data": "WikiEncrypted:0MI1/XkBoMl0lTbK6t0Cn/+8FdvqrJ62ianMLvZj02elJtBUgH0Ns0veIx1WPtM9wwkxI+/XAqHLxJLlHB8wV5ZPaqnpZD68qW6viSXvNxPEwZQOyt9nbtdfUWCMarbTgmIushNu4J5RPguVc9JC+KjKWBJP2K2k0dMyiFIM1LNRg0L4JwSi0jojAQ3WhyIboOqfY/DVBgMOmJcqMlfegwvZrPWGRL4SzulymvNwlBKhpBjFdkOwae+0Luldz4f3FJgKEvaBF/yXIIEP306Vc4gko1a8JxEgl2h4yzd4FKlZonSXR6zQ1dUGQzOvKCZR36Nh4YDIxoqDOj+3BaqAYI+LW7ILrDyDi5Mb0PRWJLamEJ99ZI7o48W5vPr0GKxCM7CFhirvdnbb6w1dxKHH6j2uz2wnz9oG3PnA4+vKqOMKmx4buCYqtkEjJ7SegnJt85ilBBrYMEOGXIulXglXQT5W4sl8r2DyHY8t/wHuYS1V91vnuhYnlHVozMIpRVfkwARdrqfSDMREv75DzhMHGzjXtILoZzFz+ZIq/kCAeHawR5w9KUUBbRQ65Txpl8p1rsjYhpp63ItiHANivaJcJNvA3xOC0Mnhb1IDucrRB9JzGTwMMOnXzstRcwvdfPaL4//W0eZeVSBRldVOKjxJKyYkTfvoTNBiQ9avgznXLDGNNaln7C1MuPUF1xQOBqYh/1IXq79W0/gMhESyMZcqAZbSHAa72JhU9Tio3IcgF8vBPbEIOBsTZoXbvVT2dtEf7hNIXrZNS5WENbRMMUI+e25NTOclCOPcPABhJhPmVl0HnOvkIkRhNw1F/bflysTZvMpYOYC7S6e5CkwWqfaSJ6TqhaixM/5RqJs9CmLCj8btLxJ7PXiuvk+ao5J9IKRPqIW8AxmvXA+5n7fz8VQzTdrAxOdySKSbty3ZvIVoyqFwN9c9iTPhi90Gd6MqHHaN/TgFO2k1Nsvk0VW9mPdu65aoRUab/oTrM/UlK87rQYaU/FGMCR4Yb08wI8Nv8eL+ynJa3rsFe1Ge4oeCDRJ7fDGiqsePo1A1bcCNPS+kI8qJGQS3cK6yjo+kf7btjlUVXqNqIopDmayuHBa1N/PpFajqsHjVt5rFh8oPISq63okSxfJ2X6kPSzDNFGtnKpphYTXy4TPgFReXEjU5znGV2A8kHnLoHVHUWJvMGkKmoSJqxdvaorvNs9W4GKghA78uwvUQQ/XGmpSHu36Jtr0yN3HWw4iDJ0bhFzI/zbpF/1Kjyh1zDP9sE2Z6qBITBg9LcwAsbFKpdSA/8+9hx3el5g==" + }, + { + "id": "eaa525f4-7640-4d4e-84ae-7624f8b5c790", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "卡密管理逻辑", + "description": "card-management-logic", + "prompt": "创建kami_backend卡密管理业务逻辑的详细文档。深入阐述Apple、京东、天猫等各平台卡密账户的创建、更新、删除和状态管理流程。详细说明卡密充值逻辑,包括充值历史记录、重复卡密处理、充值状态同步等核心功能。解释卡密账户与订单系统、支付系统的集成模式。提供具体的代码示例,展示关键业务方法的实现细节。记录卡密管理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案。", + "parent_id": "201b5004-c469-41f6-a407-c98892822b49", + "progress_status": "completed", + "dependent_files": "internal/logic/card_apple_account/,internal/logic/card_redeem_account/,internal/logic/card_t_mall_account/,internal/service/card_apple_account.go,internal/service/card_redeem_account.go,internal/service/card_t_mall_account.go", + "gmt_create": "2025-10-08T18:18:19+08:00", + "gmt_modified": "2025-10-08T18:26:44+08:00", + "raw_data": "WikiEncrypted:kn7Ct+JfrcIimOh9dbHZD8z9sVFXFlw+VowlG4RdkgRiO5PhUZUUR9F/92VQe6/0J84NbYm+zazVIZMP+YkBFE0RZtWubRsgAz8BWjPUtXm2B04dFxVPAt1NIu+3RilzEmU1MR1N7PuxuaIImLt/bu6gQFKA3Bf2MWl0Q61W4ONaIc4V/Ui2hYPvvFDkO+IdljMqxRjRuJmG26kio69x2aFtk6VFwU/V69hDjfymhxbNNKJWT1wgjQARNT1nEy5i/su1X6mIWQSM28YGyPjXB6z9jDFOYmUV6GSJfQ5UBJ5VCQYoGEBZYkcwVn/KqJHkEhHCwDWss36knb4+oRzFcOjfw9Ar7ZVZmZiqPSnto+r5Rp5h1jxSc43jD+7FS5jLTf1Q0Dj7klEVLZpD3lVP2KLOdWz/ekmasAflrPJVMdNKpUh3XIaAUP3nua5TpE+q6OJIrnjLBk17KmAQsE1RBM4z8z5Zvn9XM5sMBDa9u7AoL7spVwcfwJiyg/Apl3eAGjBDjQV7cyRvsfJWs9BMCQRhxgezXNkZi+63bUyJ4OQt+DhLmPD39tL8BWSZkXr3CCrrZ5Xc6nE7w1MlR5SEVykcgzG2dYBYCZW6HtEwx7CHvxKqFZVU7qkueY/8ang60ulQTMY/DcIyMCvGSBb5aVOwIZ228z2G+3k/YacUjDFAYBU1up1I4zkCe2e6cDDuY5qSfyE2eQsaYMaXv6gB45vnQ2w14diy/bR5Mpxe7oT0fWDv3QVx1Oy3Z+JKyx1ehumNJa7zESZWmEai4F7P4d1cY5q5VP+rpdLQilXEOEpP8M0369o+bMLlTKDmZPOqVK/jRVozMnMvyJ/DRXqc3tgo+ng0uT2/ZmuEcpfprBiF0IvtobVjphqZqhGlDDsqazVUdKbPSXxGcbawGOBn+cw8VTXD0BGJgeXIa1HbBZrcZGgyzilCHQjexQSWOBHS9ggSFFHlj22TsLvh78O1avMDXXuFYEXSmltDEzI4tlbJ5K31p0eBCIsUOOCOigJJGIbshguTgw3/ZXE9Kb5LmwfohID/3R2wd+aDgEKAXhP80/XMh1MLF5TKeEGqcXcax+IBT5dfxWSLi6GoEvGYCbKP/CUvvI+DYeNp2XMlGWr6yClsp3WD/pG34pb5Mz1eKbyTRhA+8K62VcJ/4x6j+xqW01PJrKLYXfJOTJIhyHp+uSa3YNvO5OnHj38hl/h5FqYsnZ+cuhs0y2vpa1I5j6ABYMKcu8HMp1wS7jMdZA6ezRBGnl9mSRZ7ELNFCfKEakpT5QBowaBYxviHgYZYHfzjBFc4ViYY/V6u/qtm0i2niSj2bAewlZyWtAVuK7NXFExjovKKnIVvmVHzJraXtJriVnHNOO4ZiaEZk4P9Kil2NZ7vlYo/z+S+pQxjg0H3XDgwhr+/jK+RIDCIp6H7Ng==", + "layer_level": 1 + }, + { + "id": "0acd557b-c455-4420-956e-96a4a67cd7e0", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "用户数据模型", + "description": "user-data-model", + "prompt": "创建kami_backend用户数据模型的全面文档。详细说明v_1_user_info实体的所有字段定义、数据类型和业务含义,包括用户基本信息、状态、权限等属性。解释主键id、唯一索引username的定义,以及与其他表的外键关系。阐述用户数据的验证规则和业务规则,如用户名格式、密码加密策略等。提供用户数据表的模式图和示例数据。记录用户数据的访问模式、缓存策略(如Redis缓存)和性能考虑因素。说明数据生命周期、保留策略和归档规则。详细描述GoFrame ORM框架如何将用户数据模型映射到Go结构体,以及DAO层如何实现用户数据的增删改查操作。包括用户与角色、权限等关联实体的关系映射。", + "parent_id": "b8ba5dc4-8d15-4b61-86e8-07a963bd3fa8", + "progress_status": "completed", + "dependent_files": "internal/model/entity/v_1_user_info.go,internal/model/do/v_1_user_info.go,internal/dao/v_1_user_info.go,internal/model/sys_user.go,internal/model/user_info.go", + "gmt_create": "2025-10-08T18:18:21+08:00", + "gmt_modified": "2025-10-08T18:26:32+08:00", + "raw_data": "WikiEncrypted:b2BGJgTIatkHozAd0Nudm/SuvVVYZvaYCYJT//0Xr2YLspulsfZ15EoSMz1BS2Qu+eT/Pia7Bp+rVzGEs5oZfqEhrvkZJtq9PBXvvEoPE0zXdUP4cFX6U6mN1aUOy0Wzdrk4F0Ho1YhY0DNv8UdU+9bn1hHkP/mx5mK9TxjwmMYR7vS8MdbT920j/f9IegBRCliSfMXWqg31OAUcsikZZRl+R0/Zl4jRZ/HbPVB3fakRwaqfvSWAnDURFmoVY6+xCAC/rRtpV7CAnkNrEGNO6yAtqeba/bYPFMlAqlsatVImQavsRJWHPK9fCHhJPPSQAPYoyKliiMdgTzaxceybxTLtNNShGuSvXtR8DLHwFrhUpC+LTyzXI0JROTjR9ndhVDTt/IELxhmYFITb+4aejLlhHN+J4pMcoRYXEh8Z769iRqfiI0DbR+evFug/AFVvxOq32AeaFc1zQnzAJF7s0as2mKEbjRFFI1CHdQ3kfH087Ov2HdugqBWZw5TWPBAgVk7fItFEoKsryzEiRmhWhsNaqhWF0heraMk8eDZGJw0LXDF/8qYeoV0ybASIgxLCeHl4Ckfush86I0zBcpRh4COc5Swi+LdiWGDvbRKTnbQsTgjdl3uT5/PPVw6OwbN/wqNp6tVyZvzazGUiAb/iJVE+XFbjk7JKib26plORd6O4Bjye4HPj5ohndCPDdmAY9+rbrgf7v8UxNxvMrBP5p3MT6I9rCs8Gcg/Lej0OObK6lxCILhHCarkR09+/WIa0PeeHqfQTurlZgd/VKaXK4wOC1UUX51ffo6pzI3SJTEAym4u1KI3TuN+58x12ORQHPCX2SDvh/l4F82L2yWMDyj6MIaDy/e/+2j1j0FcH2NjsHEIetNey1a29fDnrYIV4ZkCkUC/z77TWo+YhucgMUPuA2i7Y6n0PE/AzD6aUdYA+L7G1UUzh8lguXIDPwDDw91JSPi0J7YXEYwv0oqguL3uxLdjY1dx9b2zFWVWxVDw9FofS+q5/hSzw1OIWsZ+QTUtV/apoyHvdSwDX5I49c7NMgAB5H3rEhcKrezwZDu0AU7PQENOzEzvQzGw+ggNrtUYBtjj83biXEpN3V4p9f7kXl92YJRPTygs+noXNkh28gMS80iBdgNdA/KHfuAW4uEHAsE6GxEQsWoYavMxops8UhIz1or3znDivgK7qXuRj07ySoBm4IE4mhnqKGRFzKSEp5JVb7ihkqX2L84XU4FKatiu6wFGWTgm6kaemG3xHmqGaxJdniYvmDX3U43b1uv7iF24ti/BLG/QUQ4O3kzn3EFstT4QdtQJjxVexc7PJwH0s2McUqe8jwOJvLsEu4/iB/zJLzVPuFIUzyxEE/DHApT7Dwea0xgcDdDwOWN+ePYmDENZFLF8ySIiY1wla/L1b4FZayc1IJ1LOv+BWhXzgm7UoNHzsrllsNhtu3xa99+OBshAu7+gKsIJy3FVFBzzKR5w7SHWoYQ2fABUYNLepDMJA+XdzTd283ycqKbyfe8Xcwbt9bmqrNJFfbJfeQ+KVTmm82fpvHF1He83EHzLlM84vE5qh/gfXCnFzDT3FdNNaRDemUH7VnJWUx3KugsmEsWnvfamrX1VoiMSHSMDT5F5OH8DQCMYPZAqf/IQ=", + "layer_level": 1 + }, + { + "id": "681cb8e8-add7-42cb-8297-72df3436bc74", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "权限管理API", + "description": "api-auth", + "prompt": "创建权限管理API的详细文档,涵盖用户、角色和租户管理功能。详细说明每个端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括菜单管理、角色管理、租户管理等接口,提供实际使用示例、错误处理策略和安全考虑。解释RBAC权限控制模型的实现细节,包括权限规则、角色继承和访问控制策略。提供客户端实现指南和性能优化建议,确保文档与代码库中的实际实现完全一致。", + "parent_id": "693df6d5-abb1-4b0e-b0ee-fa0cfcf10ec3", + "progress_status": "completed", + "dependent_files": "api/authority/,internal/controller/authority/", + "gmt_create": "2025-10-08T18:18:22+08:00", + "gmt_modified": "2025-10-08T18:27:26+08:00", + "raw_data": "WikiEncrypted:7ZB9yjzZwc/JkOb5fG5L62h4S7p46pJDygi2mv/I0XaEve9lYczBQSg9mSd5aOOh0poTp2DPKTMapy+4nMq7a037hv9Ush/mogb3Ipd/zY6F/7avn9o6k/F5fymHI3kmpJnb3Cch7lFHClRfGjy+Se/jm6hd5BP7wEVj0xeXaf2SNp+lLPIswTQky3nnRJ64SMVqGlPzMuw8slMCOic41UPWHSc79cUa7HywqwPkdqOtjMcNfL2oq0seuUd9uTnHTYmgQaW9ZGtro3eF+eO5JavVONGPJdDkZqjpv45FdnYSPFCxW3XDrIpT9zWVVPvYj2894UxAg7567zq9uv4n3Rwgk24a6sd2wZhOOGN/M/08rGq4AGs1inTW/jYL/FuOjHFx3HFSDrC8tetfeKhZ4pfFthpjUwkm+rp5dktITYBTL3FJYDE3JMf0BwdWEqWzHxvC5QtfYO3Gm+dmH7mVDtVzeXwfWiW9wqKe/mb7G3avYaNEPswqlbjUoA+wJHR6VxvOOBYakgaJ4Aetel2S0TjBpMxkrJcNoAxAkOtQnqvWZq4VZGeClnvqVNwHvzwvQIOeaEfCiJ1CFQiy5blGYaoCJobLWtZ6tX/vFxuAgNb10VJ1Jg2BAex2DPUG3lZOvWiTLNvEwLKeJKzQCt0nhrGTu0mCSEtOTcvJ2fEUbxqY/YHWpXrNVMmOADPzor6iM2M4ZDv47zV3Kre7/fDE141wJpHnrX6jNTUUcIBGpkGK7v5FrpjxV7cSce+ynBkQj1YVU2S4Ff7lKjZkU+Bdto6roSxfe8X91BU8lyXvO9RZaJ+08pexUfqvvhwGH41v+kg1ua1NxV6tpTj9izddT5Gjm/4Ytmf3wciHRCFvp9sxryPIZte4luZYGmyrmBCDvfBD2qnCPT1Ealw1PxZuENLD9I+aZTIACT40t+/zT7KDMYoPaegds4uDtr9Cxj/hFUUkBCpOibaQ+BmLU4zx3H7SO+GeIQ/tLKTdGjkMJ0KL8JBAdRrcfPq0pLRY7ax8nyaxk0F3HBiIOoO5Z94a62+uLnIi7tRxktQlaKdOOuKwzColXQea1nPflWTj0sYX", + "layer_level": 1 + }, + { + "id": "965a1a48-9a08-4f01-9b4f-1f1a51c82165", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "认证机制", + "description": "authentication", + "prompt": "创建kami_backend认证机制的详细文档。深入解释基于JWT的用户认证流程,包括令牌的生成、验证和刷新机制。描述登录接口的实现细节,分析auth.go中间件如何拦截请求并验证用户身份。说明用户凭证的处理方式、会话管理策略和令牌过期处理。提供认证流程的序列图,展示从用户登录到令牌验证的完整过程。记录认证相关的安全配置选项,如令牌有效期、加密算法和黑名单机制。为开发者提供认证集成指南和常见问题解决方案。", + "parent_id": "ad94de09-b7fe-48cd-9a8a-bcfa78565c2a", + "progress_status": "completed", + "dependent_files": "internal/middleware/auth.go,utility/token/user_token.go,internal/controller/sys_user_login/sys_user_login_v1_user_login.go", + "gmt_create": "2025-10-08T18:18:35+08:00", + "gmt_modified": "2025-10-08T18:27:44+08:00", + "raw_data": "WikiEncrypted:uxAckj1IXK2TQH//kEdeBEJk8OQlcivzGG3AR0HSFOo2ht3uRAHL8kInzlA+/LrT0yu/xcGyMMZDf6et32Zc35BW+5OWmSgFHiH3LFscU1wP+DwAH5n49Jy+7BmMwoZqTIxQqKngL0ubWEPVHEOa/2sdpoDYIKxaODRnZW1UQLeZCZw7PZBwRaBTsBF0wCwFd3pQ4sjeKp/gShXpg4nAmtCC/wmqHon1w4l7w3HhG5v3KEzsQfiYoUnjWAPo4otxkFypLPlJsIu7UtzpWYjliKqvJLuBnHY234gVrbqsq1CVHMkxNz+/xzJW1K+F4EGMB239Eg9Ua0R8c7IbOVKrh5h/cdlnwyikDYkBMvn34YMb8lXx+pSgxRO8QNGeuxyy2/Mn6lNZNt3BIl7BRo++j+f7LiPtEgl4dk5mFSeKqsxhXOCvvm8M8iwvFagjRJRuGUDjFoqL5txB7/lomd+GhqEK9Hu/rHoHKiZnx1FKGUk502ZuRI7IThAn/2Maxrd83T1wWkmXL/TTHxPJZEt1K5qxm2oRVGBTbUhqR9w9OxAZdhbGRW6ZEiLjYPBo8kGncrDBzLDT2K0X2avY/l9KX5SlwoDT1Lknt77WWromrjYeHYYm/Q9JMF1FM0f2l3bMtg1fhjKsKDOdFCHqKkLxEoY+kDHrINbuYY62gZoAyuxf/c1yC9r1mUCA3oUVCPEgzP1NmkrfPfYEM+VsKMoPkeB++F0crkF/tC73lIuV7drxAxM59kACqIC0QZXlbMcJyJRndirD7H9sd16sscpwqPw9c2mPM/+FLTx2PyRQExSHLWEyAdMZVrpDC4/r5GmsCOeNByvcwWIaAmvlbijoC1DFkztQI7x73+Pvutzv4jJ/TVE9RmF+B06DM5pTew3OJE5sRmxbM3DCiUUwt2SrzEk/qgqpyWdUs6PyAJ+62P8cMPv3WjlVOryAHjfsrBkAA8K1NKe4bAGwh1tEfWPVMMQHkMK2MOdwUQwKpCKy94PmvkNfgfkrwoz7kw8+/Csppg/0NuacaYkO95aWg9oyphJFE7yBQ3hpsMvIAZeMYCQIZrRX3NjgNSGOEW8tn+lxpUbiAJxSP7KwOpPLcjCKJN9CgEMBXUyem+f0c+bttlZ2UA4ugoKS4Lhbf+IhxTiqQRuSRhNssZoGl6JccTsbcHLyGfA2GEwWpGlNHuvmkNuwSoHBtAdcJcGs0UiDpZimnTloM/mZEhmj93cQ+TGRTw==", + "layer_level": 1 + }, + { + "id": "d49ad99c-afba-4362-af4e-ff689d5d94cd", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "电商平台集成", + "description": "e-commerce-integration", + "prompt": "创建kami_backend电商平台集成的详细文档。重点说明如何通过integration包集成京东、天猫、Ctrip和沃尔玛等第三方电商平台的API。详细解释各电商平台客户端的实现机制,包括认证方式、API调用模式、错误处理策略和重试机制。提供具体的代码示例,展示如何调用各平台的充值、兑换、账户查询等核心功能。文档应包含各电商平台API的配置参数说明、请求/响应数据结构、状态码含义和性能优化建议。解释集成过程中的技术决策,如为何选择特定的HTTP客户端配置、超时设置和连接池大小。提供常见集成问题的故障排除指南,如认证失败、接口限流、数据格式不匹配等解决方案。", + "parent_id": "050aabef-4c8c-4892-849c-74a2e3feb22b", + "progress_status": "completed", + "dependent_files": "utility/integration/redeem/,utility/integration/originalJd/,utility/integration/tmall/,utility/integration/ctrip/,utility/integration/walmart/", + "gmt_create": "2025-10-08T18:18:35+08:00", + "gmt_modified": "2025-10-11T17:28:30+08:00", + "raw_data": "WikiEncrypted:eeiDNSD57OEWfAciOcmA/WWLdtppDTPAYazqwHQI8gYrr96LHBAPdU1K0CNWQJGmBYN8Ly65QOd2X0afpX1xGU9DNB1t8K/iDMRSfwvA1pVT2os/zJkiA9KlsgbcuLoa3HZ3Vho4EypxozxwL5CZrY0ohr9Uz9mNi7BSVymdzC7AipdxoiuZukHeQAVPj//51uAIT93KbN2VcINKNQOHWC9bERRTU/IPP4O0TX+GcG3MFUTAEBVV7BWXBxFet4h1vIGgro1riiblS31vItDrFn+/yxwMI28z0GGl7UnTIJ83p3ZaustBmzdbcX4RrjD24T1sXoCU1pJd9I6FIwiXs5Rsvp+fyXZHfSDmKI5RBom7g0hyW0A1wKMF4XhRlRmV/Eoaw++WFan6rUuw7NoyblES9CidVbd+NKq2TnHg/puAmFS/RPnb8fBiJK3VcLbbAIwko+ZcILI/6vOb2tHVyh10hnwdkfUqV2SjbOvDsaKJmLa8RClsYhIfGalgM0dSG2KieS6nIu0MV0p/nbUvDgZt/DKtzQLiuMOtfrgFlf0IPa8EqyOOmkm51tKrtZLC+Mrg5yw7A3sxa9udjy87/8JK50o7FHGrRMBd3KgeCVRpF//vHBI3MjFu5oLYdngQou4aGZayI9tFyGh/dpXom9OUzxKNIeiiXeRyRi5cmJW181X7QTgKSzSf6XVT4WC7KL0sKOns00pJsOnUBBDF1QB7i/UatGiq4+7NFIG/frRFYs6eah0hm47dgfnMJF1O9uWQDDOjtlUihErLwj2Hu8QKb25padRc1s7aDTqBHMY1CUXj2nNCX6sP3JMHN5mvNwOnwJ1EB+V6ieiPhoObEv8DlOir2xYJ8zoPrMEza2DmeWIrLBJCkIXxFSLm3HcnoCWkk0MLgc+nh4T2kcpHRDTjLOw7qMPsiCmum7agdc1pVogeB9tZmjixjwa2SxY1KBcG8koNuczJJ/UYpZqgkIJZJ00AZm5kf1tNDYtFhAeCpnp68Qxn0J5NX6LIbKZsZqI2rRwSn0rlPRF4k55mVYEYQhtTbPgJCbfvwgWMO35tqwnfkkaPlFU3901Aegh9ITp29x1BoVxrtOmko9jfXL/kZoUpsjltC0dljOcYaGrqEKOd2MPncWZvnqMl1vTicAeqrpUVyh7lHyeVRROMTERd4Nhca8IybwA6CFav8C2mdUPrqhGPfjhUjQGpW/YIFbafKB7/R4RcGLIT5yhvt74GBwnmkQSabKGcyUKFmOcPfg7joCU/hrpbadRv1Q30+SMCGqNp3SRAw9XTIQfzDnHakGO6ynwhmwcFCFK5tLUrKBE+1YKglo1ZeekauOSNwofCSPYYM1c+wmqJ8ZbPIBPQr1qyK3erNtoENdVsDfg/X9uRg80ARWhF3eYZlfgR31IEWHvgib7F8A0V9UYMkNtNgtE/Ti0bwYx/LPMFB2g3v258a6RXp/5OgkgK5NA4rvX44KHo7FvOg7GhyhxEG/5gHy5HWqLhwuFeSqddDVDd6X7KJiD0QWXnE4cDxyyP+a83ChVcPeUK9gOvj3GR5v/dIdMoHqG+2Y+9Das9Rq7CgNYIBlvgWh5szvMGSiigNU0IIB240CcEthiH+aBB6A==", + "layer_level": 1 + }, + { + "id": "dfd2209f-82b2-4b3c-84b4-8fa7f91207e5", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "配置管理", + "description": "config_management", + "prompt": "创建kami_backend配置管理的详细文档。深入分析manifest/config/config.yaml文件中的各项配置参数,包括数据库连接、Redis缓存、OpenTelemetry监控、第三方服务集成等配置项的具体含义和取值范围。解释不同环境(开发、测试、生产)下的配置差异和最佳实践。描述配置文件的加载机制和优先级。提供配置参数的验证方法和常见配置错误的排查指南。包含实际的配置示例和安全配置建议。", + "parent_id": "519aff94-32db-4783-85f1-071d6c314ff3", + "progress_status": "completed", + "dependent_files": "manifest/config/config.yaml,hack/config.yaml", + "gmt_create": "2025-10-08T18:18:36+08:00", + "gmt_modified": "2025-10-08T18:28:10+08:00", + "raw_data": "WikiEncrypted:aC5ZtUyEKPSxjzg//aVllBdOkNxBMxnGnLp2RLAVJ7xmBnEGgBX+Mwrm1aKR9Yfw9YgupCqzpiJ1vOAMLIumDoo0hEmndSovwR9ewFhwUm2+jy33bebRLGTcBVfCT0hl6K8y4mrs2DbU7BLgJ5bYsbaZ7u/W1k7Z3hUMv6Ap+addjOylxie0Wd/h9MAuuJ5DhaZCv91V4vUGh3QwBl0tY/uBMHgY+4DesQO1vIXHpEKsl4L6nKtG/oRnMzleCie5X4bCAugaQoOwEkJa7OeSWiseQb9x9UtaFxIWtRcMzwT8ZTHhIswx5dFQejKZ8MGUPpR69In1IYKUEgxxxg8VnFzNJtKZqWnHEyMIA0+AwJSEg33E3SPBbYYUuiaWYd69nnHjCWS9oKItfci8fuUM0H8LwgqD0oXJuavM8jxXZmYx4QhUqpI9P9L8FYxtnlhNrrR7YhvoPfPicE/YF21ZmdFJv8XyWGB/zQGVH7+PXPRHlWTy8pyMBtHlojwlnLTLzJeER7cWApDYyZF++eA/RUm0UK9ajKhqsz8DG9CeFtAG7SJb8oHHjJKEHmHH0FbwSQelN9g6e29mrJUlYoGs+hDeGdAq9VTC9vxaJRXTP+OwbA9Dk8bxlslPIO9LEDuofrw0jpthtTJOiJA76VUU+69Es4ezrj2SJRCt19lzub80YZ2q6aqPQ4/rdZNdvZZpwF/HSOONmB4B0y01Js7k4TgJzAt4IWFsPex3xRKVCEd+gBVBEsJMGcXYyL6NyJoCnn4YRYf6s3rlXZGWiw6Z5YV2x4th4UQkyk5DXk/A6gFCA4hzZLqDbiN1/LFMDTrvpvd3E0wMc5w5ZS0+Sw7UhouoBc7NGOQulWLLN2yMHHkvcNAooOxVdkG+pU+3nEtjlh+tZph0xwx3ZJpPrIm0wNDPRi8erpiMPsnXqpzRSakwEaxUqpuCV4lzjnNLTSBgxLkvQEedYYb/vpbn2+MsERe7VSvy91QoRvuDbrL9ZcZ2JMhQTuZoZtmunnFLWuJlUTddZCsY1jgyj5ZTY40Z4Q==", + "layer_level": 1 + }, + { + "id": "f7bc4c8d-64a0-4c2c-a17e-cd38987a94ef", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "Apple卡密管理逻辑", + "description": "apple-card-logic", + "prompt": "创建Apple卡密管理业务逻辑的详细文档。深入阐述Apple卡密账户的创建、更新、删除和状态管理流程,包括账户信息、钱包余额、历史记录的管理。详细说明Apple卡密充值逻辑,涵盖充值提交、iTunes回调处理、充值历史记录、重复卡密处理、充值状态同步等核心功能。解释Apple卡密账户与订单系统、支付系统的集成模式。提供具体的代码示例,展示关键业务方法如账户创建、充值处理的实现细节。记录Apple卡密管理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案。", + "parent_id": "eaa525f4-7640-4d4e-84ae-7624f8b5c790", + "progress_status": "completed", + "dependent_files": "internal/logic/card_apple_account/account.go,internal/logic/card_apple_account/history.go,internal/logic/card_apple_account/status.go,internal/logic/card_apple_account/wallet.go,internal/service/card_apple_account.go,internal/controller/card_info_apple/card_info_apple_v1_card_info_create.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_submit.go", + "gmt_create": "2025-10-08T18:18:47+08:00", + "gmt_modified": "2025-10-08T18:37:52+08:00", + "raw_data": "WikiEncrypted:ngLqLViTt5zzUmJHZ62DoNzwaMeVTHTu/rGJRszUYK4GblvZyvqVED6wYf1zYH+sjjgavfkzdDpZX/iLMRhlT1XpbU08T5DcNZVvkdoFvwJ6/tteal0zHDJCrSCMrAbPsxqMSW3hCc7alG2OcMhRpTczsl2qchYBK+AtYkv2QeZ65irR51l47RDtevSCnPJkDMWPgHbHnGiKCliBonQJcBME992aQspXUAM0YNH5pw2s15QF+wFfzVDycltGbYenpmbf8UtSlvTidTZ5GexkYZudc3GzMlaW6466mg79Xe4csqslSGY+0LhjQJ+iehgfFI7KsrbESR0NyUGu47BSAdWVTUzFJdceVpbb4uXDq09vbineTVgRewLIp9mm/leT8+byfJ3+VLtk0Pnkzx8RqfLfPb05fMPfyanR75qcDpE+LGpoS3BOpBaOW3k1Qzu3RLIOc07VPABJSj5dMT9erlMryvH0X4Dw80UcFu+mpQf04ifL5dCitAkHBT8sKE5z6/v6tpLUnM+7OwAkMkur672cn9+aARy834jrdoklL/hXqel6EGEIRRcCwzvpT9DaxNECyf7l5y9FkZO+tX5ORO7eAt0KBS6YknKQj0qkDFhOu7nQzm4o1iSzHLDCLO8wgT23CsuKzpjD/w5jCwL/UZKV6V577luwhMCh729g6pMilL3w054dypJuU0/InDyPk0SMzOVRHjFSDWB4gIkP77t4J95AdU1yxAT2CX0SBkoaqXNBc92PgjZGOvU/DmDkmMgj36frOk3ZVoJ2yjrIeTOGKp0152OFJw6rtzTbm99NgSJIbnINxCFqs434RzLj6rwLqvzTnmvHHpdlj0slCfnJAz7jXbQH8+dJ/4OchkvJK2YOQQJAXoPFhixVBeuVlbydhfrCBbDQnBa5A1CYIN8VQTmtdHL56suCkxFC1EwxrRhyeYNdurFysRim7TchES/UKgKhDbIhA3WvfGL5izZ0VwJe+xFcelmLFw/wnk45UD6v+IMj6budI+dSOkHW053gM7HJy5MmoDWk/tMje92upS50Namhu6vmi+/xBZ2GZONGDqppMDcjtZXR8s5Am3Qb8Gp/hLJqvM+1vfzL1NYZlw6DrV5JzdTIpwLoZQYZGaCecjwXUeQUoEamSQoGKcSHtlPBY8+5cp3GhPQzUYDwu7Yn9IzU/y4j8uaXYe0w8nykbFmMrLdDJN0V2Wk/1PgXzHffqsUk7xGu17sSPPCNoa7aXDnapKF/Ko0SNuZT9TUc4Mtq6IFaDvxYHELbfqIBkTewQ+GpVRFoaOeJfrwQAUlH42ZIJzkKNVOPBHZmuEydcGCp4s8xGmyxRf63j7hjmHf+6i0vEaRAxDK3Ac4pcwHgN5ITRDeAxR0v1HTnGd9E23SmOCIWNms5UFCAq9emiqrAW20X5H90eOpg6v0YFyR3Wju1Nlg1BVcG3ipTzCrht+ZNszH+CPNqA6b/NiN/CaidQw8eWfx9FmOLq8h+cVxUVlps0rVHghs3y9LnzqIB8Ylvqe0ZY1pzH2/3CReDGvmULm9jEINUte5i5akwy9CGNt43RPieHwPS7a6xlO39Hg+Rwk3gzNG7eNZ3SozT65lxOkmYJP+85KOQFW9R6MZoJdE6+VMpBZTpcMtlEs4rrkYb5DVDPKxBIt8cCnYWYXAYvxhOIhIE29RV9DSgRkCVcyuLktesXDXRuoMf6xnE91EcmjeHg9mZduNU9HF4jGmiKoBh2MVO+85QFycflsoAFQnJgxiGYLSln34Kx8QeigkYKBjgZhGWdgWM", + "layer_level": 2 + }, + { + "id": "6810876b-78f1-4c9d-a2e4-a82d03615272", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "IP限制机制", + "description": "ip-restriction", + "prompt": "创建kami_backend IP限制机制的详细文档。深入阐述IP访问限制的实现原理,包括IP记录的存储结构、黑白名单管理机制和访问控制策略。详细说明IP限制规则的配置方法、查询接口和生效流程。解释IP记录的缓存机制和快速查询算法,以及如何优化大规模IP数据的查询性能。提供IP限制配置的最佳实践和常见使用场景示例,如防止恶意爬虫、限制异常登录等。包含IP限制与其他安全机制(如登录频率限制)的集成方式。", + "parent_id": "93bada60-b20a-4977-b82c-eca224ca34f6", + "progress_status": "completed", + "dependent_files": "internal/logic/restriction/ip_record.go,internal/consts/restriction.go,internal/controller/restriction/restriction_v1_check_ip_allowed.go", + "gmt_create": "2025-10-08T18:18:52+08:00", + "gmt_modified": "2025-10-08T18:38:32+08:00", + "raw_data": "WikiEncrypted:6hVxnL7axMQmHgJLo0JNgWqWpJf6Px2W79mWMsxJ9TGAvR3rE3JrdX51+6StzcOfTkIVdbtImBko043YZPW2NpQGSrhOvIBZ27Yj1kGXfDgKwzSiZgD7IgUSEukesfljr6YXe1Q2MQmb4gz6SbybNWCkscoeZqQxw+/F5u7/ZqD+of8mjvclrK2HdQ0f7qpOqL6gTI4360e6ogzBd+A4GTk9+iM4/87yyUTRsPY5266M9J+7lCbw7h39nIMIrG3+vw3Qhwzfp7vBd0RN8vKyiYM6wTYnrlWjImpk6UBHVNT2EApndrmgKuy8PAvVdmxy2U5c+OwjKzRT6mFutG2qUBiDz7jnmVCz0RlG6ShEfxqMtOwDgTWnYHedxfbiSYb6HRA82NfphG42/U31qwKqWzObwwmMtaRX2HSMkUHDS0BPpycfGon8TXEg00M3I9MKsfRKCsGpHvT83YE1099/x3elNaqplDImzOvrspp1Ww3wwyy8by0mbsPJZWGdzekPsyt13nQBc7Vp8UaIGZBCqOGgDgBYBP75d1+2FCbN5u7Vomxc7rpbbL8EO1WPKhyWnj8v9zXDFYnbwAfCzJsG77bpTc/35U4TLTMVIKHyndtCnKFczkt3+3F+baIz82Rve8Y9SN1Pa6QT7/MvYMdf9yc1Yn2LwCr4mi1VLm6Y2xHkHuqmT3Lhpsv66jX+CUNH8OoyaIA6rdD/WaFaCXAGwq14E8+23QebCH7eIs95XPJpn/iY4E5uC15ksm40bpLVrkBfJKYwjpjqXBSRehPUkBhIra/vf0CE9JgWf5bjqVL5jDpIxN+7nv37IDi/IDo8C8ILpLkU1Q/EicEO3edXr/3sfH1RpSRX4GLKVUYSNFZDCHcKedYsdSxF+8yMxsHw/FmtnMpCkmFuZONUqjahCIUVMPR8GE8MvJ4UUF6u8nx6OSpniwGuOWSp7n2yR2k+n5D0vwb4dlQaVT+kyO5Fn774pNyseCf04jPpL+7Xj8ypbaG+QuX/wBnkZcGxMd82I3ROQ7LVV182CFYGiIla1Khzf+8jqmOM3VG0n/5W90+3ZsMEZws3NjYjeQ8my2PUYvXxgONF4K/jj+rn8F6oqYvLAs5EOwgajo3kq7DekF8QjvctYQ42G9S7HpYiCpd2DvkEwWHuX+QvE8xaCOklT9uhbJnKWIB5vkAIZS4JwdfTXzCN/y+6rRLPKlSgJTvdUw9j2jbYN73r9OYkgJnDvshWdFEMmuTeO6/CxAcAz8cpu87IzVJRhuWVacGl1p7tTUTO/t5JrfPYaR8QT5qzQg==", + "layer_level": 2 + }, + { + "id": "cae0b323-5cd0-47e9-a902-06ceae30545f", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "Apple订单处理", + "description": "apple-order-processing", + "prompt": "创建Apple卡密订单处理的详细文档。深入解析Apple卡密充值订单的创建、状态管理、回调处理和历史记录功能。详细说明订单与Apple账户的关联机制、充值金额验证流程以及iTunes回调处理逻辑。阐述订单状态机的转换规则,包括待处理、处理中、成功、失败等状态的触发条件。解释订单幂等性保证机制和事务管理策略。提供订单处理性能优化建议和常见问题解决方案,包括重复订单处理、回调验证失败等场景。", + "parent_id": "5ffd09f4-939b-4b8b-a254-494937471526", + "progress_status": "completed", + "dependent_files": "internal/logic/card_apple_order/callback.go,internal/logic/card_apple_order/order.go,internal/logic/card_apple_order/status.go,internal/service/card_apple_order.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_submit.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_handler.go", + "gmt_create": "2025-10-08T18:18:55+08:00", + "gmt_modified": "2025-10-08T18:38:12+08:00", + "raw_data": "WikiEncrypted:ngLqLViTt5zzUmJHZ62DoL9fTXxfO9Um+u6vywbuqNlVAJBbx45l1XJxh5AkoaMelVjKwL/Tj+bOrJfzH0FvH7yiW6YplByZy7TzEt6ow9CYvbYT90NuRLJkRjSCugg6/dx9+rLZH4VKOao3RXIucOtBz7EEcNYIwVNFOS1GHEfs0ENNKNwr8pOYRxwxRyv/LZi0/nOwttovh7UJtj1aAoNbxGzLdk4o1Obw1qv0xiRbdPf4tmEMs+6in1MbhK20W6G5iG9KS+K82ZmhTOvQbR6yepLzGCxTNuRnL9QHUF4QjqpdQNDaDB8mruCNRHJIjeEoEqg+dd+c3Q5j3F5UmI8FTiV5DlaAG1HtSljleUgzo6I2zLaT2VNqWpoRki7b3U8mKqqdOUBodU72l0jUUDngrpYRcT5nzOV6E/7lkDlGCS+DVCqHTz7GB0tKmxi7TAEX2c2XB4T5i4pKe2QgRmEYNkZ0aschiY+kJMxr0/BdNuf059DTFuINcsvhV/06GfXnSa7xklhb48u2U1nBJ+9pQz70XKoA2kEsBB6/lHay5FWj/n+85QTtGQN+jIyBC3H+3ov0qj3dlU2HRucRhWGP2rLi3R10uwIdfOHIcIQqs8qSzTq2+nsQ18r0ku0YMh4vc0lu6IUHgzo/tNAhxgVxZ61M2MZixEtQA9Yg6b6YzRsnDM/E+LHrfcGl0cfn0PqMqR7mcFceNiSrkAa1D8yAry4GYZwKsvvqsamgswj51TbYXsMARaVOYlxndMVjpDIE0R/TWXh3Pv3nGygHbvoP1xDsOuuzEjJ3E/sILuEt2hxs9nO+5RLaweL9K6EVVDdI+PofLell3Zxfc2mjhHBJFLgJhaoI2G+h1u96pR3e3f6NlMrq7G/sLb9AVmODF3Ys/OPBj1Tk1DuwjkRhYqTsmp6I1t76xgggXWykt9Pu571SHlU4Jr3K2f4JD35/bG2UEin9h26K3zVkdUJEQgZCyrJ7CKXiUH+5LaoZ8q0JtTcBrS9HrWwqD2NVrcV80cjQqZ7PrmVzYYU6ft1YrVpcA+fae6YM23PQinDmGUQOG+8/vOqe+Ejozo/QecvLkXBb6J1KzI9x6ycG+PQL/21DaSugH0BRwh/S1pQxiETPLm7dSg8iL5NTU0Y/A0f1+tZU3N677N0TgaHCL9LvDn3wU+CMnvH83k5MyDjIK1KGjn03ywuWIFmcEG3yevlXVvlOkFmOV8QPfc2yPL9ffds6eQ3d7kQ/XrScyX7Px5kL8Y2b1YxqjTVpKPGwDPIRqHEAuSj/C0WNNjCy/bSpoC4426OwW9FhyXbKOl8Ig5QZF0uUPLaFCC5k9xM0Be7fOzhh1dCFwyiqpPEmmSgIrEFOp37tQbtOf5U6FlPjQtduifVeLTBkhQCoqHZSJ9l9I+vBxhEnk8AfNH9L1B4ekpTRpg/rGu8tLjj1fPpCAS2MkpkiPDAUvmsGuvNfSTyI", + "layer_level": 2 + }, + { + "id": "b5d20329-a5b6-4db0-8325-2b83ee9a2c52", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "权限规则管理", + "description": "permission-management", + "prompt": "创建kami_backend权限规则管理的详细文档。深入阐述基于Casbin的RBAC权限控制系统的实现机制,包括角色、权限规则和菜单权限的管理流程。详细说明权限策略的定义、存储和查询方式,以及权限验证中间件的工作原理。提供权限配置的最佳实践,包括角色创建、权限分配和策略更新的具体实现。解释权限继承、权限检查和权限缓存的实现细节。包含安全审计建议和常见权限问题的解决方案。", + "parent_id": "495d1fcb-e69f-41b5-b893-4efb8ffae28c", + "progress_status": "completed", + "dependent_files": "internal/logic/sys_auth/sysAuth.go,internal/service/sys_auth.go,internal/service/sys_casbin.go,internal/controller/sys_auth_rule/,internal/logic/sys_auth_rule/", + "gmt_create": "2025-10-08T18:19:01+08:00", + "gmt_modified": "2025-10-08T18:39:14+08:00", + "raw_data": "WikiEncrypted:arCjhUL6OOP3tq0tMlrtoPZUVARRVnTw525aYFrCIqbEG6QBOjm5e3du5Qm/SOW7RO+umAfB9TSxOT9xkUJQdGFxAzVCFKV/dT+oxnPEIxudZIt7DFP/TqJj390wLSA3TU2jx56lHjMkFbxTB3b+YK2bsUYaxXxgyUYsg0aL1elmmAc05EfOHqD1LjDiv13jT+xsx4f9XrUL+TR6CsMPuCNe3QcVr5JgPY44b59kqygg/oDcazxYTXYcd1fDW1grWYSfWQkLco+lGdxj9phlDjgdV20doL4YrYRQFa2G5te/KDzwIbj7q3oIkGXE1kGQtGuZBMigB6q9X9XZ7RkrZQ8eu73QLCJ3QmHLqxuKGFjQd+/jFHdJ3UBPXhoQNxoLN4ZbS4mmZ3Y27p7n6dKJSJsiJs9ldkimugCR57btqjTDl2LgOQfyimee1zAkEWL7DQt739PUBao/q60R56DC+CFFnpz0YNyMQGoCirk6Ldt5A2ciMtpjGnnAUpfBU4TJd5q5u7Kjw5Feyc9KJvUrJmVNaYX3Ri9BfKEFww59fX9z0V517QOQlX3Ejk1ENOIKIJfp85SAN5orKGmHPhCsG96FgTckuXKW1w+z2ec4H5P5XQ5aR24pC2OGEJVEx7KdQO/Et9qwNo5+cQwLsKfgPgOccuSZZrJVwB5OsTAKmyzkamBgYkOxPxPJvhk4t4knW12lEbYdH98p10a5fiS60NuW+9XH2cw1psC2W5wmFKEXk8j+sHuDcC8FYoR/COQh+COy7rycQMmFWhV+sls04kut4EjUgjEciFqTE0I++4nmaqnqOJydK+FtdNQA+d5v0Y6867bjo06EJ3urA4nkmu5acphb81F4LldYqZIc7UogJerTmW7eN5sAC9jPFef+vs6OW9CmlCueUyNsFUy+lMIvKOIFFBUPSmHYTx9+cPGCBmUCpPMeS6/oF2CCnrbWlKh5NlSjVQILLtN25oqUUrdNrYuvXSPyCjtL420Sw/qQDiLAMvVskbgfv0Ntj7TuZEJ/7YYZt384EyDG4fuI3rdwwnnFQF1yoM8GNBiIUNIx9ohlrWW485KoP9GQL4UmudRw115B3ivAT024y0njHuYfIm9e9wXCq2AxLqge0ThrUeIu2ywFZ1kfogcSe4VtOwBYBXJY2hvGZ7osk39uhBziC7u/OeFFhIE5xy71Qe5Iyx0g1DW/hsgkmrGcMXmSAWhj2lfDxSEu+1InuZsoU5locomPjLn7k5KZyY0oIIb41X/A4XstXmP3zV7Y5gw/QrLpqqIaDcieSsC/8+KSdo8KjrcxT9AryccbHznB4MfzLBQFfQ5xIFXUUAu+unDW", + "layer_level": 2 + }, + { + "id": "cc12ac77-8ff2-43e0-b014-8cbffbaa022d", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "菜单管理API", + "description": "api-auth-menu", + "prompt": "创建菜单管理API的详细文档,涵盖菜单的增删改查操作。详细说明创建菜单、更新菜单、删除菜单和获取菜单列表等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括请求参数、请求体结构和响应数据格式。解释菜单权限在RBAC模型中的作用,以及如何通过菜单控制用户界面访问权限。文档应包含错误处理策略、安全考虑和性能优化建议,确保与代码库中的实际实现完全一致。", + "parent_id": "681cb8e8-add7-42cb-8297-72df3436bc74", + "progress_status": "completed", + "dependent_files": "api/authority/v1/menu.go,internal/controller/authority/authority_v1_menu_create.go,internal/controller/authority/authority_v1_menu_update.go,internal/controller/authority/authority_v1_menu_delete.go,internal/controller/authority/authority_v1_menu_list.go", + "gmt_create": "2025-10-08T18:19:07+08:00", + "gmt_modified": "2025-10-08T18:39:22+08:00", + "raw_data": "WikiEncrypted:7ZB9yjzZwc/JkOb5fG5L608NUXTqXtsly/V+7mrgNl4fXCVjsk9UflvLgGY7iZccAEBf/aM1MapiSKTXNs/zbzpx9CVSpDtL4kRyFP/nB0eNSxL+5bcbTM2i5VPD7Scw4QcOQ+DBsAcp2x8iVBNdbrPqHKZSPj0k9Zm7unBJR93y24WMhZXw6Foh9dJT3F6boHwV1r7mRIVCWk/OmfPLAm8RogxmVlERIpk4K4ryYbQH2zY1b5BpwKQGGJfTOsRzhwHLDZBQ3x1yFrFuDaWYh4XcU70HlgKB6rCbainrA4NI1Nu/AsBeLo4yrvUg++xR/z42ATRrt7hOc5XCo7ItIxWLXk5qX4w0o8i5zVUduNgI/mov9HkvFA0pQfEJITFxRnikDzvlfxqSs51OenVMe1LOT4w5vu5sSQavinT02sHlojgrtLQJaV9TH70JJIedo92erwFuQGWpbb3lUiNMlD3KddW2mEBuE4V1HL4+4LK1LwSIcMdfRWskGyLEiLa4FpdKpUDOx542or+Hnn5hQFat1UgD5iry3xuc5zyBxNF5IfNToDMormpHTcOtJS0+xb0E7R8kq/AOSGwMYqzMy5/OTLBS9OM/4ajQjDw37CdyC+RaIrV9i4qPudBA+6/y+C2igHgjJq7DSPZV0Ne6Mjfhmn3MYfwREBffLwgWO2UjRAlRp3+AxndaIiSp926ALrj2jT+CI3ruhXVAFeRXgIFSTM8R1DqzHbjmEJun/Wdkl1H7g/DPMUYJZZkCwJ8T3EjVZKmwpnw/dGc1E37pCnRe4sUPASdAvpzld5qzArnNgN0kg3BKgrzPCy5OXc6/WGnOKmey4/KqpQ5XlzdaMWOGmGgnHLSk/RUYtC1SP1hxphvb5yWu08wYUJ6HcfkeU7bFW8tauF5XeJvfCEW8TWYQzn+badk1AYqDl5se69K696bKzt8CMrRzlPGo/4k4XDDItQuzNMN1ORffURgjY+zzFNaWsc740n2KxmDPnMx7lZz4fgMgT4VEFr8I3TrbKyspdnRS/Ua0nOeqQYkPqYX4cflqgTp2kRcT31GO3GVsQtjIBGtyngYq9r4J83pWUgBjyKmAxPYreAv7QpylmIfl1JS+eLtNQ5Y7rSoX08osbb+2lLxiF9DuMOmJ4J6db9bZE74ODUfD+km4SO2lTb0dK4lNALbsoB7Ak0nLbv3t0cSUIOV8GoPcCF+ccK007O5iVRWdR1sVJqega2Wm/P8v3ATgBIezWvlcgCuuigRzF07Hglbp4gWbXoJUWe8J18olmRvBE61PQbmXGl4d1P2hz+sdtcVZDVSOOHlzToNVsDZ+wYQ5MRZlsxowtpQBPNxp2KZ/JqAbOXZqBFjZV1ilFGxIceEX65E/dBAQCR8=", + "layer_level": 2 + }, + { + "id": "071ef93d-b914-433a-b69c-a4ec42c36381", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "订单表单管理", + "description": "api-order-form", + "prompt": "创建订单表单管理API的详细文档,涵盖订单创建、更新、查询和删除等操作。详细说明POST /api/v1/order/form/create、PUT /api/v1/order/form/update、GET /api/v1/order/form/list和DELETE /api/v1/order/form/delete等端点的HTTP方法、请求参数、响应格式和认证机制。文档应包括订单表单的数据结构定义、字段验证规则、业务逻辑约束和状态转换规则。提供实际使用示例,展示如何通过API创建和管理订单表单,包括成功和失败场景的处理。解释订单表单与订单日志、订单汇总之间的关系,以及在订单生命周期中的作用。提供错误处理策略、安全考虑和性能优化建议,确保文档与代码库中的实际实现完全一致。", + "parent_id": "079920b2-aa64-48aa-a92d-8decf24623b1", + "progress_status": "completed", + "dependent_files": "api/order/v1/form.go,internal/controller/order/order_v1_order_form_create.go,internal/controller/order/order_v1_order_form_update.go,internal/controller/order/order_v1_order_form_list.go,internal/controller/order/order_v1_order_form_delete.go", + "gmt_create": "2025-10-08T18:19:17+08:00", + "gmt_modified": "2025-10-08T18:39:17+08:00", + "raw_data": "WikiEncrypted:9qHpiFX/XrbQzm4K3sHnDKeQ1ofxi7BpK4t1qblkOmeHP5ICQmtKx25CPhfRyI6JBsxUD0cDPTYePaevb5jRJ4N5UfH52R/A0sCoeHgOffI/Z2bCUnX8HfPni76+JvZ/5KiEMF1BtsucVmvnNrZKG/vXeChD7yIQ/Hynx08nWaix6LoUNDGCNtoC7Rvcq5pwBvmvijbB/9dvXWAZCeFb8Zgsh4yS7eXAvzcCJ5kO9KlEIK1mhTS1QbKrJSnnGF07DnKNP9o44QFrJabu6m7z20nwoBIDlsOYN5bnOIonGMyvnhu4o7c6GaQ9SXfZl02ppfoNmPkB5cSaFVL/gT4uF3P3XgrBxqQCng5uzkw9XsWiQgcyHG7uTOnIojcNVTxrEvt9TPvYxEh6F1vSsPpcyiJrfUBKObZ+zdhrA0TTTmd2dtYbNiZ9eg9eNkQbMpa3XgW7WJ2NeBn8xfwpYJnMpByua+fvAFz5wFGUr2+ppDZMWfo7K/+rf7Eb4vDWzdRM2C905l9WJcyVUCkBDRPvNLt//IJf1k1+IjoFeep3o0OH1ElX4hPdp1i8ioU9H4KpWV24bkd6yUFrPGtFZ0b23WjrmH5fA+FVZVzBaV144BT25wE5k4Jfz0nEHDq5GhHw7uT5brs7J70OV+v3fwspfsS/Zn4nB78JFGQOWSi2oDYb6DYJ1X8PRg6nY98WDaXSBTBrk9hUdEn+2KovS0bWZ+HAB0zEK4A3etAUTqne6EGvhXvFiXydju3sCL3OWPTP5udHh6/+DoQxZRtmmbKrPOtfYLLr0kWB+3UD98nG1gi+wu2wMcZPTbafai8kRxOOdMr6zucXJ84ZmHOjecLFMQB1WVRbM1B3jqP3lIcbVYEUpKCVXORnxy4Z0QV6/CeVV3NN5Vk8/TVtXtU/34Z8fLJ8qBu28N/14F/fyGhNV3BSWCXnquZ1IbrRG0fjWzt+02vsa5kN+HI/a9PPqmccUWAfNrJwKdLw1IQrVCIShp/nU/VGFMZQ3yn9yYioS3W+2Nvl3VT06cfIFBEtotJNDZ7ZUZXyr8RATD97frEqc4Y3kxYXLgunvq3o07n2n1OAOb/SIJrdVOdDoP1aFbDb2F/62u0bDND+KP0Ck+T5utpVO6bafk1XckldVoWH3cn9/mXEe2huF4bk+HxPhAdawxi9xH6oLO1EI0gFoLqnLi37c4a6pUs68fciZtR71WPU/dlwhLOd3ix589lgp9vk+tMoijKY8QiAdFLArqL2queZabhWTfmz0FaDJaoReG/RwKphYYsYV1JopUf+LM/Zp8p7DqptZ+Rz/tt6LCV9DQi33goXexrkNjFpAP3XQlgdozNaqWiFvLcf+7ulDXaXa8n7kH0gZrBNCBVJ3sw2C/0ACuvN9ZARnGEJqrpkYD5egpAPB6t+Em5yekNgxAnU2O9e6UT4loHNgE804ky4vA22ysES5j8aqp4BrAh/6u6/x8lE525ri0j3A91C5mwWkYd81t/pOF4o+0YAoBKN0LG5y+/Hi3dIqa0L/erx254GlfIckX3kcIHw3x2mpqvSiGQfghtS4Jgi09lIhF9heuUa01Esc0oxypx1SvuJa/9UZaCflaxLJhrHefnDrzln4Dklv/WOYxn9kCcvpGu+OhHstudVrTU3EnZZrtGfHso3TN10ucyBC1zHgyo121lQjg==", + "layer_level": 2 + }, + { + "id": "04d0a6d4-e8a9-4e8c-a8f2-bee9fd409e56", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "Apple卡密管理API", + "description": "api-card-info-apple", + "prompt": "创建Apple卡密管理API的详细文档,涵盖账户管理、充值处理、订单回调等接口。详细说明账户创建、状态管理、充值提交、历史查询等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括批量导入卡密、充值状态查询、重复卡密处理等场景。解释Apple卡密特有的iTunes回调机制和防刷单规则,提供错误处理策略和安全考虑。文档应包含客户端实现指南和性能优化建议,特别关注Apple平台的特殊要求和限制。", + "parent_id": "0d28da6e-d972-4227-9fc4-ecf26d5c6b2d", + "progress_status": "completed", + "dependent_files": "api/card_info_apple/v1/account_info.go,api/card_info_apple/v1/order.go,api/card_info_apple/v1/config.go,internal/controller/card_info_apple/card_info_apple_v1_card_info_create.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_submit.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_callback.go,internal/logic/card_apple_account/account.go,internal/logic/card_apple_order/order.go", + "gmt_create": "2025-10-08T18:19:17+08:00", + "gmt_modified": "2025-10-08T18:41:41+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBn7TEZqfgCsLA703mVGMZArD3ybeGVU9mamcCr0oAS6JoQI7AUsc5kkDVupPir3EyB0ASCWYKnCf1ywH8t5TiWXMOBEd2IXYke6xZIuMmkfI4vQ8pmtl6ZGzsEW+v8ATGdgc/gC3dxkOgZfYL6i3bx5NnZFHluGgQQq+VPTVQLx/gNtmTw8QGU3n/7XhmqQtUhi4VDDzZwONwskeuDx7RVD1h5iepp0jdpixdWIwY/lXlDCPaH0x1lRdgUIk9ujJuZXn9N61WiU0ivAduNinSq8AqHNQ0DrV1Fggqy2kJ543LiR3eU9ditGTLgtpUd2WnA+SMPDbtGFXA7plzUkubPHUayfbLtiF9SaLCjeeQzLLxXaCZFDjbhJP3rEKfUvSfveLTP8MZbpXUiaOwo0iBBAunWuR67P4xi3HyGaj6Wc7Rbpjo5r80O4u4OyiEZ4l9JRg1TBGkLaaSDr/C7TOndwfVJUE8KK2WgQTY6HpJR1RjQas+5wJ6MSkXgBW6xLVoYx/NcBQpDjW7cl8eAlmjThgTVP5RbmLb5HduIypeeuzocGiH4QqnegPVM1giGUeGy58Cb7ODGKt3PTp1wYeiL0SQtwU/JYbXD/S6cUgIhmHxr2kS2FrG1uvfJBjNXcHpCTSknFdohWl/an9YEyvLFgTQVAnFyqcrRVB0lr3kWnyMy2vCNEsY0pGa/Gu009rPvzfEeQbo4m0Hm4ekIL1gjxe/mkewU5ZJXWuDLGiNFlD3I6ouGP4HaSy149sY5nvQFx7J2V2eQ1tV1JxK8gyshzOmvH8Ip9wtihX7hUWzIvF0kaEZ0n3xn55iRl89Vd/Z1kH15/3fgrTtqp4BF4xxly1/pYOQvurwZCRYsQq7Piupu/LXEM5kCzUmnccmTgF5Lnho/8rmOW1yZxvUsftjUd09bZY+MYqkEXmFOybIKyhkzB1vY02SVb3/3aF2kADPdqeVT6MbzSI9TX64uA+obPM0ERfdnXHOzw7lrRirpf0LqxnFGo7NLUx4y+iNe+g0In3o+teUHrkwmPnHfI2iwWJaqL+btH9vtcoiJWbN2oGBK1Ykf6h/cMumzlt6PYMf0LO/PNTm5DN8QwloR4FVz2qKHpBQPDu71WA3+8pjnuUcQEcDyCcWfK4z/OEC5ma1t3IE5oseRPRZhwdawXv+NMniOpXnTs2XOPjCrHiGzQ4PSlZTnKnpU0DOnAGPq95KbuoxdtrQKN7Ba+NcdmGcsmbRo99VpueYJ3lKEi3RhvnFksot6i4ysbd1l4lGJiuM48OCXuTChlxsOT7o/hXc+KIvfqwmEORUZrG0SWAOg+ayZ51XbYJgRHGxQK4ccueaog5sku+qfoJ+79mEeRIEzhu+bqmBpEm+SdnYlS8i1snB5K66BnrTTkxQsbnzJ8MkRrQW/VrMGN4f9PrtRsUvXacr374SH8Rx031NkQ3V0fj8cpfed0Iz6BtwsDkLfEUNUtgnKLw7FMQ89wJuK8CMq2sp4hGMNTf74OEae+4Hw3BfIbWNXwtxpAsoTZ/iOtstJPqEC2jvsjDSUm7tc3qp5qoZki4dqnVm4XhW9HzQ2uUd9sgf9x/5wRA+QwWAVu4CbxLtI88+J3tf7PSfJLaEZ6ydbvJfyVwgd9vWt9gEmXMeJG3CIwOtIQBoKIHS6cLMw==", + "layer_level": 2 + }, + { + "id": "8d814eba-e2eb-46c2-a59f-00ad5b8d5de2", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "商户配置管理", + "description": "api-merchant-config", + "prompt": "创建商户配置管理API的详细文档。详细说明商户配置的增删改查接口,包括HTTP方法、URL路径、请求参数和响应格式。文档应涵盖商户配置的创建(merchant_v1_merchant_config_add)、查询列表(merchant_v1_merchant_config_list)、更新(merchant_v1_merchant_config_update)、状态管理(merchant_v1_merchant_config_status)和详情获取(merchant_v1_merchant_config_detail)等端点。提供实际使用示例,展示如何通过API进行商户配置操作。解释配置数据的结构和字段含义,包括商户名称、支付方式、费率等关键配置项。说明权限控制机制,确保只有授权用户可以修改商户配置。包含错误处理策略,如配置冲突、参数验证失败等情况的响应码和错误信息。", + "parent_id": "c423075a-af3a-4aa8-aeb1-eca97be6acbf", + "progress_status": "completed", + "dependent_files": "api/merchant/v1/config.go,internal/controller/merchant/merchant_v1_merchant_config_add.go,internal/controller/merchant/merchant_v1_merchant_config_list.go,internal/controller/merchant/merchant_v1_merchant_config_update.go,internal/controller/merchant/merchant_v1_merchant_config_status.go,internal/controller/merchant/merchant_v1_merchant_config_detail.go", + "gmt_create": "2025-10-08T18:19:28+08:00", + "gmt_modified": "2025-10-08T18:40:25+08:00", + "raw_data": "WikiEncrypted:BG3lFnKLVTvBR2vGYwCPyUjsvllLhwi+whN+Y9/3c+n/MVnEm0gAKHUg16cqvzionAovu8HBvB65t8ZUZvp9GL6L6zCIgNolbfADOkYlFi0gLvCLW5GthKYW2OyFJkv+Wiy7IiIM5FBogfrnd8MPC3qDKEc9BRAwUrXXQ4eg1xLyTqeZAjcseBpq5uxnn2YnSKlLmr/9TYRbRLpfhCVmx2v3bsvpmzS3l88cNrXihzeGgZAe0u0XMjJg23lUNRQUAPGQpmFzpr8YNcCmmwQXEegXQa5wn7x+1fqAaOCWNv6QR8KK7YqeaJiH+4ZFQSJUSRQKLHI4+f2fywPi1r9vL+zbfXVGb+JmeOYkYPMpk3JWw53qKeDKJu9BcFspV5hdyjO/RKu/pxkh98zrCD17B0yDQ/8nTkrY7MLN6/uTk9WTegMCcYSzUTAMB54bITpM4PEPkHuGqH5+zi/3DuNETFmz92DlGFLDTa9yb7d9ygFUdnwO4fxsxCFX3RTRv2WCGmeu1cKMPbP9Z3C16Tnds/NEMqOcQJ5+uNcMoAqUFM37FJxbKS56qe+HdN41oTCVMPDe/koxk93uew2qTfbhMQcrbB22hbLuhZiZL/Nz/JGozyLuJFVgazwKbyS9tegQtAdeAAiH6YRqBzRGq12UGPKk/wA7XRe6NArMYtQndqbs3e9utAzpj06PYElnikFszLfsPv+6S8TDavLjizN0MG8kAv8DXbmq0lW8aVpaFOMDwwIak3/SNffLEjn2aHURX8fkWDAQYr9GL2IQhgcR5xIqajU/6TRHu0HMQXHyufxJDIV8KNXziRgb4mOM4oKoOuo6rYg82rziDkeuLkZpOUAae3n+UOyMEAxJxAb7hUcddACeoukrdVCs52zciHdLr2KOCzF5PrVTTbJ2JDqYi9CZPcpA5yiBLOf0nqTU06YPZRv0G3UPLNiPcG4fEMhRlXjKSbLwXpiqcwGwaEH+lwST8np1svFMozhb6kfLqrQs3JsP08vqL6396nqX/+UFLg5J18pGPa3n5RbTmDLLzHrA5gNAhKzgJvjVCCC5z+uzOZTraeJi8Ya/toYfXIoKBKk0tAtx6UObQLivccbjURb+Mb7HpUVsxXrVw8+wbRwbSXudsT9jkak1wV1p5sAtiGhwT8qmMwNWrDAlp9Q8Deyl5cFpDl3+VwUGP+q2hnetVvVV4l5wPQVkew6qaLYIiq5+jHZ9wP3Ew6VfNIgXpTNbZkaRF2jwXkq9lBrp+u1Wx81GKLGVHe1ZMutCqRNoNEQePJOMWKYJwH5AaLJ1DfcZK+ODkaAACpGGGSOrG5tnLhahBZ94j+xZ7Ozp81lpw/7giOl6dXVjNuFBXb0GKEa0rhK8dV5bYa6h9pqNe626ZbtT0JR6XBPMYDTNOnHZC7qJwZ0q3Tyexl8uCCRgqFpmkI24FPT8ZMBoO4Uo/EXuzWkOCulRgQVQmDJT3UByD0YG2N71EX3kWCB6aTa9CArXptCKvrzECHqM9vKq1kpiulPz26R009tvbu/pyigkeU9T/h2lZJbH6wrdzI1umscSVrgehz4nXP+6UwSCHWPg/b2T/GtznN3JaRqcekDMb1AnnOWzcTqHOSkGiaS/fRyrTcZxaZsMhlnvVmiwlYv+Jx65gvRdpmd+rMAun6AVE8b6fnwu6FHtjEuJ6J/9vhGrxnhGieWSehYq61C7kjT6Ld5BKHNNVU36Oc68Bm8sNfWCSpVfq4jvEpEsPMUtkEkK5DUC39Ncdi7mGAReSEbJGLScqHDn81+03RdC7BgqYBJ1QLV6HB0oqonigLRLtTMZIlgIhateavfY1ZB9hDQji3mD2BcbDfAHUNte8iMkOPPt58lODAeor2Nuku3tXw==", + "layer_level": 2 + }, + { + "id": "162500a5-7167-4984-9744-2802fb00bd08", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "钱包管理", + "description": "api-fund-wallet", + "prompt": "创建钱包管理API的详细文档,涵盖钱包的创建、更新、查询和删除等操作。详细说明每个端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括钱包余额管理、状态控制和权限验证等接口,提供实际使用示例、错误处理策略和安全考虑。解释钱包管理的实现细节,包括余额计算逻辑、事务处理机制和并发控制。提供客户端实现指南和性能优化建议,确保文档与代码库中的实际实现完全一致。", + "parent_id": "b24f3c8c-5f2c-435c-99e6-6ee42c47a46d", + "progress_status": "completed", + "dependent_files": "api/fund/v1/wallet.go,internal/controller/fund/fund_v1_wallet_create.go,internal/controller/fund/fund_v1_wallet_update.go,internal/controller/fund/fund_v1_wallet_list.go,internal/controller/fund/fund_v1_wallet_delete.go", + "gmt_create": "2025-10-08T18:19:28+08:00", + "gmt_modified": "2025-10-08T18:40:13+08:00", + "raw_data": "WikiEncrypted:gLdwQ0KTVfy2nZNoG+5bdanSkYpF//vxeQ9sn3ZD2PSyqLrfcO12FxqvLFH7clPHKW5YbGibCYaowMn6lbHZzM2+D/+NQ8EbPTwbM2ItDeyWUppEH7xgv3AiH9Krc9f1tqqg/yEF2noAjpujnYGl/yc39DfocKeu4byCrycqWZtsKn7z8BfZWXm3BD5g+RuIDLJ7BrdFO3Lz0d4Qhb2UkZL2yJUgQQm+HpJBhHU4Bmcbg6XT7s6tR3ET0S79uQO79Eq+SseXl02Wjd5m4p++/UduQxW+uK+z90QWkNkcFX9+8cePFOiyvGnukbAut/1ISM30v/p/lHnF/fIsFm5+ZUCgwcnq6sUv/yZlN9vCPkhwP1v2gy2BhiVMLGyrMQj3KsbOGKJCuZuz9JvheVxe69JXkYwMpRWHy8ffEvlGLRyUmflEPC36DEc2rHEFh1ROikU98jAMdCcJuoWGB5pm8IIWKHpLJpqGbo7S6BcK3DFk9e7onzo41kTNHIWwuBeKs8Rj+dCteOq+qceIxmpeFxpJD5EBwPZAy0eMsh7VVXW6OKHkzsvp0xNzC9pXZS3T81NxuB0ltRpTB/PoJz9lutQ+jcoVHAVnRMNihCMf8drxVHu52P9371cIB7Wgj74vzYuthQxTQhZmEquJx+tv4qj+AUz2RdORnaTbixlnW/1B8783+OdO+dK3NTDjIC/NvN2iSh3tk5Ti7enHir2YmUDZLkpDGMAkEtCnlawu1IOej8Py4J/2iK2WSVraS8OGJzGrqye4GN+6veQo/wHHC0ls5H4dlBnFtQXkJReTDtQWyohRywpYK+nIDNtor3AS4ApdK92Nvud/ZeZ6ketkMnxbB6NEFQo/cwE2uk2OYUOw06tjYaq/5v7/hYJk6KcUqvbpjGE1xvCvans71HuUtWQEdCmNHOYfapQ3L3Zw+i7jp5FS4/2d0CUhKYxE45RYDXn76YmXAT3TWFq/vVB3H0PTmGTPzSdbZgTnpmkE8zlJgiaa28zUEve8vSj4LIlGRB5HqxAnURcdAL07y8JDXJkVU4+Ii0w3VRO9nR3G8fpBDRKLbtUR/wJVumFHBKPsIrMATgUK/0umDVUJhWA4A/y1Ks3Bi8rbfU1x5aQB/3mkqp3ZEIb7OAUvA6D5JksuqsTwNp/TDXAOV2h3aaQABECpmAMxmqSsVRsBZFL9xzR5J0W1zmlSDm3X9+9dYckFsOrKMC181gx1iGjKSninZZjLEbgIciVnmdcOPH1j+e41YfRLXnkGc7v8lRoUsNbZCp1SueQKES4eEXRc3Z7ByBGWSDIY49n5W7ASOensJsE=", + "layer_level": 2 + }, + { + "id": "bb872064-72df-45eb-ab34-4003a0fe8e62", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "IP限制API", + "description": "api-restriction-ip", + "prompt": "创建IP限制API的详细文档,重点描述IP访问控制功能。详细说明restraint_v1_check_ip_allowed端点的HTTP方法、URL模式、请求参数和响应结构,包括认证机制和权限控制。提供实际代码示例展示如何检查IP是否被允许访问系统,解释IP黑名单/白名单的实现机制。文档应涵盖IP匹配算法、缓存策略(如Redis缓存IP状态)、性能优化方案和错误处理策略。说明该功能与其他风控组件的集成关系,提供客户端调用示例和常见问题解决方案。", + "parent_id": "71487087-d57a-431c-af0f-f9ce8536c80b", + "progress_status": "completed", + "dependent_files": "api/restriction/v1/collection.go,internal/controller/restriction/restriction_v1_check_ip_allowed.go", + "gmt_create": "2025-10-08T18:19:31+08:00", + "gmt_modified": "2025-10-08T18:41:29+08:00", + "raw_data": "WikiEncrypted:C34GewOyK1SlumqKiPsSg9UgvWUQwsNKohKsInf5hSs0QQfDn2veT4X+kRCmlL8V7Pq4z7dhmmPz1VcC+RU2Qf7Fnc9kRUMA5sZH2EG69D6PojpUGyAFozLrrMGPL4e7QVaF+PBD1M5l0d7XTmfQnOiPxZyOiSH/wKOSfnTn1RtDReXqbnwGJZWe8EKWbTrMWS7cwn11oOcdQPBrjFO4aveFCFRDyklv80p/CDPEsUtQUocJ8WY6AIqmB8RkosQemHvb6jmoDYTQV6VYYiXtbw486CzKDfatNuMU/Woe2sp78Bhdi+40HqSeohFwnEaTpOmByLU78A89tk/zqDyLN3kVt5AmUX2hGwri6AzzbRbj2DQXG9SNcjpra2J8QQgp8lp+4KJqjQiKeifKyRO1VzaszauCuZQW2Gbq/o/Jw0/7tdDCRpOSbUsaKgNEFKz9MrmhuwIu0hYM5JZIHZ8RzXyOStuolXALCpxMKwfT+OG3QA1OjzrD7pN1K5RtBfyHP+L43u6j4oi0CSv2lwnAtntFYrunnZr5B4l59wIBfLoN0swodz+gpArcDimzwrGT7SxLxA83Ijn8577jyI+VvSMplyH2+X/pGUYfK/jrYAuRDpuFEshvwlEAatbMm3hFmcdA1KLVg99qPEmzBGxGfzK1HWiGhanPJy8LAfqab5m/m5tk2JidZQIC7LXJegWDhatyzlxXmbzmWQ43U+TMpWsw5ul9sN8hEizZnvEZwxZTBFbRhlvIT5WUNILc80Y1XLcq29DmmQMtiuL/pbI1VP92gPW24t8zwuBmx8SV8ohNv4xrdYWkxreJ4hHa9VrCS5l2c67bPkuUocN/HtWEQtN5RFaQVITEps9MKJwQxclSl3LobGjmC46snYtG5sfFiglxxdNuLjgVz2MByxzX/OWXTZryfkJlJLA6kCvsrbLoIiq6gC4ajqsjBL8j8UCWGzzOjkkpdeXmfA3nLfMUhym8Uz60JfjHAc/y0apBiN9iUqIZCopKb823J9GeDx+YSnwZquVQhUVaxV0MJrBCE5/dNNgT+Yl5QI6AcJQi4ZKiu+Cvx8mInSdnZJvbChNYe04+73yQIMw7x0iqFMEqxKQSuXxfslbn/cNYoGfAUpv4xAvw6BbUOoqtWe2CrXg6nYp36yXVG3aFtfIazxPDGQ==", + "layer_level": 2 + }, + { + "id": "0e3e4dfa-8842-4108-bd6d-6cde149b8707", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "Dockerfile详解", + "description": "dockerfile", + "prompt": "创建kami_backend的Dockerfile详细文档。逐层解析Dockerfile中的构建指令,包括多阶段构建策略、基础镜像选择(golang:alpine)、依赖安装、代码编译、最终镜像构建等。详细说明每个指令的作用和最佳实践,如WORKDIR设置、环境变量配置、端口暴露等。解释如何通过.dockerignore文件优化构建过程。提供Dockerfile安全加固建议,包括最小化镜像、非root用户运行、漏洞扫描等。包含性能优化技巧,如层缓存利用、依赖预下载等。", + "parent_id": "3c6ca985-3423-453c-9f11-d9030f798abe", + "progress_status": "completed", + "dependent_files": "manifest/docker/Dockerfile", + "gmt_create": "2025-10-08T18:19:36+08:00", + "gmt_modified": "2025-10-08T18:41:44+08:00", + "raw_data": "WikiEncrypted:h7ADvj4WLJHyulzCl+z7kCSkV9pkP4w42aezSpM8tSnz9DM8PXCI3plj22r54nyHKillw//OdJftbMVj1iHO7i3EACtEoQsA71iwCJ5DlnOvTxQjZAf4O7v713BlkcrCcnWhGA+8tG/wMGITGEvZUu6BRwqZhUXr9xxPIbRR3jEc5tarJ4sMs86NWoRvprRsZhmvuAmFTGimqQ7Na/92ZYiHHNAkQGH886Q+g6gmd5o00jhdtxSGHkOMb2NYcrDYYaoREGCEeyMD9y8wqQVgR4FXlLFSSQuCnNePrDkxqTFT2Mu1NaAmZI+ruDl4TBJBZdcd+jKMaAZt/44HA0t1/8if902Z+o4jMReQfwh0jYxpkJJJi+44WtAVk/xX/Ou6dfzD1O/CC7zgfrJH4eQHVnLNMy6PHSg07dueN5p9KQeG27NEWOTFua4VeWM85/I/n13D4iFgzR0Wra08nfNSpks+F5Vl6gBVUjmxqLbdhHI6Jn/LkX1PD6NbvTakGv0KIqdtqy7uhgJIG1bUIc9q9g6v/nzeh0/j6iI18pSOji3l2W+8XfiF5hcdbG36JaNdfSWreg0ucQn37Dwj6ykOvvxvo982hkKcsIHcRDIYaukC+SGHbChag4WlrTmFEdqliI4bUzqlx4v/uhMDSvrB1pQ92u9Wh2ecvq1BePVHNTT0SN15dwCaHY4XDmsLk4fytUw0Ff4A312ofSMlKEIDVXqdzOTeB3jENRRi9uXPBrQKtGbN2N2O+rqtBxVrM4F5zcIn4e+WZP6Pmbhshgg9xygQjQf2mvxNRDX9KOfIfoTgqONts+uVJykYo+npT0tL6Ih2lFbadsNVjMVDYHfufrSlTPIV0eBMD1UfEeUBCX9+N0wusLPcyUdSwgEBRATtvyeMoAr421D+XqSccif3R6FvgWiFpJrGcGql6SDxeI1wf76ZdFeKSEDEV0/mGJY06DohEo+6NhCZtghVhp2U/IqYtszt4KAFddk8dFtxjx3zAFuaOY1rRz387jPu5wnr0S8mZbuxRxKwh3cFJ1H6VNlO2FWbbZ7UYOv7mmU7Bv4=", + "layer_level": 2 + }, + { + "id": "27a44e9c-003b-4f06-9b87-2882cf3c1e08", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "Makefile自动化构建", + "description": "makefile", + "prompt": "创建kami_backend的Makefile自动化构建文档。详细解析Makefile中定义的各个目标(target),包括build、run、deploy、test等命令的实现逻辑和使用方法。解释每个目标的依赖关系和执行流程,说明环境变量的配置方式。提供常用命令的使用示例,如make build进行编译,make run启动服务等。分析Makefile与项目目录结构的集成方式,说明如何通过Makefile简化开发和部署流程。包含自定义Makefile目标的开发指南和最佳实践。", + "parent_id": "2b16f9fb-3e48-4abf-a52c-5fcaeb1467f5", + "progress_status": "completed", + "dependent_files": "Makefile", + "gmt_create": "2025-10-08T18:19:37+08:00", + "gmt_modified": "2025-10-08T18:42:23+08:00", + "raw_data": "WikiEncrypted:Xz6OVSa8P8xcLcBGQtqZT+Dxn1zjJpWxEV24N6Fu+jinDqPyZqB3u0Luse3ArC1hNmGPMdGO8PFnUOI4dBiXnRprrnrFLNHKqkXdqFAjH6egtx19TUYt9uswGPNuEndVx2EB+iEjV8LbEPzVXN8rNtI4vCMRjbc0Kz6u/M2ZPdFq5RkhkqIAXABX3TXjsGKi7FAEdJYJukF1yxjLLxmRA4fbfh+KLotOtlU1immC1ELsE3u1ihg0K0ss8PDw3gQgmSNE9e6eU6f9DYLRj9W7CBqpQG0eNqJQoLNH5jk47SG22f7kwsvHVOdJMxQyhIsTA6fd6yWAx4fBIaE5XkRoymRNhhwFWPM1aNTCKitdXh67VS3bovSmZamRIIvOFk4NYx8yY650VNEwaQL8/6agTN4uqs3YRFSX4raNv5gy0jLwASjC4oYTbDbCyBPTc98w43OxYz9k5ovTEY3P33P5W85oNfFnvFdr433BCY/jhHJF0mdYulXe6uqR7UIqlVwo6qZgeBVUjuSR2Cr3dP/ta3qv0kv+uPYChbs0KuoldD3+YUJkgtfS4hn72+3Hn0Z8qQFMu9ggbh/7kmUM8Vt2qOVbQxJGgfjpXxFMlFKzyDSGBxSSby/EfKBTm/QIV96E9ItWWGO5taPQnHfedvNFPHEQHGLRRhaiX0r/Sr65eLmku3+pcC3R3X4OzUqh+UvWGQ8EpGc7yf6eaMmW5H4ys5tOpDWFkZLzvhLmtsmk+NKDebuNejLXjsgR9AaC4KV6kKzWiXncWjn+34Ds1m5/Dzq8n8dl8nmP2M3eW4UmpzoPQcjXgup5LTVMLW3WYwfjaTHv0DZipmA5PiZ/67oKJAkCWZtikN2eH8aqazUJZw5xmOn8kDvMUeffjTQKVtoZXgLJJOJ65a3DAptO1kurzv5QOOgY3FGjgqpwJLURtxudQgR+58qc3fXJHs1wETY9M1nKBoNDT0Zik/L5sc4aas4pAdnOAyfcQOWQ6YcRQQesZMeVIwkrITWh/fqX+e0u", + "layer_level": 2 + }, + { + "id": "de16dd4b-ba68-49bb-97c7-cc34f0ebba00", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "Apple卡密账户管理", + "description": "apple-account-management", + "prompt": "创建Apple卡密账户管理的详细文档。深入阐述Apple卡密账户的创建、更新、删除和状态管理流程,包括账户信息、钱包余额、状态同步的实现细节。详细说明账户生命周期管理,涵盖账户激活、暂停、恢复等状态转换逻辑。解释账户与商户、订单系统的集成关系。提供具体的代码示例,展示关键业务方法如账户创建、状态更新的实现细节。记录账户管理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案。", + "parent_id": "f7bc4c8d-64a0-4c2c-a17e-cd38987a94ef", + "progress_status": "completed", + "dependent_files": "internal/logic/card_apple_account/account.go,internal/logic/card_apple_account/status.go,internal/service/card_apple_account.go,internal/controller/card_info_apple/card_info_apple_v1_card_info_create.go,internal/controller/card_info_apple/card_info_apple_v1_card_info_update.go,internal/controller/card_info_apple/card_info_apple_v1_card_info_delete.go", + "gmt_create": "2025-10-08T18:19:46+08:00", + "gmt_modified": "2025-10-08T18:53:45+08:00", + "raw_data": "WikiEncrypted:ngLqLViTt5zzUmJHZ62DoBWmlVTe9rZaX5hosPNAApW0T1uT6n4zjorEkdqGh56+GZE8RPLSrxCBo7Kg1h12kViRt58Aj3n8+FzdDFp7bvwEBscr6hd0N2fuTcwkJL/ex9qIUrnqZYabutinVv60QecvClj2U9jtJxZpAIgdWaLYvnx4JLGxZ1PaIXSJjxhYeffI+Kt6CpElT/s2ToVoJGivcoigObBr0HJ6d097ae2TV63ruyGno7Xko2G6uivsCIGmeDtR0XpdXNxf1hEoY0YbiUk5inhvQlOAofkrUtJHVgJwiAr78gvhUxe/KBv3jt5AkQAwkxyewfayfAjclkxbeMw+qvW3fuX8pHO657HYTRXporhQJLtrYLVBTAK0lj0AfcPcWsj6ZOHWNcdF9QWJnSHe0fKcBYkL/IJJ1LQRt6Dc23++VcquH1UWlRbjyWi0Tj7FXwoPEXjYNnrNh32Y6Q4aZRmvqO6O4dObEOt92p2LNInowxSFhBIJJN37zsTlOrZ0r4tGkxNLZa3YuFWxohcNzKsWkEQ4j9KJJrqTS2AElZlozyZnCJGDdJEyfFF3fNih1FjGGnWHdyiuEAiTm1ufl1pWp0t/J9rL7OhDgWJjQlPLnUmXR9dE/paLqsw46h9KN2dEuFCuZrqfHFcaNtcE1z8XySTT10aNAUVmN8dgmhNrsWBQ8hTFODlWyEnhwjx0MW8WxkeKH5fMheaastOl6UyOnUXirhnItmocSOejN1XMRc6teTYo+cYMQM88aOz0x/Y+6l+SSx1uYEeBUK3dLQC0iPepSXmtMfR/Z0fSWrX5xVtSyKDCsbCjtVeJshAmlY48DfmpRHKz05xkFNDtwbUI+NXQvIEfAOZoGlG13w9aW5vot3TtODeWAPEvz9NR61orto0a5NwrAv284Nb8ZClaChbu3xAIpVJeBrIFAZ753X8DIZ7XfSat69myvxi8yo6Nhlsx17XWf/I2ZmMFMFLHvdwBJK+Iw/IFGLrwoQq1idTC3J2exp5DFuhql1iYPVvRD5rCpz4VPjnrHiqWvMlhzUk4SP0sNyWmoNsRuQOL6jnUZdu5GfLGLk5vqYqjeZyDlUZey4Rw71OqsfL5l+61osSWlrIBnvumRk0sDwNCSIQXwo+1ekK1pua1sLGDIxDSLBMw0ddS9onSVCafMFiM5buKXGRYfrl9UccI65ZgqkLvK+a3fe9BK9X5sJDxkHQk8hpOWEdr61SZBOZdiEL/HZwT8uCvfbLlbuX8RMhkL479RpjSvJFcHatHHrpxDMRQqUB0AHYw187wmavHy7MfYzFFfxwm34pTRvyn2XF843RR4v0Bz35dYLhxuHgiW3olg8Fjw6oDGUaNri894hp29rdsiMCOqF+EbAbfKIKlxHJXYvyCQaplyJ40lBaKxgWlvP9mPspmz3IrzW9hg5DAZFDA9g5cIqXzcTSE8rxyHh7QD2/iOzjfPT6VvXFlDgfolfHimzmSnbJ2bD6znvOpONP+k1A5Q4PRlzNieGHn5eF/GPbOcpoaJe+NGlmhSUvLxLjpHG5AVuJ5PW8rpObrPHpi18GSZJqRmN2SqbB6hyL91mLDfw+o", + "layer_level": 3 + }, + { + "id": "d47fa6fc-1893-43bf-906f-c9ed0db47dd9", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "京东卡密账户管理", + "description": "jd-card-account-management", + "prompt": "创建京东卡密账户管理的详细文档。深入阐述账户的创建、更新、删除和状态管理流程,包括账户信息的数据结构、验证规则和持久化机制。详细说明账户状态机设计,涵盖正常、暂停、禁用等状态的转换逻辑。解释账户与商户、支付渠道的关联关系。提供具体的代码示例,展示关键业务方法如账户创建、状态更新的实现细节。记录账户管理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案。", + "parent_id": "d56eb845-7c0e-4be8-bf3a-239e3c0eb5e3", + "progress_status": "completed", + "dependent_files": "internal/logic/card_redeem_account/query.go,internal/logic/card_redeem_account/operation.go,internal/service/card_redeem_account.go,internal/controller/card_info_jd/card_info_jd_v1_jd_account_create.go,internal/controller/card_info_jd/card_info_jd_v1_jd_account_update.go,internal/controller/card_info_jd/card_info_jd_v1_jd_account_delete.go", + "gmt_create": "2025-10-08T18:19:49+08:00", + "gmt_modified": "2025-10-08T18:53:38+08:00", + "raw_data": "WikiEncrypted:2Tw4z8NsJjOlKl4tOUQ4rTBhpacpL3B3JqOjeV0quJhHeY4JvPnciyP+by1YUNeRemQYuM9NFpdXQryPPslPNYiO7OHybuYaJ6BeXEVnWJNP0Hc6AjitH4ckNyCULFHcp+wSQDZz3ViqsdkiH37hAt/G2U9cMSN10npfdksX3t1kqoeyoCjWC8sUn2y/fOrRhgnJ6d1t+w98D9NFg2l3cfEHSCXaXgrFriUYu7M+nrGAPmV/OXa85AyUQ31H6gAFdZ8QapoUP1Byhy4E9sncB8Av7VOX2TPrCwbB4mzEvOj90ggRC828l865qy6LiH6/HiDDlMBl0F5+VmCgYxW0aQRsdBIrAhkA0+6UFDN31Q0fqBAcE+hvxEZnRYipyhEsK5bBdZ2nLgpA0ALmhMJjNWfoDM0aWOozPSY4IVWi5TIMYPxishFPlguSqANCgmyBWG3I1YabrAQzocipsrdleiIa6O8HvuzA0ZfWf/7uLmSkChlMZ6FfaRYmceZDERpoTEFPinHyZfk07tccxdgO/hUPq1oPzoeVQsbp+QGcDu6CQc7IQY9YFXuaOG+1TZwyMteoCtTK4xccjt7cXiaoqNDbFL40nPJH7fuyO/J3Raqbuzci4SzR1qCy4yH9bbiWibo/iMcF1YqWu23Qw5ArcNuBMeozKrGbrckDeXNB7QF9JqJq+EyTTUv4IKBMa1HYXOtSiAJ0FMzeJi6MbohECkSQf8r9D7L47E7HzDIiI365SVV8nzIPJb6ykmMBSW7zQlCpXPD06wp8vzxg1IozlrJaqqSLeA9NjLgvlEQkbvEoFDmGMKyohLar5g8i3JLTUNwCX5TOaBsM9Hq1O7/gEHgdleefbNDK/7gpWiTIn9CZSUguGxIGI3Wc9OSZG9X8ZIYb7bP+cCZTSc0OV2QqXGnMX2wf9mPu+0IDffVayfJ4OI/sB07G3ci0wCPf3wWtARBjTwvjOslIBNhWKZXlPb+UGnPp8kT860OmcSXIUI1JfDVgvmc9+D9uboS7zY+H1ELmZdbllSSxlV4wfX8m7X28vSU81NfA97rP5019U1pAVmjMDJ8Kx4DR9GNXpSzzPJfFQcg3Chkc2G+uQBuQscayCwlD9Vm7QVirmJO1M6MjjszA4gN8T47CtZxV+KP+S+n7iGRnfkmmDt/7EQPr0Q7rtsGiWQUzf3AVzdECSSAfN4t34WUDTFH35rmIQ43R3l3g8pxVaVCKgHXCPhijxJKNnJPpRdYXhHtJL3yQn5K/OXDTCC0bSk8nsIKVxM4bdZizcgdI91YwDir88H3gVJ+sjFf0QB2K3r+v1pvNvd8C/m+FGVi+C/wRi08R7rqHqYzLf9eNnovxDHg1o5nwO0Glxf94Xp8qP+ds1jMO2GQz0el/tpnFC2KQJ75bQ2qR5YuLAw4NIN6OU2HFBHFPdmsoUrskT6RQ+A00Yig8aZGrJY7JWnC/SAX8scf+RVqo8NiuOWfBmhtX8hO3ZNKQR22wtZZCoV2SNBxXhAkYzITd6ZV+0EDDriu1m3yEzEQntxYZOUmlOl9wXta6bz2UuSV4yDHyqaZhbOPF3vfcfTE=", + "layer_level": 3 + }, + { + "id": "3ab7071c-90ec-4de1-8d64-d414460e61e3", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "天猫卡密账户管理", + "description": "tmall-account-management", + "prompt": "创建天猫卡密账户管理的详细文档。深入阐述账户的创建、更新、删除和查询流程,包括账户授权、状态切换、认证状态检测等核心功能。详细说明账户与工作空间、订单系统的集成关系。提供具体的代码示例,展示关键业务方法如账户创建、授权回调处理的实现细节。记录账户管理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案,如账户授权失败、状态同步异常等。", + "parent_id": "8137c301-f13b-4054-992f-c556767d7c45", + "progress_status": "completed", + "dependent_files": "internal/logic/card_t_mall_account/account.go,internal/service/card_t_mall_account.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_account_create.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_account_update.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_account_delete.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_account_list.go", + "gmt_create": "2025-10-08T18:19:56+08:00", + "gmt_modified": "2025-10-08T18:54:12+08:00", + "raw_data": "WikiEncrypted:pmN7H1JF4+HQF9n9w8KwRUnUfuYU1Ccs6mvDPLPEkeDmJDEzqB+bbxCn9nEKGkJ+ngcQ18ukCSPcWXZUH42B8jgpl4li2lM2GNQoVVNwDi4YlZbrIo4XPZlxyuqNSDhmbbBTv1ynEvzJYd/R2NElCmE25B+pY0lx89xG/fuOSBmrDiwXIyurbfrkKNIX4AlZcVOuBCVCAHKCQKlIKkZILWzUMa67oSxBs9GHdxiQv2QwEYo2X0jeitURbHY15W7uucFvRv4IJjm0SB6xlHOvkJ+HeEXh/txt4PR5gq0EexNxOmVHZ42SJoItonwbQvI+mgSFQeafd4MG9GEYwSwR7aOC8SxbRrWeMGJIpAWjXw0CXiYHmvsxomZ+vMeLOfFGHKLxhI0r6Ly71ZkL/LxWb3Nsm+cdPcANDgnA+vChTAjV+VjsjPVNjzwgEh2HxejBVOb/wJHMdPhM2TDRLBP40uh6QVX1XDYe7TI2cCkecUcda9gquJVLa91TAdNJNQ18zxiiFPdIG0wy3SjhwRvHiGJwDVLO74gxzh2uEWdQ07b3hW5QEZTuF/Ifpi/s6QyLdK2+GSUD58yy7K4Gvtgap3JNBtN7l+GYd6hkuPb+OqYWBcGPt7zQvXKrR+GmKf4j2FnVVWuOQrvyvtT5xlxm8dW1lPqyFM3V6f6nQItxL4VTN3P39hfKuO5QjC2tDXDxngUxHow4LA+Y7Q57RXR/liAToZiNZdy3HoFusvNFjwRYtG4D1+qFr7nGnTKm/pckOGgTC4LsugHBPweDv+5rjBB4IU6hbgyWTzj0HEVdPZDmTJNJqrYHR3Tk7qHSx5y8J7/tnyLmscLH7Z19CxLBL5Dy8xv9ZDzhtKIESbuuTtwvODZ7v02zCfQnzsCDUJBVZWiP7KpcUmziCLYaKmDdW/KKxlQz2UMf0x2FHau0H4Pje5JYHEO1nIrqjSD10W66aUHXAbZzIgJFetCFDSSWidErGEGRQ/XZdhpLC5NDppfST7FkSlbjZOX4yZ7qAiaewMPlXaQM19x1LSAX9p1oT9CSA+LcMUEhrnG0p7KkAnQ4XZY1zE2QCYSNUKOSugZnlflfJdQ/dxKEkYblIFCAC2C029FP2kP1VbqlwFk/mzy3E+YZNHt6GW7RCNU1VsplMW4iXdJr8Lt1TKqK3fOL2UnegurKuUTJWXJffluzXMYH+C1R9UH6ebXluAjEolk71pgux92vB7xj1LeyY9uCFDuCPDT2SS1C19IEIiJ+VwZCWFNt4BJ+fWwUmRJE2YmYIPDzd+FwEF1chxEyYAnm27ls6O/L9DHmbbrNc4gjRlRvSHFhhyUwVClc7a3WQQr4GTjOomLo6c91N7r44ugrSArlkTDz4c4xV4WrIedPsmgAVQqBZy/NHxSK7uUXiOoL91RDCxbCoNCisgkbSOfR7hDoQc9FCBcPa7nuLODnBa06Yj/LtFfB9px5X9kkBpBYMRsg4aF5Ztvld5slD/ZdrCtECopJ0QQFtnh+DfxpZKxIDs5muAcHLwLzQRmj3BTxRidg9IwQvQJNyyt/pJ3EgK/aLgV54jfGrcKCPzytribUgu6HvWM0ZMC4WKEZzTdRsqdRdsQvwUpWo1dwaUAlESHSTahkPl3I4I8AEZTMw/rYMsajYlspOKm+oY75ZkdD65k4XRAdToahanZWubFhuB0PniX1tyhx5mivAkv6X+M=", + "layer_level": 3 + }, + { + "id": "8b0278d7-2786-4c72-ae74-b9dd35efed2c", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "IP记录管理", + "description": "ip-record-management", + "prompt": "创建kami_backend IP记录管理的详细文档。深入阐述IP记录的数据结构设计,包括IP地址、访问次数、最后访问时间、封禁状态等字段的定义和用途。详细说明IP记录的创建、更新、查询和删除操作的实现逻辑,以及如何通过Redis缓存提高读写性能。解释IP记录与用户行为的关联机制,如何通过IP记录追踪异常访问模式。提供IP记录管理的最佳实践,包括数据清理策略、存储优化和性能监控方法。", + "parent_id": "6810876b-78f1-4c9d-a2e4-a82d03615272", + "progress_status": "completed", + "dependent_files": "internal/logic/restriction/ip_record.go,internal/dao/v_1_restrict_ip_record.go,internal/model/entity/v_1_restrict_ip_record.go", + "gmt_create": "2025-10-08T18:19:56+08:00", + "gmt_modified": "2025-10-08T18:54:37+08:00", + "raw_data": "WikiEncrypted:B0ODZirtzWbsF3w9bcSOlHc1dv0P5n03vALNC28DzA/g/OMiv/MAU4WTtzGe+VPqGMG8BJoBvLTAf9atqzKx7iO7sAtYjJzKyHysTAjh6GlN9xrWaHjlXsZfgHEv+81WvJZb5pYsVC8QWPqJVnNT8ZibsnLhkYB7ItAExxnC/n9eJSChUPIuUTXph/2RBUm4TmQ2rlWqFBgHwTBasnwLhHA9JA2rBmoWCSr/mleYr85AvGyKj1Nwj9LmM7seg884PUu6ssOdfBhhstMzCkFYvEZCwGb2hfNGMOXHWYIEdGnmXU+I0e1s5FsLDR7PBwweX9pBVibAZ19zNP6rL/gerTzeXHI18lue++YWXgPyDDJ2hRZ/MPBnW9i/HkpDh4mpc5mWUqmW0zT18UuMaQzNIiP/k2hhcfrrjUZtVFahLteOLFzxA77owqtwGtqziWMDCCx+zQZWO0NcJDlPfX1yXeKuWCjCp9axM8SmGkSuSq0F1Cg40Xurvg6ACvweBhdwkf7+K+nb7hHj4BfH/C4L5Ph614a7EtOIliYURO+uwYp5PNYhsyuXef5OqLMd6ShcgmIdFu3VDhjMZYbDz3yCh5v6/D1Obpanvvok361KfEwGyIqRbz3a0n5jmaVklS4xmje6DyE+tgy2K0Dt+q2mQzMnDZwriFhC5rkNgl0SMdme6DQ3N1cDq9GxUayJWudley42v1V4IKOOQSVLBjKuk5WF0py21M1dFeT5B9zqWVZBNgTdI3Hx+ZbdKzatVUs/9IFagZvvmIdpXqculjOjP57wIMGASkQfp+XpXnd1WxlvVewQADTlC+lSykhlxstBO0CTd6rO6PnBDii2MGVEvDIZ13aoG7+MSqJfRl/71mj4nGifA2wzACoCY7DMV/FJiKNgHSu5pPzhmpaerh/esoC6pRkMYcbC69OW/5grJtVcxYVYFee4WFstY+agTZdGTcGWgYkkI10JrjJYU31Bfgd1/n+Q/ib8prOIaaxUzWu1vZB7jnLnvZT4zp1guLIfbI+DFBkPob9sZUAXTFG2DmYZ9ynkqiYgzTM6aeBfX+tlQKmFBZp9a5oWUiMjr+Bca8UmrhPYfnm5f/6dNqx+Tn2WK4CUg+HY439kyeKlQm8lJjIYpPi+tXROL9uTMfN9AiJft8OIlsH4rhfV9Ujfew==", + "layer_level": 3 + }, + { + "id": "5624e47a-917e-43a1-bb5f-41c0c061836f", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "设备ID采集机制", + "description": "device-id-collection", + "prompt": "创建kami_backend设备ID采集机制的详细文档。深入阐述客户端设备信息的采集方式,包括HTTP请求头、设备指纹、浏览器特征等数据的收集方法。详细说明采集接口的实现原理、数据传输格式和安全保护措施。解释采集到的设备信息如何进行标准化处理和特征提取。提供采集过程中的隐私合规考虑和数据最小化原则的实现方式。包含异常情况处理和采集失败的降级策略。", + "parent_id": "e130f1c6-f0c7-4f2b-8467-d00341dffec6", + "progress_status": "completed", + "dependent_files": "internal/controller/restriction/restriction_v1_user_info_collection.go,internal/logic/restriction/device_id_record.go", + "gmt_create": "2025-10-08T18:20:00+08:00", + "gmt_modified": "2025-10-08T18:54:43+08:00", + "raw_data": "WikiEncrypted:W4RZ6LTz4rg+RteR0TdbvGKD8gVb9Hj3G7coH2L3SktvZYebOv8vkgpgSinmPuMCQSSDTEyxoWVWnS3XVxi0V1aDgH75tdCCQdkWCOilOBlur/tpdCGLmSg6Cthot0SIXRwj5zLvF/P4pmwc1GnREbivew89a+d6cB5njXEYLYUADqYDwzY/Ou6iFNaGPLY8XiRbuSbHg2890pkV0H6/Ed1QVe/b0Hm4Hyq6pLG7Fma9/xEn0GsXHIoSZ5MOnPkEM+vDPu53i1GeDtM57mMs4oTZ6k/K2hK+GJc55OT3sBC4wSFG1HCf0h5Kea9EAac/g//SNmqLTzBGxf9N61bfIQlAUB1+y4PEuzyo5XUzhaIODKYUXgboosnmMogvqeAB37Qg6dLbM1Y+eS4Smcerl7nJOTRT8OE5BrDvckmSJ4Rk6ROJMVj7CQolYyjdqZryZhsH5M1XhfvcwQzSLgWIDfAP00oG+H7Ss/zQPO2hxA1ndtfBOpAQXuX1DcBugX+tDztR7+xAbzLkFXW7m0T3yDLSqTbEHRrh3QHg8XOyofIWqJp71gnr4o+rhhj3v0TfMgxhfa0T8GCJe0nT9I/332nEOaacni1oDZ3id/eqonMwiO6yNGb9w56rACC2YEWmbjUOSZJ0FespuJa2wpOyjWUPjjuT2fe3f+DKhFncqnEehTQyTEc2eN4CAEMMc0/AerzjZjYew7rQCVCbZcHbruNwTTdVgn+ay/sjnG8kMd7J88PojEF0sPTeur622fNz8+ANGme7CuqBLvIkDdYEu45gQfZo//zDfco4SxkUWzjyIt9oQ68tOYVogVS4oQW3El5gDaZzMqxcj9cdx4rd8WMPN3j4/eYAT8z1Oh/D3ZKzVkYo3paB8QueZ8YKZ6JafYOQxOSGnFy5/KPoawuo50CZ/S14eN2PNilYroHnGB53OcA25V5pvYAhwikXMzOhmntG1dVwjjfL6i1quWiUH1pW3lHH5A/5KhnEsew3oOwpKkUfzYRxCoeaY24Q+ZtoPp8j+WsEqwl6+WOhOA841qPw15A3tdKAAaa+nVOXzAVZ07Fy334ScRwaiwK1R+29eIn6GQeh2TIPmSReE9FfWu+850DM5Qe6ellMIzoKnnA=", + "layer_level": 3 + }, + { + "id": "f54d30d0-d3a6-47ba-bdfd-e7da45674e38", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "登录认证", + "description": "login-authentication", + "prompt": "创建kami_backend登录认证的详细文档。深入解析用户登录接口的实现流程,包括用户名密码验证、密码加密存储机制(AES-ECB、MD5)和认证失败处理策略。说明登录请求的参数验证、安全校验和错误响应码设计。阐述认证过程中使用的加密算法和安全防护措施,包括防止暴力破解的限流机制。提供登录接口的使用示例和集成指南,以及常见登录问题的诊断方法。", + "parent_id": "0e1b4f85-8e7d-463d-b8db-4ee330d61a7f", + "progress_status": "completed", + "dependent_files": "internal/controller/sys_user_login/sys_user_login_v1_user_login.go,internal/service/sys_user.go,internal/logic/sys_user/sys_user.go,utility/verify/aes_ecb.go,utility/verify/md5.go", + "gmt_create": "2025-10-08T18:20:06+08:00", + "gmt_modified": "2025-10-08T18:55:08+08:00", + "raw_data": "WikiEncrypted:gVtFIob7WtU/DhLIhhPauKCJymbo4SzVIw0dvv8aC91DNIWhYiwoZmiSp4c2j67hTleejgcuK0+CSov54UgtfevCah8zEa72kD707FT+ocaKIb10nnDfMiUQUGRO8xrC+Q5IXfwDlTtZ1hFf7OdjNFipFuV/SWniGGnHvFnrpgd2jrlgRhnjDEiI3ZvaT4VaczqEfXHod3jH6Iw6tDgt+ybjFShDQlsOQcYJlXBzfedK3qJMYS/c5klQtwPKE9RjNLVjkzZd8n+JU1H1jE7t4esDxJbGwNSRuZLPHX6hwYiov0aQrJlKvkx2O6wRZ/tLkumz1z0G675Xd8fhVg/BKxMucUkGxXvh3i0CZBVZUlgRS9US2DyreXpodaZOnZycnH9Nf0sYq6LppUacl+vgm8v4GtZFX9yFBqGkx0qHpD9m8yt7POIePPUeTNFn2bGixwcm17xF8kibibU/h1OY8KSA1Syout1lVMG+3sZc/O7gyfNEUMWNIVWtunvH3Gz3O/f+T608ya8cf/4ElpoWkrK1IAFQNWVeqEZbIqKvWolN3UWTXhTa0c57LRQOgFXlo6X1E8kZGvOahqKk9FZcmgfXkFWAaOYAWMMax7Lkf3VRgAmcy2W699mf8z75UdANIMSfww+BIM46EwAwkB5oi03EJimkiKwrvhOk6jMD9ZH50OVC+NrYoKN7yK3smK7NyRCqdnPpdQY/AKAweFsf7NOcL2OwuoE6MBRsG3TYBSGEU8AkGOJ8xeDZbiNOqw7KOxpJk7XJgP/dwsBy5bfmkAsJvHQ/VflOI1KtQjRTfZPhNQjPvnVDRNnifIjsXpeXQEK5NpBLh8V74+UZnCgbbj0/s0q+sEB/vH9HZ5/YIkjcAs9/WtUGfNE1Fgy73Q3806nH/pa3O64odg24s83QhudpiMFC3RoDl/zjRNJmiF/BoS26rntv7fA3DV7/1yw3SJ7ZR8AXRd7MEnMzwymFLRaF5NUfKf1VWyBPMUUXkjWK2uVI6qi6RprUhVFZZ4/wewWlQOe1WlQwtWRg5mcMZMTB8+AODgUWyqYxJ92NymII8QUCFHSA0YRfqMeIPGK25zlo3fHNcnAmF66rXYfLL4VQg6G6uTLdvhCtIiyFAHkNtaIo8SMFBZ0prTyersI4ypvk0FTVEfCOUOZL5s6cmooEb6dtaQxabxKhChlawsw=", + "layer_level": 3 + }, + { + "id": "708d0f68-64e4-4da7-a329-e73234ebb6d3", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "权限规则定义", + "description": "permission-definition", + "prompt": "创建kami_backend权限规则定义的详细文档。深入阐述权限规则的数据模型设计,包括规则ID、规则类型、规则值等字段的含义和约束。详细说明权限规则的创建、更新和删除接口实现,包括请求参数验证、数据持久化和缓存更新机制。解释权限规则与角色、菜单的关联关系,以及多层级权限继承的实现方式。提供权限规则配置的最佳实践,包括权限编码规范、权限分类和权限粒度控制。包含权限规则冲突检测和解决策略,以及权限规则版本管理建议。", + "parent_id": "b5d20329-a5b6-4db0-8325-2b83ee9a2c52", + "progress_status": "completed", + "dependent_files": "internal/model/sys_auth_rule.go,internal/dao/v_1_sys_auth_rule.go,internal/controller/sys_auth_rule/sys_auth_rule_v1_rule_add.go,internal/controller/sys_auth_rule/sys_auth_rule_v1_rule_update.go,internal/logic/sys_auth_rule/sysAuthRule.go", + "gmt_create": "2025-10-08T18:20:07+08:00", + "gmt_modified": "2025-10-08T18:55:45+08:00", + "raw_data": "WikiEncrypted:arCjhUL6OOP3tq0tMlrtoOwAbbQLRVPzcd1k2dHh6xPvO1CNIfigRke0ryDobBaSaoichs64p/z82TtWhKzqnfRtn7zC+YhNzCLUaL0A8JDFeUnDrWvFTxw3yuhcszbDwuzk6BRxe0gs4kFOhYEsPA1/Y04lfi8YegVHolvgHLKvZ17SLaOS9bYJHWMoCZP/kJKsxOLnZ93rvkHuIdm2WtiK1iK81bJHe7F23huXgOc7upPu5i3nNZGnaDM7hEKQ/cB7MI5QoDzHuYcqDHqt08ohmzryRB5mJMQqu8CAyUV9/tVRMN1G1BE9CaETWpePEVcW49WXO5v7uFv5o3y2jRbtlgE60ZooiLyUeZ60VHLn6j65ihl5jqjtzHB7qcpCXaVoHZLSotaBSSFs7pAllss6TsBzc6KCDVomzHoQf+PqfKcSv8n/2dwqquYg6HQCEbZYvLCeChJgFbNoovY5zY/BY9jxgXrml3zqVFBKPIkFeBE6uVHZRMpeJTkpbst/AcgaHeDFmFWefIv5Xn1MgKoVgCSbClhDpGbwXJH1rUnNzDax/BkYCyFGmqxFKsNCP32oro+e1BpIiPMdmtiXy2jHJC0PEzlnS4pWf4p4OWZl+mdDIK6iRnyKAINgvfuTT4UsdAu0vxqRAlgd91oo3ABq8ucgniM/oaBKagxXEVv+qYbaeERcv3UTVL6J5MYrIeu0TJXQyDfXJif7Cb0d9tjPohxCZfYCvrQuF/JgsaKV/2OuKffcTQjEXF94v5xcbYVzroBwMsExqvXFtzDHXDUcKmmWL1onKTlDa5nFeHCEwhZDoXVxkWLFI+8+ZaWqKFLDXQ2LQ1Z5aURTBybZlPMQmdjIqszTv0JAAu4uz8yTcW+65emFBT+4SDQ4GaIbp52eQAyFATg6uQQ71IoEFejxBAOcuOnWzagWT/skQVj7x2nXlvyk7g/BrObLtKf8zLaXFB2y4A/OZ2//7oMvEBgtuuNymm/EKEOlKhkNQ5ETZ2o4x7VWwpuj+USDjl/u9uGdszpNTGiE6FZp0k2taXInlD8gg6CR6ddA1QRGiDs8R/GpRoDPFKxbE5J/bZHZP8+7z/PuLcrU5xhyQFN2YdINzxPPXdRS/6vVIfsjXuSsr8q5cG7USJJwm+1NmJxoEX90zJq4wCEDV1TAPupW5nPGpBlm8OnBwh/VQDgk3kS8lga0md5rVm6fbMHzXSH/aJj7JzZ+Q6Di3qFN6VDP965doUC2ELSJO0wDwPs2joO8xBelicPq8EBjbN4EvH2/jLznrdmOoM2eN0ST9uti88fJEpJE4l06+cYAFj6gq5alSOxos+JJfvskuQc6Kq616nxSzwDrgSzwo/qb3FqWiZ02TsWW/GkjHTvzetTd8JVfaojrsVOQajT22gaz491mWxOhtNkhzgKvXeoTLcqI9kJ+UKQ90eII5zAT16DLpFESFp96xfx2BoRzb0vVgS3LwfsXFmpLF7Tl+neDBmgLvYACwCCIlajnZFDnm9PH8pM=", + "layer_level": 3 + }, + { + "id": "60a234ee-1d45-4e80-b8bf-a0ba60aaf7ee", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "Apple卡密账户管理", + "description": "api-card-info-apple-account", + "prompt": "创建Apple卡密账户管理API的详细文档。详细说明账户创建、查询、更新、删除等端点的HTTP方法、URL模式、请求/响应模式和认证机制。涵盖账户状态管理(启用/暂停)、批量导入模板下载、账户信息批量添加等接口。提供实际使用示例,包括从xlsx文件批量导入卡密账户、查询账户列表及详细信息、更新账户状态等场景。解释账户信息的数据模型和验证规则,提供错误处理策略和安全考虑。文档应包含客户端实现指南和性能优化建议,特别关注大规模账户管理时的性能考量。", + "parent_id": "04d0a6d4-e8a9-4e8c-a8f2-bee9fd409e56", + "progress_status": "completed", + "dependent_files": "api/card_info_apple/v1/account_info.go,internal/controller/card_info_apple/card_info_apple_v1_card_info_create.go,internal/controller/card_info_apple/card_info_apple_v1_card_info_list.go,internal/controller/card_info_apple/card_info_apple_v1_card_info_update.go,internal/controller/card_info_apple/card_info_apple_v1_card_info_delete.go,internal/logic/card_apple_account/account.go,internal/model/entity/v_1_card_apple_account_info.go", + "gmt_create": "2025-10-08T18:20:13+08:00", + "gmt_modified": "2025-10-08T18:55:43+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBkqinpLacl6fnfehKCwaw8pRy3qKwc6VXfk2vqy+NLa0lTwYJdBlXq8e5vF75MfWxXT29fu2HyUk6opUbjF2W2ADBD29AvaFIeX8frTdSVTfs5URJaHPfXsFQvvLJ3Rg8oZjBSUpqXPio9c3Ip9gtm+KdfHWts4AubnWlvECu5q0fwdcbvrPr5W8ZbVxwPjN2waGFJ9n1Xo2pDgwgKxLWA+VTiMVZ6txaIzQakEIC4/T6Bf+XF6+OTKqRF9kjUeT0tl3gSaJypvozT0cAjxEdYKhcTzwkZFQPSDY5zxgap0epbmOmRmg3VyKwf0MxfTo9DbeQ6XakT7KUm9U7rKxaKSMgDri/6DFmQkzd3Dv1KFK3xYlrD4B8LvshcpIlFZR0tdXF7L+h7vUcuu5qnTeiji2cNkwDpRSpbchRtEHfn2PL8cxdJkb++Li+o33XuI8HueScdK7hb4nMtT24utEQ+r3gZ4srVcZ77JPWWIAkfdo051LXGr5fujnXpbcizZP61qh3YRPKMWKxEQ7o+mwqCvQQzR9+mrc6PxNYz5eDMjfun825w5xTUNiedy6JntfmvTKRO+z+cxEcTJjsy4uT7bB4rBM2TXlKvVHPpzMsXKMgjd/Oa7idl8vBFlxNtD+4LBPRnvLxdafLIS3u4wnQc3bophhVaqHm+hXLUzzuP4jm8EnaQqzjo/BfuNsiNi+wm7gCZhLPJX8hDUrjmb3ToPk+El4qSq9OYDP+OozLq9Lqves6v8r3lAut5Ii2EPL2Vi0KbzgGhb8vk2HgVfMZ3qifEuaipcaNwlxwr7+wSrDuEtfZsZWJdIr/XlNK1d+2VcQ7QKYJ6izbgB/Zu/zFl+YfBcIrTaMF4/e0O3Y7hpMNOxDqi8KQDSoZk+bQyU1ezKM1HU+KtLHiVO+IO6QshTgYUaTG0gIQCpbDRWdf6PIJ1WQgpq5SwD7Zj182JC1lj4H3/DUkpmymWLJOospbguIbIXlzB+k6WGw9g+wXA84a5M6xZzdjFaSwVGxTC55j0kYwpiCaco2vfpcw7jjSUCVRUVnlHWznxAaXl6E13rZFN1wBI0Ik9Sn6rdnD+CS2aLjvahLJGpb7jaUbq7L/ZLI9BA8fRDCwoGIfwFRPdAYGlqYdJoqBL/cnqeFeN9ga87M46Kyz0puLquoQ2Ew0MAXIuc9fxbYACVx9RMiH1Vhi1lDhZOJAvI37u/G0JEXtPJopiSUMYsFY+RUA3A/Qku8kQQwax2XUYTgCR2AQiGnDCdkI+6LMtPPlmSx/QlITlWkkQCy/1ItMjEw1o/PPSftkUZ1JKqn9Jh6mGud8uAgPqxecS9Vamw5jbv6TYMNXzcek9YJJudtf7iHdpX9xRKf7lnwmouqdLT2UM/VGvOhSeDkpDYPpADoBsTjMHE0SbraXDUthLt++TF0E2eHFiPgPoIjgUCGCaA/yY9v4THxQNIZqUjHKD4diMLvaB2giWr3OiFkajHbLz9oGsc3SxrKuCUeQrH6jUtEaCz+BiLMUDkqRvnUvVqHoK/LQrLiYtXJSRvB+yOmQhj69kcR3oBrLBjnSMHKZcITOeAhn7zHSIHxOpfehSXwCJZf00ZWrb35OoqyXGo9DBOARSQ7BnLHiSzObDeoXHrZ7TQQBy+NwX+LyXZRMrgdmjDy0EIChgOQqhxAb5KemwNomIuu709tXJRhytOOiKfPJY/ws9vZ3eIVfgTsar6nXoY0HAQlRmit3zcnQLlA/xCwAxgLx6mv/itLgom07Us0IZv/BOLu", + "layer_level": 3 + }, + { + "id": "5a0f3a66-d169-4a34-95ca-e173a89429e2", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "京东卡密账户管理", + "description": "api-card-info-jd-account", + "prompt": "创建京东卡密账户管理API的详细文档。详细说明账户创建、更新、删除和查询接口的HTTP方法、URL模式、请求/响应模式和认证机制。重点描述批量添加京东账户Cookie的实现方式,包括Cookie验证机制、状态检测和刷新策略。提供实际使用示例,如批量导入账户、账户状态监控、Cookie有效性验证等场景。解释账户与京东平台的交互机制,包括登录状态管理、反爬虫策略应对和请求频率控制。文档应包含错误处理策略、安全考虑和性能优化建议。", + "parent_id": "288b9b5a-64ba-4e93-885d-499412ad90fc", + "progress_status": "completed", + "dependent_files": "api/card_info_jd/v1/account.go,internal/controller/card_info_jd/card_info_jd_v1_jd_account_create.go,internal/controller/card_info_jd/card_info_jd_v1_jd_account_list.go,internal/controller/card_info_jd/card_info_jd_v1_jd_account_update.go,internal/controller/card_info_jd/card_info_jd_v1_jd_account_delete.go,internal/logic/card_redeem_account/query.go,internal/model/entity/v_1_card_redeem_account_info.go", + "gmt_create": "2025-10-08T18:20:18+08:00", + "gmt_modified": "2025-10-08T18:56:14+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBgUl2d6Scta4RQBMUlv4P6FBG2to7BFRHZXhg9BHwNCBD381RHw8dSROjY0CP5l2V+vaH2abBiwvnIbxE31IKQRVIdO4Ewz8JwWbtt5tmL8f9cJo6ahniikYwoT8OeUbMRpDl8DxdG2s35ojn5Pkz4O4fSeqtH8+hJ6Xr0rIZlEh8/8f46c+F1LGoWRtLxfdiyKp8oOyO4Is1/w7sEFWzmO9twKFnkqW3HkTjlSQrWAnN6fUR5GuyOSRYijYJ/gyTzY/wl4XKJastvxcCcsA474y8VkOy90tdpJIQznu5Ben1hu0/p3ZpOXPYd+bhjyI9/krzqdGVVWifczIEhoZCu7/XfP4tO2yASiJImRuOR+CO/zjsUDy5+KRNJLBq5HSzEmQ9GfgwNCPc809XcZzrk6IuwtZjLPMperxN1uZKxRCjmAcRaETzkhLDAHCJEDnmwqIO2UEe0ehJr/xSTPfabX0L0c90e78TfEvMdTvI35MS+rQyOO6drdfP7sxQX7pI7i4wWJpfZKsKZVSy8YG5AbSSgdMkWeizoGdLf6dJE/Xjq0NS958wC7/1QHFe4VwtfXX3rqcPRhg2LoX9SPcvmRIGkLtxYws8a/KRMRf146tiCLscWjNMFTNQC+Zw1Y6QzodUwxGpLnafM7L+I3dmnuPv6cu972lxTYVmNlpc/u8h/+WLeodNhWaEzMn2mkZO+zYqIvJwSNYDSEKapP1cM4mjRa1KhV2FdAWcSIa62p6muCsoT+Bj7AVCIUdJF4+s/4Rhc38zcceMRTyOcwK9wWZYajHgdaqZnxNoWFIRYkpRBs7Mq2fCdHMK8vnUAskW0pWnNxJpOwaNA7OlBugvIYZz8PjeHAKIYEYFSul1oVwVprSmg4le5igOxkugrYcLTfOsMnirLxhyI0dzZ95fJSPt2yyQbUDUxb4p8XDiTNSPHwoR1FFtHUGrY6zjZJK0W4n3tw0G+0x+exh1pjVO+oDKcaOtgUOolzOvngO5tfGocxnDVNnj2Dylx+zxkltJVZ67wf9cj+qPLcEDPnN/0bVQD/aHPjbUzdVtCDvBHsGU2KqOvOQRo5lhoBj4biXkQCgARq6rgc8rTMW/7a6Um93POR01838YeN2EE5ameiQV+PjkLrcr/MfY2yche9hwHpEgEtYzi+J7nmOnQKPW2/KR5oXhVL5SLh9xTYFzs+yDcpB5FFd3cZ3oKwJ00X8FXbFWdbanzH5JZDyJsz0uiYkXAdXvU7HYDSeY0kJY6Zh4D7KzYnMLEo+FYkM1UM2WA6sAtPbs0NseDRjhuklugEvOSBsLdXaJY/2ZIIQvy1G8Jy5C++r97NdT5tli77firZyLt+tpnnNj5D/kFmAxI6mLVx2LLTPhvloz4dHP7zHuB9ADxwonQQJxrJ2yL8u9Bya0C29eRCNRpYC5WCPNdjXkR/JVbdjF+Eex0DkjpnMUgwoboTAKNCCt/LsDPsHnfxo6m8X9t5CvOqsU/n1XOplLXPhFlJNOt0w3GuvscLiyFP7I7Vojk0CZ5YfYxTVzdjSrPv0huwDag6PMes8+oU8A2+pBDki3YPnKURMTwxlfjF7oSZjierV3JnlqBQjwAICUDFqCnYvgTbjj3sJGH+ikMk9VFatoxbpZpZN8SzKhZ8kA0IXMBVed4vAuNZetQ==", + "layer_level": 3 + }, + { + "id": "6a7b8a19-18bb-4222-8c43-45f6c25ea130", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "天猫卡密账户管理", + "description": "api-card-info-tmall-account", + "prompt": "创建天猫卡密账户管理API的详细文档,涵盖账户创建、OAuth授权、状态管理等接口。详细说明账户创建、授权回调、状态查询等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括天猫游戏账户创建、OAuth2.0授权流程、账户状态检测等场景。解释天猫平台特有的OAuth授权流程和access token管理,提供错误处理策略和安全考虑。文档应包含客户端实现指南和性能优化建议,特别关注天猫平台的OAuth2.0认证流程和API调用配额限制。", + "parent_id": "c32a3e21-0961-4618-a256-ee1396eca8c2", + "progress_status": "completed", + "dependent_files": "api/card_info_t_mall_game/v1/account.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_account_create.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_account_authorize_callback.go,internal/logic/card_t_mall_account/account.go", + "gmt_create": "2025-10-08T18:20:23+08:00", + "gmt_modified": "2025-10-08T18:56:38+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBoR0UyAkbkceqMyhpWku8RVMxI14JrT0WuZAKIquaumc/fyWO7e6sPSexwLceo6/MRNBnGOl41j7jMKXHDp2IJIYtqDgbDCxUwOhOQ8OIuqHJLuTFiEYbTEv9b6wcKKc8EAUOn0Mq8/AHAI14ujJMZ4NX5giXQ1UYTmQPJBU74L+ax7JIOqoeJSCJzn+FNpqHnPZfjB29On4hQ3wkOJvMbEuzSQ+r+Gru2HnMF3kaogVcbE+IytKZo4iVifeIEzWZup7nmaYSY5JPaZtHfY8dLwFZBNsNkKfQO+EFSfoqA8csAJhIyoi2JkXmJgskA2IwVlc7ATUE+4hMEK2SjDNM190H1+u0MFNBrjbwN/nn4rW9P7RynuaB4g36TWvUa6jZFBFwgACpm9x0rUwQJMVL6audS5N0KytY4HsnTtcC0OtHf1Jyr8xeK9Chg3ROKePyBHvA/xmz6AOAZ5E/EDfyZrrPQ8ctqP08gcW0FVVtMK/nQantyuXSlF2prvPTpbRUvukHLA2/M1ZncThXExGhO0PxBSqV/CbOKaSMHZNG6ij3Vr/YN0hlrXtx7tM13kN4u+eudBT5HkmEO2f4gRhmurkgUikBdoqamLraJQUKr+TwS1qSKTYyv6+FzDg0WPvBMVRN00zU4slmhMGSA3VgFKNL7L7y62KwNVqsED+7p9MXnudASGPDkFOuYbtil+LJFDuUiFiIv4PfhL5jmrUApuQAe3EB0AzQujJIrRh2sVrQeSGZMH4vAtvPL2qypV9F9lo9/XYybT+F7i/3Qt5dslxHl3y4xS5M8DKi4qdKHLzWXTHhX/pLeiRiaS/nDIHBu97n5HSUQEtLuY585nkaoMVfgmyg+6ULtg0tU6MdWqkr4b4ANKqvMkZHVrmfXqvIe94uefgBR9xYl10GJS+kFAPy53hJ/rPlIv/8ERnBSm1jSCCgo/bgU+ELVwq8R6blJdx3AxQI5BS65muiIBl09wf5MrrbYoVTl42wXImijcLuEU97bGyUH06LRBHDjkMtClfAzQSUAjHQRmdPTHMuVBhOQhmCjSTtH3Fkj+/4ODYAVa6Begbs/GUe3s2TzX/GE2XkHZCzUpIiiuq+08HgN6x7+Dl9RwoI/vf1IsfKnuhPrI0tkMINyS7v2XW6TgOL2RhNFE/VE6el85W4R7lldv+b9XekZX9s0g+WzI16nFSczoA60cIKhnWcGN77Tuyokf8dLEGr7mSrGwuXJW1iXGk6J5BfaotNOd3Peib6RgN+cGjK8X+K1FpzJ80yoy5U03Tkm42yLi38jXb9tMwu3bn5A9zTQgbvzeTwBhSqU9b2HiCITl0jMEseWoqRPz5p4PLomOL4eatGjoTOYt0i7ndNdRXQvlOknlHER4JJF2TYnFosnqu/pI4V3sEH7jljQRlw8nuyWxoJGh+662U1BS6wKEvY33aQFXQTnIap10xeDGh53y83Im1qI9NfhuqVPqC3iLrnnoH+g/ujcZvV6Zbcbu61QNwo9P5OPk3YDMl", + "layer_level": 3 + }, + { + "id": "f1ed70ff-aea4-4289-8223-fecd0ffd2cad", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "构建阶段详解", + "description": "dockerfile-build", + "prompt": "详细解析Dockerfile中的构建阶段,包括基础镜像golang:alpine的选择理由、依赖安装过程、代码编译步骤。说明多阶段构建中构建阶段的具体指令,如go mod download预下载依赖、代码编译命令、编译参数优化等。解释如何利用构建缓存提高效率,以及构建阶段的最佳实践,如使用.dockerignore避免不必要的文件传输、设置合适的环境变量GO111MODULE=on等。提供构建过程中常见问题的解决方案。", + "parent_id": "0e3e4dfa-8842-4108-bd6d-6cde149b8707", + "progress_status": "completed", + "dependent_files": "manifest/docker/Dockerfile", + "gmt_create": "2025-10-08T18:20:23+08:00", + "gmt_modified": "2025-10-08T18:56:29+08:00", + "raw_data": "WikiEncrypted:h7ADvj4WLJHyulzCl+z7kAC4I1igMIbmJdop4VG0ZbJjFypRxn4xUly2HIQaD6E7Ulk8/xSnFXX+kBsK+YCiAFpBZQaJXx1K6xD8fgHOhJlmWyvZ/fW+LtZKayd0FV0jlHO2AcIFL1eWHd/6OafkRW0RQ3lAEZ3RRU0iA7UKykKoL2lHBTNrjnDDxz4sLu6jLgCdadAE7a1NJYx8QQjdEaCcrMMyW4INTvYDbVmBGbjUfeYUMV8qhxpfBbCR/tGRxLtGS2TyPsJGGPPDNDhbPpwJ0yJPkaNCFT9eMLfbVXwMNLEEHZ36uelrbeySFxF3laONoF3Ina+ld1a1rCYzeBOBrisG3LOcDOgAu84dsk3bqzePE61QcMUimqePrk0tV/VYhMyphCghL+28J/zngBOlSqkLapTPn02rzSuLBtwuWDsm7IdjT0g7vWZR9cQnR6vmGanUjlgOtzEPCxZniXz6wkdcKMs/oSI8NTK4hN0cPQ0XppJQsFzBrlOiE9Fgc+zz/XgEM1isY7Dk7z++54qnPnGLZyatfZnozoDnYQ2xwsF35q9a5kfjP3EkT1RxyPWaqS/sy2HWH77doAWKcDkMiO9iiYPVmUu4SexyxGTnn0W6JUTDqEr6EiDfR/4CwAy0bvzdLNqff9xqVwhukHFvh+EGtngOJKx4iEREqkW8TGhMHdQq8T4UFKDCbBMt20a7wyhGKuDFcdTxOphnRIdgGNXng50y/dMm8RpaQW+kZ4teEXmlsP9HmqtCdqh73KgHhKA5m6k3TGbcusQX8RpxS5xkNYxKSRwKjH/XRgx9kPmPjZjHWS4eWzdmDb92hKVy/lGAJ0qG73t+Y4Vqrvj/g2TN5aGhhyKd/H5QXz/Fz7p9xsHidqQ3uWc/dkTOfSb8BEeINpHlU2KCiK4hTKElQwpYs7burcNRRdw7WiSp8IrMFex61TrKTAZIioHCeOGKRfWNoYHCpQ4eCQEFmw==", + "layer_level": 3 + }, + { + "id": "18a1847d-4be2-4c61-af2e-3f527f5f3d1c", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "沃尔玛卡密账户管理", + "description": "api-card-info-walmart-account", + "prompt": "创建沃尔玛卡密账户管理API的详细文档,涵盖账户创建、Cookie批量验证、状态检测、信息更新等接口。详细说明各端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括批量添加账户Cookie、检测账户状态、更新账户信息等场景。解释沃尔玛卡密特有的账户状态检测机制,包括状态检测频率、异常状态处理流程和账户负载均衡策略。文档应包含客户端实现指南和性能优化建议,特别关注批量操作的并发控制和状态检测的轮询间隔设置。", + "parent_id": "7171317b-83f6-4146-8818-b00d88d2b2b2", + "progress_status": "completed", + "dependent_files": "api/card_info_walmart/v1/account.go,internal/controller/card_info_walmart/card_info_walmart_v1_account_create.go,internal/controller/card_info_walmart/card_info_walmart_v1_account_cookie_batch_check.go,internal/controller/card_info_walmart/card_info_walmart_v1_account_status_detect.go,internal/logic/card_redeem_account/query.go,internal/logic/card_redeem_account/status.go", + "gmt_create": "2025-10-08T18:20:24+08:00", + "gmt_modified": "2025-10-08T18:57:15+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBl7AFS+0V9EBoppO4IsIlgknjA9Zzn+5hUWkkdnMISC5CYpQ3ick0SR5Mn60NwWCjSgyn9tJBmohQBrkR7351QihXLt4C3w7EHveHmwZ+0uOjcajq8e2trIg/7vL2Cme4X2Hb6qG1dBHe+QewzwbrR+s2ivL2ZBUVHbNTYqOVu/LtKXASVn8WzizsJy8M3YALdi9aGYPVxe3tG0uR6SypskX10rHVKv6iqyP9PqKLMrWLgbgNLidMynnIfiYaJkjwFVWDArm+GRfL9iSztYoDG4zmt01VMPYfJ4U+YAbeI67jlZkH++gOaL0jeABDZUNYnSSh2362J418uUm+NX3U8yQkYuEksmbZ3PjdFtpI6gA88wbWuMTr9NGz6NAw7Y14rcuHcbTWKBcKlkCMLdQk1OCRYSLQK2hgYvzRvoSOyoO54u8EB50zw1p0hZB2ziVMFXXBWMnk6DiBcu09+vJcEBlefqkHYCOGQ9u8GnDPIGE+h8C6mwZXSUbzHspfZBFmwo2rx1jG+GUhuE9Nv2SpsUBbNGCZ1N60lr/D+4tiJ9Bm4TfBLoKnWszoMAOYSmiqG5xFfVrgjVNX1gHz5Fvz1OKyIPfeC7STYl78rHHydJldofyMXxmM6RmJpm9SAf1UBxBPPeDk2u8IxyBX/M3t8Ani8Vr/Br737nCo7r4t3hUuEVe+hV6PTmC9aeTWvT47WbYT4q0T5Td/zg83FeLZXeHo0v7qDJIEu/U1AFstcvhF1cYnrqfdRaQPLC+NvwBVCg61aQaJfyM0akp/oUh2pl2bXudoa5pIPlxiaM4gDpMv6iURLOr7Gors1oSPojgBM5fNUwjbvvmgJztf8PUnnMcHxBgO0EyUfy7dmLxkJDaMNRR8YDGYHK8XHqsiCJtlFDZCknu847jNfR3RE7ND9JehCRm5zReFaIw5d2jd6rtFp9Lgt1kj1+7sK+eHx7U+pXZjlu9q0Bk7DXhc5YZy0R1xu+Z2yMgeb67CVtosr5abLqsIyubLzBTt5gRJd8zm5iNz5U2NDq8QUprf5k4DXMoMSmj3gOwW/yIoVhgQgHPMjGtVelXb7RSYNV7nBJJ2rbyg6eCwxag7sV3584VAbJq2tx1wmkyjLFefQlBayViTVvYDngeZLFo6TM118hTXZCg3V/kVBesEixvchCkdoAjDQcpeNlFNimtfN/j30H/yC9aV/84QqCSzu4XOzK3toJvQ8NHW2Pha4Uepet/xAGYVbM5VY14haqlRwmNCbXmYthr/FewzGxoaZ4ZLdIRHRI9HrN/2dfK8N4cI5wLvZboQMNIKByVy2LfrH5YBgI9F86RllWtvEeWx5gVeV1sLOxB2ljfTHX5co0CG4zoLe+9AU8Bqu+kBtF1m6BaKKkqTV9kLPLMZNmWTMAfVxnfMaj9xjeXLPh8hTT12/qFhJ+pv0/XhCPl0V289QdlchT2ySBXL4i1KrY7iNonoSAyXenxsE5Cf+9d8+UDdMk1whs5qlT9kAkNwrFEuqb0tXhAh19cBqSLOBy90MTvZ3rzZnCVJ4RcABvwgo0m0IzV1PcVynixzVh6/WilxuJ/t2w5UXlw0xDPfv6Oc2QT6g5TP8vmGn0kC+fvw3M+3pNKZnvkH/kXHiZR6ZoOYDFY3/0sslzc5+MG0ppPasXSkTbMgljd2rhy18zfdmin/UDAHeg=", + "layer_level": 3 + }, + { + "id": "9b95c229-e3f1-4960-a0be-1b88f001b0bd", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "主服务配置", + "description": "docker_compose_main_service", + "prompt": "创建kami_backend主服务的Docker Compose配置文档。详细分析docker-compose.yml中kami_backend服务的image、container_name、ports、environment、volumes、depends_on等配置项。解释不同环境下的配置差异,包括开发环境使用的本地构建镜像与生产环境使用的预构建镜像。说明健康检查配置、重启策略、日志驱动等运维相关设置。提供环境变量注入的最佳实践,包括数据库连接、Redis配置、OpenTelemetry设置等。展示如何通过Docker Compose扩展配置来定制化部署。", + "parent_id": "58118687-a7d8-4b0d-b788-36481cba182d", + "progress_status": "completed", + "dependent_files": "manifest/docker/docker-compose.yml,manifest/docker/docker-compose-local.yaml", + "gmt_create": "2025-10-08T18:20:37+08:00", + "gmt_modified": "2025-10-08T18:57:12+08:00", + "raw_data": "WikiEncrypted:h7ADvj4WLJHyulzCl+z7kFDscd1aC5KxtjHTjiiSU1zE7PzaGOYJ+Yho6nUmFlncjDqgU9yqAJXFLLWnMcFSFK8U5OwApMqyMqONb3fv45XCiLTzIfBgkcLgFzQ0y4EDdwKWpKprWy1eNnWMb/m2QMKgCPpqHbSqreXniX/AZXrW6HlWRG2TNMz7NyP2IpJraWJHLgyIvbm2z4pNhVvr6Ysj0rsW0R0l7TgkNgMcdDXwNDP135bsvlW0+lcDDQfzIzm9Se5SVnrZ3kvNyrjTxohlXcHT0Ee5t50msXzCmzd9vRkgosb5s/JjS8W1C4KS7fPVWMKJtBj+SJ4qkA/GWprywN3UVx926ASw9p3qweqHyMPrHtT2qcclvbbBYPMVHur4ZV5C4e79F3Llv/1dbpOeaRcRU8zKUWRQfCtEHhYCBqSZQA4SlWIIuXWWK1LkG9KdjiOhuG55EwE7ackhRP909avT9YUaIlA7OWePgUtKquVu8ebZEe5PCcd0CejuDRe+mWjXZijZvzJv9kX0QY+B+WHA41bMELlafHdiYHa1xBVHWf53LBDVVLVSGbUbCl98dWA7QLSVQ/iTxI8yVxOzJpMjaJ58jM8DXTTKb51XFVeyxTNu2T69KFbcV8Z5J79/rMnF0TCDXjB34H7SAKMb8PpNrYkj3vA52bZ4z3U810dt/tXDdsMGTAPdoNrr6pOsdSEKdZcSDfH5wstFaa63KfgXL9CkRoO2Mi3OmTSzKzhMiyOHynZAa0E/H0RoEGk2zT/70+WbcMa0PpsIybvh+2dYANMQAMo/tqstywpcVcMt3nq3k6dxgdbS3HMluNx97m2eqJVvbiJaoUpnONIBK/bMbVjSwca8ccwYH+u7YdVXWGbfAv8iMhLv+y/lVquNH6u0rG0oXjZDPHp3ibfOaUiGjJM0lqvh3Z+iov6WtnLb7NJL4V1DkXa5Oy8NskWxr44tcsnJdgrGjRx1hQx6FYgUdCKdzNyAmQbmilpgi5f5Z55fReLK5Xy2knIQngXGcJjgfcdMZmz72Z1/6I5D61elD4qNhGxWqL+Phq9JmnBpbdxnrP6W2RRdJQa66FDJQqRLKxq2Vwgc6m/4KdNpbCYRO0BpEnJn8mzVlVcj4rNJxhqWLN1qsi7imv+mUoFzDC0/5o1SQqz1/+RXbp0oXPJig+1ci26QKjkvcLg=", + "layer_level": 3 + }, + { + "id": "529d0827-5291-40f8-8e40-3b0ec55570bc", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "京东Cookie管理模块重构设计", + "description": "jd-cookie-refactor-design", + "prompt": "创建 comprehensive documentation for 京东Cookie管理模块重构设计。Document its 架构设计与业务场景, 数据库表结构与索引设计, API接口规范, 业务逻辑包括Cookie轮询、状态管理及订单复用机制, 支付链接管理与失效处理流程, 并发控制策略和变更记录机制, 缓存策略与性能优化方案, 监控告警体系, 数据安全与接口安全措施, 以及测试策略。Include practical examples and troubleshooting guidance.", + "progress_status": "completed", + "dependent_files": "JD_COOKIE_REFACTOR_REPORT.md,.qoder/quests/module-rewrite.md", + "gmt_create": "2025-10-11T17:28:55+08:00", + "gmt_modified": "2025-10-11T17:31:20+08:00", + "raw_data": "WikiEncrypted:gc3Nobv341FwplqquUMhwpYHBkEN0ku+TLqWXEIgxy0UQLWUWDgkuyFblxk1o56sdti5kYjZlI5e/9//aiJFKBkDd78ybG3xHnXz0MTn8F69iINGQzKGK4TqQpSWY2ZQliezKr2UdZnjwzqLICppoznHXbakAm2QyzUOWVQZbOirkpdpxjk7gmRurOxW1dMAsYiikka43y/oi1n1ojbcfSat4n8/ICGXklUwNR6EIMRUBcixqY2VLabXYVwweAXZdUzH5oD6pFklkfGtN/s3/LOD9cTaeFUHa84FgptLBUOyIflisdZGn33exnrB4Vvey0eohFtP7epUdZsKJ7FlyzF8Y2AvvYgifJrXQWNiovqWmkgQZLL7NAbAwQChoCI8r1KXETsKbVJVllvmuj+k/sgRGnAtlQVThz8GA/JlF4jbTtPyU7z56ETFApMJ0CQFBwwWDKzCytID2NVdaDKxTPDdFaP9qdVILmb9ZL89PeFHJlkSQu6KCrgM1JD3scBJIiDTU4o290c6OwxO9RPGVXtLKu6zqWfoliffwmMrz9LwYx4mrXjSBweS5oCWWKEsqJQvTcB7HnC4CTEWZ+Lx646SzI55kyZAZljFEgFzdxOcNKzfykfKulyPdSzGnzYSRI12aX5zbGppVi5sSRL+UmBujUksoEaSC0bfXzKx+FVgV31WU9Ktg6rL6HZUnbAn+57xNKAgM5Wj5dAZAQSJe2T1GaEKHUmgSRU3sk/yrw9Jo9qKrfWXnqlEVn6RW4XaAZlFmTrAOU5s21XBPSI7XJ1q2YlDuGzz4E5AL0XlQmreUmEJxuLFbRDfh03Fb8+ylZ7Ahkn5ErmQKQgk1Wat0cEoX1WiIKkWJBsHaZvn4F0VvzF5QA4nrpU4Zk6cIvKS/EYNQtUtJW1HBIWr3QK5aJfqYu4KExKwS8W3ntRDiRHZZrhmcwhpMDmKUOOtD115" + }, + { + "id": "9f851a40-0195-456e-b877-f1610bee0ca0", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "京东订单导出功能", + "description": "jd_cookie_order_export", + "prompt": "Create comprehensive documentation for 京东订单导出功能. Document its purpose, implementation details, API interfaces, and integration patterns. Include practical examples and troubleshooting guidance.", + "progress_status": "completed", + "dependent_files": "internal/controller/jd_cookie/jd_cookie_v1_export_jd_order.go,internal/logic/jd_cookie/order_jd.go", + "gmt_create": "2025-10-18T22:08:05.7197466+08:00", + "gmt_modified": "2025-10-18T22:09:05.6022124+08:00", + "raw_data": "WikiEncrypted:gc3Nobv341FwplqquUMhwjlgKxBeFfGk8njr/gp7X4kXK9AjWAttEPG3zkYm+jNLq5Sst/T2neRmqO1ycA2iXqQsv07j54mz8rBDiQhxkUwINaMt+UrT+XKMrUvjEX7Nuqhz9vM5qGWKe4wNp8o9wUlfzV4Kjt2OJFupCAoXMm+EISO3vHjWMnho5Zy1i62p85KLxgMVsPh2km6waDCup0YdCAZPwWmti/gczT82Oi6uoLPSEzS9J7Upfpnxl1+P7z91hyLShzP7rzMUEKBy96xQ46YjekjHIp4AYC0xW8GyqN8FQIss12gVy+so8xEOJtDjyaKhkDXyLFY4+UzHSxZkLX1t8+ubCSD2WMb046Jfdb/9GGF1RkzU2e7WaFLci05oVxImePB9S0qNfjLniymSwnQDptD+gDESq7PQ4SixPFdOxr2bqyJgnc3al54EvbXPbGnHgOOql/8jeB4cS+RzKv35Le+6meo1Ou1kNrLrRYXhnm0kQEfmuTda/C1jig59+ckPZ/QwIT+/OufBfAdfh2AkTfLixe6NpUq7mp/4OcfkdijUpltmXMqJxqyDZsCxbS2e2Kibch+bsFnEkGlS8qkHUVH9ds9EpNUuvfo=" + }, + { + "id": "816e73fd-ddde-4333-9ddc-b0bed7d5d9e0", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "订单回调功能", + "description": "jd_cookie_callback", + "prompt": "Create comprehensive documentation for 订单回调功能. Document its purpose, implementation details, API interfaces, and integration patterns. Include practical examples and troubleshooting guidance.", + "progress_status": "completed", + "dependent_files": "internal/logic/jd_cookie/order_jd.go", + "gmt_create": "2025-10-18T22:09:05.6636987+08:00", + "gmt_modified": "2025-10-18T22:10:35.4600134+08:00", + "raw_data": "WikiEncrypted:C1x/54IbJKQH/5Vl+vgwI7/wfxTRVBfX0PW5QbxIGkOuWo6CGgQ7+OLX/BVj5fw36u/LmvuB2hEnZUvUgtng38VCnBwGT6hQhX601zUkA49s2aWZtGIFyW78W3BcydQz+h5mSrci+pR0i6nNzI+toidJ/QAfyngC/sRCwZc5Tm8f88JkgS05ROIW70m3Bm+LhVtCbCKe7JYldXcUgUH89D5bfSUel7ZcQ6pdw03fmXcDAlMxXA1jkTLyviLsbM4bsE4ekbFR6dtbn5NwbnrnrQCFvgzAeFa+3PYCsiwwMFXj8BdcvB5BPH3awtJ2W3ufgOrvaaMiHlZWt2qEwUlHkMHp5rSU2LLWkm5NJRqEAcqUjVFtSl1b+tFMXR2LaSl0MowZ+79OsRdjr9D3WkoOrTQ56LwCp1MzS6p2WkxdLz2V5JH/BgB2B3u0btDgslyWU6wII2AUBbtbFAI1LNhcfDeYEfD7aU9TFb0ufVh8/VZPBabw6lLb5Ap1/2xIq6ow" + }, + { + "id": "802f0a8e-251b-4bdc-9194-bfdc2122b3bf", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "技术栈与依赖", + "description": "technology-stack", + "prompt": "创建关于kami_backend技术栈的全面内容。详细说明项目使用的核心技术,包括Go语言、GoFrame框架、MySQL数据库和Redis缓存。解释OpenTelemetry在系统可观测性中的集成和作用,以及Casbin在RBAC权限控制中的实现。描述RESTful API的设计原则和实现方式。为每个技术组件提供实施细节、配置选项和使用模式。包括实际代码示例,展示这些技术如何在项目中协同工作。解释技术选型的决策原因、权衡取舍和约束条件。为初学者提供概念性概述,同时为经验丰富的开发者提供足够的技术深度。", + "order": 1, + "progress_status": "completed", + "dependent_files": "main.go,go.mod,internal/middleware/auth.go,utility/otel/config.go,manifest/docker/Dockerfile", + "gmt_create": "2025-10-08T18:17:58+08:00", + "gmt_modified": "2025-10-08T18:21:57+08:00", + "raw_data": "WikiEncrypted:w0CkdCdnXCcvlN5xOpiEhEX3U68GI0Ngj6azFMJo9xQD0Nwsj9XajeArLn33w436LuYJWl4xP0dT9zLNODhOpJWtrSnsTOFdbU6xnVdYH2WhlC46KME7gjNRiRMPuUpA7dVEI+NP5zwBpvDMRHvIrAb68HCkCmtSyGQKZSrTNYL2NxP6WPImEyXoT9RMGl6UVv4yJYYr2tmXUjqrJgnZFvSGQtZm2LCPWlIAAFHHC4Q7BPX22tszuLBPhoiVxcSCqHIJiooavJWuc9VeQvWXs2fCKn1YDu2U2lNO5216USYVnr3Ut7tqWoVNIJ1CpoCkZS4SeZ0CLrx5YeUFItmKKJq7XiPSfKRFGs1zfEOKcvdyL+RkR9+1SKIWpGzGcTLwP6CtuQ2Y71Lwv2eE2+xopuoSOmPUTGRVBglkPMwm3/EJuszEoTr0cKi57UrMxc1NcOcd5mXvE/AzIQBMbRyOCWtrzO/qpYlJATnhh1i5L3NpdMDU1vvxj3LFPSHPylc5OvLVkiNtifBGe0YzzJMgyhtKNTjc+BRy/nugT+hlJtBU8+sAxmddiQv2tRcUALDh27u9r/VslWIqKZBy4imfsEo4Hg39v/uoP1SVMfbXOa/A42Ogvfe98jByFSvFdw5Q7mJwq49USkBzCKL8ax2Oe3f5FWNRwkGPWr5eVK84Ho4igv3W/eA+2IytxBe60Zdl/w71ClZaknfiSLFsncBZrdNHC02tPvqStcReEZKC0fwXKU2+zIR+gN35Dae/0/QSY59okC53Yoy0/7pXvl/UJNajz4gJlBvI8m1eC1yLFB6FDzvCPnNR3tlb1IN9JPYf3aI4yc0QddV+sRB/h5jcS1wpB5EwJhrwmmf7E83hHD8zxcy1YAC9LgvSjW9ib+JxZniOiwBRdKPE7mt69R2mqktSW4IQKnoYx4KJpsoltWC7XGPanW9wUXCkEYyhMDwEnSBGtwlYEg7lWpsl9b/CBzw/9z5cnbQBei4HDy/DDmqVxAit1VDg8oIAnAw+fReuWS5W+teFhuCkPvq4pRdb7NiWyV2LuCH7ixYAlIBm3YI4/2Td0Hd0GCZdpoepj4SCzQSUr8RKrse1IlTyID2icWpeks4xJ/cQnH1xw7sL5u52nipyQ+T82gQ+hbkM2i5iC899sK23Rdb7Ug+hKDlaxVoxcsaoIfPvqnmnLRXHxsSMsJcAEuzAd8adU9H0AFTMftLv+1oNmYj2ZhWDZZqohcUOT01qCqx1pr5WkYbE2VXp6Pqpa08OeoyK4z8XPOX0" + }, + { + "id": "5ffd09f4-939b-4b8b-a254-494937471526", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "订单处理逻辑", + "description": "order-processing-logic", + "prompt": "创建kami_backend订单处理业务逻辑的详细文档。全面描述卡密充值订单、兑换订单的创建、查询、回调处理和状态变更流程。详细说明订单与卡密账户、支付渠道的关联机制。解释订单历史记录、订单统计和订单汇总的实现方式。阐述订单处理中的幂等性保证、事务管理策略和错误重试机制。提供订单状态机的完整描述,包括各状态的转换条件和触发事件。包含实际代码示例和性能优化建议。", + "parent_id": "201b5004-c469-41f6-a407-c98892822b49", + "order": 1, + "progress_status": "completed", + "dependent_files": "internal/logic/card_apple_order/,internal/logic/card_redeem_order/,internal/logic/card_t_mall_order/,internal/service/card_apple_order.go,internal/service/card_redeem_order.go,internal/service/card_t_mall_order.go", + "gmt_create": "2025-10-08T18:18:19+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00", + "raw_data": "WikiEncrypted:C1x/54IbJKQH/5Vl+vgwI+WUf3/2c54GyQsd262eumPCPfeIDLF4ZKJTKT3R5YZNkPz3T8xv/2u1DVwEwDzhtyS35ARhwhlFbL3eDQbUoFzXUP1TcBAEZa9pBoZu0QVk5rpIzwDTJRkSX5j8Oe+1eCdRpNuB8tCuTkIcj3PG1Xj9BkXLyBhcB+mdqhpetnuBg1VR+tkxZRofLH3u7Ua4YdpFim9HwivjZIisiG1NCu8NKhUXgBbPOO6e10f4AFLROv7zvd6WgTEydkP/qIA9ZePQdf3Q50Ll7Sf7167Y2NH6zwpj1apKAiXhXKg2FqkNr7AVzQn2vEbrGlCdmuCqGEtXX3FfsdL8uqUiOIbwqoV9oLAMEdlpD2v5X/yFQZw8lzc1kg/Sj2jIcckJaiLWI2ADsMQnCdJgU5RTmbC0JS+sYbiHL//AlRVxdKU489qRB0aUGFdZ0LyvJwpez3SRSke8Fj3xmQePxeQHqOolg/q3mthumyNoUf0Kb/3u2ssO5KEMc8jBNQsJp8xSGSEJjwgXbc6GYNe2GmuP7uJsQb015AM+o6ITmrfB8JFKUt4DjcbXlzSTowFqEpoW2IUUXfsvG6eVPTu438PLXJa6NI7dd3InE2u0YLV4QLXcXOOtlNGl+VFAiPRA6pxCR/MYAjxYAsoASAUQXMHZwKSRZOhFo+b8NVhrrMMswoGJuv+OyGq5DiFihJY7crKZREtylnXj/KzS00wRfQPTQCjHTh5rQZJlKIcjFZdXvSgD5P55k+UtX4HzUfOmHWiN0fnunOY/YnMO2un3U1nHGnIFoKgKcABdN6t2D2LI/RC+VgTJcsJXT4QYBlharDcrYW2xmpl6Wf9kKRaNc0yLZK1MGuLzcsiv11kceSNGvjijk8f1u/Emuaqq/fcCJqaD/sGyexZ7Kgi/WTc445yqv75vuVm9ya3E3OZJys7E2gtTwhmmzfL4IZ/6xHddbR5+653cePDH8FLYsxoz0yDd8eEUd7Q1Grl8uJjUDhpog1BMhzoE3jM2gfqXCecpzv/t/R3OElbIBovAWlN8W3betCMgzNeFjmIP3yRdLS5vzdrH3i0NhAQWjxu2v0LXC35ft0sn2QzDB533G178KMtJoFJfVnvFdk+gBJzD4oofWysVxP68zSYSBhqvrMWI22nBMDn8/sUDhxyzcFDcC9i4+Bsf+KPDUFMCYZ4wBwMK/OF1Lz1Annys0TP5AVZ7zpy3T5+y03y0ZqbKhStizhiiBAi4gD8fcP+OGi4Bzx8vOj4wspmBHfTPfJ12Riv5ijeju1inZNV4U84QlFXDzUUvdaSb1TFpcaJV9yDF5HvWOV57diArwR8Z+bT1R+p8Zz9bb4dpsw==", + "layer_level": 1 + }, + { + "id": "4bf77667-f501-43ff-8e67-ed1fa1562255", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "订单数据模型", + "description": "order-data-model", + "prompt": "创建kami_backend订单数据模型的全面文档。详细说明v_1_order_info实体的所有字段定义、数据类型和业务含义,包括订单号、金额、状态、时间戳等关键属性。解释主键id、唯一索引order_no的定义,以及与用户、商品、支付等实体的外键关系。阐述订单数据的验证规则和业务规则,如状态流转、金额校验等。提供订单数据表的模式图和典型订单数据示例。记录订单数据的访问模式(如按用户查询、按时间范围查询)、缓存策略和性能考虑因素(如分库分表策略)。说明订单数据生命周期、保留策略和归档规则。详细描述GoFrame ORM框架如何将订单数据模型映射到Go结构体,以及DAO层如何实现订单数据的复杂查询操作。", + "parent_id": "b8ba5dc4-8d15-4b61-86e8-07a963bd3fa8", + "order": 1, + "progress_status": "completed", + "dependent_files": "internal/model/entity/v_1_order_info.go,internal/model/do/v_1_order_info.go,internal/dao/v_1_order_info.go,internal/model/order_info.go,internal/model/entity/v_1_order_profit_info.go,internal/model/entity/v_1_order_settle_info.go", + "gmt_create": "2025-10-08T18:18:21+08:00", + "gmt_modified": "2025-10-08T18:28:50+08:00", + "raw_data": "WikiEncrypted:1TcXmWRnDAgI41cGfWTUk1R7Ob0dlO4iS5md97HGy1IUcNsLG/EGmFW+BE7FWuw6SWfHaCr+3MFY0MgqSzOl1OL2ZM9TRbeL8AfQEc0ln3MMKbJQCyDbnjZyYdY/LJJEcsEHhprJAw8tIkRHq/yYKI/FQE4+YkVB7Cxhfi+vNWM8okozNI1ndjoiweeS+IlD3Yfyxq+htkYw/Fyfy5PwyH8qf1tY9ToWSgBkaGm0nl1J7yTZobw3ISf4Dr6L+VaMy5i9Wt1e4xnz1cKzeamnSMuW/ntuDaTXGzqypeuvRNCLYSWE3IzNMuJlr9KIZbOWsrhy+YY045ObSUF67N/A6BUP+0iSk38A1T/E5+pI5JhlkIld8iyW411EvFzoVzyciwB7Oc6uFqVG6VPv1UNit7STXIBiGJjGQSE8aUoqOUP2f5RqWcUjidoH7+Gjj1TlBryTcdmu27PLhhzofQYQqR3KKsKQg/fTkpRlzObdnqTkINMqBINpscAMsO68JlXBQ87nMRHflBa+KzfPIo9+M+agfc/jCH3//VzBWsObHCqSQDK7L70o0bIVQSrdVd+Hcr2jRepyyVTEbh5JlyXjSjad75lkuTZPIO+JSToIqj7FspqO4XxAN6syEKlOxVJgXDkwys+2F+avcGxsj4eCMnlBzckPEWQh4JFOY7D7Br9rINJtG5LMVZbbbIxKAVbgYUFH6PnVTGtkZBxyoI6tRX7SLvBJRLztV0lVk0JTcnUM2z4poezd3nmEHAWf9OMGY4nImos2OuYgEXFJh4eg9hbcZfUcJzY7tjgfkaX0moVwltRVq8E+Nx4+aHaPlP7k3Zsfk5uNA3Hy0f1Nd0Zl7bdqfpymAG0krtNjxarmim3QtliP6m+TdinGDRRk5qWRUlvl6rzFALN8H5IVMvYU7Kx/X3nTO9Q/VWg96lS/O4OKkO7ZILzgR4og8ulXKnlyT2DSistUkyBi5oHlhvzX1AxQvFcB7tbuiJEcnbDITKxOZbEiZhn+Hn3RHNo7p317l2W3jSbBUB8CsITZxd9AVDmEAkqGyljFIeDeahooiZ4TexZR/g5OcHWhj9oPkevPKLubVVYLNOFsTYyhW/JqjRBQUvdBhXchp3dGk+J7ShGwPd8QpYEyya0Qp+oEwSKHatFjL7CCd9XVcISq/eGmQPGzIIFQUzatZKGZMhHWrfD+8ZiaXsXdxKmL6n0ch83LPdUXeLKvH8xH+TFsRTx6tnNoLT5srj96a/fvEoiULLNhwd/XklSwmBC6E10Y+H+ypV+pBstWfpyChTgc9jSiJ69+jPs4vs49ypcBttV6yQtBjmQrlN+pk5pfjuaW0MBmkoE0MAoyLn+NLEPlMdU8NudCbRyh1lpIUyPOYdTVFzzdkPENvQY7KrzMhlP2vMvDS0VjDFFxLYP+CKh3KnvYVfn/AbDOXKYyPnK+ReyMlw8sjOlW6FCeVmd3C/6mosV+fOfQSy/jUiFHe+7WaTs5TCyPZWPnx05rHh+qTi6A4JQcWUyc1CXLWHc+1r2Uujt/3JMOGBxu3qSFz3ZQuU+34En5cNwe2W1lvJCdHcErhmhYPIXOzEPJYem6PmeNC3Yu6jjLiAVqN1ymNC72laPCeVZIq0h4BRRQh0Yl5XefaCvS2gTeuFS3wcNJAjGam9X/mEAU4ZJ59+7IcdoCS0V/W+QYTcDCpAQ0Yg78TnDcDlBquQyfldjKTpjv8ThpZN1RKcB17BDr8xAwX1FBjuNUZ6EW1Rr8ip9RLZHUp7fylWm2TVFy3nXmxuWxre7PALO6", + "layer_level": 1 + }, + { + "id": "e047b856-1a8e-4ead-bda6-66d7c3ab4651", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "授权机制", + "description": "authorization", + "prompt": "创建kami_backend基于Casbin的RBAC授权系统的详细文档。全面解释角色-权限-资源的访问控制模型,分析rbac_model.conf中的策略规则定义。描述权限检查的实现机制,包括如何在控制器和服务层进行权限验证。说明角色和权限的管理接口,如创建、更新和删除权限规则。提供权限策略的配置示例和最佳实践。解释权限缓存机制和性能优化策略。为开发者提供自定义权限策略的指导和调试技巧。", + "parent_id": "ad94de09-b7fe-48cd-9a8a-bcfa78565c2a", + "order": 1, + "progress_status": "completed", + "dependent_files": "resource/casbin/rbac_model.conf,internal/controller/sys_auth_rule/sys_auth_rule_v1_rule_add.go,internal/service/sys_casbin.go,internal/logic/sys_casbin/sysCasbin.go", + "gmt_create": "2025-10-08T18:18:35+08:00", + "gmt_modified": "2025-10-08T18:29:44+08:00", + "raw_data": "WikiEncrypted:Jgq9fCpm/NkqSNIWYhs+n3LeaG07NGCrNcYdQEJMIJmIZ1iPjkNZvT2RpQnX8LDCXRavNA0RTry59fMEhV2iRgG0UidHVojrlOr9wca5f5TTnM0+7u2hJkLOvCJh02e4OasOcajoQDCJYRPEvGMwroqJeEBFOqPeNbEFr8YSlHBQ4kQac5MP3ErY7i2RdzXjaISKkyQnXsz6CHZLCe6Jc9k/Bc35KEHacgylbsyoaIq+IjchEulTpgxDXhJ9hyzb2PtqtWrpOi8q4lEI5zSD7keA0XHr1fkHeO9Wqp2WxVJu3GV+9i1p4F4UOKC5oigUZpN5oC89zXMMJycG+KWpDBLV1uVnFM0QvCe+Sods2wcyBwh4u9Os0xCsB+LnuOvsHvJ/nlbg1SP4r+lNcFgH9aHkcDuglfuq/uqbP953Dwciyb31t/GI0MDEZ4oa6QRxRuhEd4wqwXiaEhtZWf8OCnYwhff/Jep1puFl4BCxqPFZEEpeMlC2m926O/zUP0rQC9Ufhl/N46tVJ16zr0hwRoSETnCsyudAIqE0no789R/p2ySv5Oy/JXDGVORLTWdh1hWxJmnn3FGmIBoG8qaO99VPNz9f19v+cIGrBliOGIj0NkMQRs4vri24/lOx20ZfTwi4zYK0M9zC2I5iGUUxh0dR0AKrwzEw7la1qprAEVtuxf/q0GL7+oMH6cz+jXitSlWAdLRdQXHcjTwodPKh3Lx0favJ8wr7Em4q6/BOGw7RRrpajvmwvwBJQ9Df6j2T+BWCILgA+HjG+iHy7z0CPQI45ZnqzsAvkvVc3SLpGbuMDaRkk66OYbpJOgUB0/Vwer5o8ujRZuJbN93gOm/FfHAL2hNPil/xW5IPXii50A8rAeRSW5lopgO+AoBNtoAIbEahpFUdQwE0Goq1KE6VNwFYbMDd0RJh9zx3hWvfHC5ZWxdNw1d6XvEDdDoXQ4y0YtnTRKUQ815+gd6i8hDS54YTp9p9Y1Z9ivaIOYljCZuQFAs7WYiXGWYeg8OudG7GRsOlTk9annGxH1Ag/n/g638OMH/Ky8R6f2ZsyQADvPNcJuOX9iMWAYs5b/RtyY/WPtzSNTSB8bBZKM4cz/pYxQlmQTR28p+cSnX7IfeEYAgLk+8pCEirf+woRHrYGxC/YviB14bPrDSrv+v5TARuzFxKS8KQ2hKVdF0/ajde7J87lNs+7BsY7rUbb6UMsliP", + "layer_level": 1 + }, + { + "id": "3885dee9-9a55-4da0-8506-1a84306cae21", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "监控系统集成", + "description": "monitoring-integration", + "prompt": "创建kami_backend监控系统集成的全面文档。详细说明OpenTelemetry的集成实现,包括追踪(Tracing)、指标(Metrics)和日志(Logging)的收集与导出机制。解释otel包的配置结构,如何设置采样率、导出器(Exporter)、资源属性和传播格式。提供代码示例,展示如何在控制器、服务层和业务逻辑中创建和使用Span。文档应包含监控数据的上下文传递、错误追踪、性能瓶颈分析等高级功能的使用方法。解释监控集成的技术决策,如为何选择特定的后端存储(如Jaeger、Prometheus)、数据采样策略和性能开销控制。提供监控系统常见问题的故障排除指南,如数据丢失、延迟高、资源消耗过大等问题的解决方案。", + "parent_id": "050aabef-4c8c-4892-849c-74a2e3feb22b", + "order": 1, + "progress_status": "completed", + "dependent_files": "utility/otel/,internal/cmd/cmd.go,utility/monitor/", + "gmt_create": "2025-10-08T18:18:35+08:00", + "gmt_modified": "2025-10-08T18:29:59+08:00", + "raw_data": "WikiEncrypted:HL3VqGjXq8A3aGeLxAjVPrAH/UrhOB11piGSWoyOV2dHVr0n3Bn0Swd0H0gYOAdbVNKbTmRhvw1HJM5/Q01+URHbU/Y2+Djgj9uGcxhMk5cHiAB2TiFj5tg4C/UkYPXIrWDwTdHLdRRcp2V6mOpIyQ1VYlBfNYtuG2wRp42Z+/3bBEIcC+3qsYn8OaFjpKSIAb7FdpUFBciL6M/Cz3oKEQ1x+wRDtToegQWuLK+PutUEfU4fTY5RmVLo6obONP7Z86RTzzERt1QaKURZmZz+C3dlis7l7IYwuic0fiH0WlYGqP3ZHUwurg0vj2eoYkhGSDg2PGUyjOgvO5hIkFEmRWgntr/LrMW5xU17+bnpZAlHWqRP12yvw4Unhvv6C7hw8bk4RWkI4WxEtEMeGEfOAgqIFnXYX/kXT7aanjvdFBbdj61A3GcyOVE9+ELXUY2XHAN4dh1k4NNzNS+z7uX7w8npZUVIzJMb9O0pZPVSJ5ynjrZX8w1k8CpU8c6M2orol/fUttKuMCEh3K/7YZwnuqssxlrM1Em1LqeaImn8QKWwUvv0ymyQc8HzlXCVqkyYKt5lkr9LSTQ4P9BeXrqXGW0AqC3ZUT6GFmG7IL4dNpjZVbbdZ63c+bVqJFrc3VDYaHNR71iLMhckXKIqy1DGe4c9rQ7A1ohCi+U8v3sV9PaXPKI4EOXyPI9tw2OooH0DBXzUMUB4Q4ZnXv4IedHG130GqLFaL66h5kI3ytLXWeDFEX3IJGUaZXPLHb2FnnNyOqJam8OyIbKwxKZnC/9DZTLG67MZ3x0h3Bql5sTCKKDd6s31eRagURn8oamaCZhRGiXfNVE+syT8rpCXCvRUS+ZG3PLPexlIO2vsW4svMqFbHRE8JAMx+CAo2ijQsNfSk+8T8yS51i1ZrADladfIEkm6Sle2Q7O/UiQU1T144p0x9B/j2gmzyFUhi2AQqc2sJBc8RPEOIiUZIzmG4A/OxYLboQ4d0dNWsBVIgryijVdKMsdhu7r9EY5Y04rOE0oGPhpQbRRxgn3lqp/ar3dVNJEwsGvJkTOXYB+YdN279sC8BMPv2FIpOG6eo9aS0S35wZifJMcsUxdAwMF0+6zfRRhtmZbIO4jaev9day1xzb7z+riYh7PGZmEBIlcAVAZijgCXDRaGAfl3UozNebRaMPpkgSNoC1PAsLZ9iI2bH6O7LjO78LGzXh2CxdITkkbN7tWe1d4FArATCWLjMeJ2YdRpWhVS7CGwFOY9h77wSLiIzp5AxuHQvzQQib0YOpn+pF4x6n6JuvUO2OfEX4p0JEi0bqVC4QC375wgrU3+1SjgBgNk9PGdm6a5Ya2vEFTmlXFdHkAsB8bmXE15lm4E0sT18xxsQMJpyizPwXOPCfqbbyKhdiawTzJUl9aA7j+SeEZY2sT/Q44UXLmZm1uqB3wjwH/qcmPv9my8fFKC00IQpNmmskyEPcp8qBrrPOAe", + "layer_level": 1 + }, + { + "id": "3c6ca985-3423-453c-9f11-d9030f798abe", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "容器化部署", + "description": "containerization", + "prompt": "创建kami_backend容器化部署的完整文档。详细解析Dockerfile的每一层构建指令,包括基础镜像选择、依赖安装、代码复制、环境变量设置等。深入分析docker-compose.yml文件中的服务编排配置,包括kami_backend服务、数据库、Redis等组件的定义和网络配置。解释不同docker-compose文件(如docker-compose-local.yaml)的用途差异。提供容器化部署的完整流程,包括镜像构建、服务启动、日志查看和容器管理。包含性能优化建议和安全加固措施。", + "parent_id": "519aff94-32db-4783-85f1-071d6c314ff3", + "order": 1, + "progress_status": "completed", + "dependent_files": "manifest/docker/Dockerfile,manifest/docker/docker-compose.yml,manifest/docker/docker-compose-local.yaml,manifest/docker/install.sh,manifest/docker/install-test.sh", + "gmt_create": "2025-10-08T18:18:36+08:00", + "gmt_modified": "2025-10-08T18:30:37+08:00", + "raw_data": "WikiEncrypted:OYVOcFWO8QG2KTNzD99v4xxMusUyWhQxf3J/07wObNtFIyC4CbcNIuFY4V1ewVc8ZQcA3boon6xnUDfRpiaK2BRUAhlH1+fbuKhTMeIFLZYAHWpeiuXeHFl6FjFS/Cz8hv30Yi+prZq5Jfywa+60mlYxpaLuPZRvQ9V2zJsOxq1B15dUxEuRufn+MrL0Neq+z5sRR1Li6Gbk2vOpCMwAS4vt5etXp8EZqcZVW7KSxQ3bgZ1Pb990BioH3X/Tz0KQrflb+UBdIuknD2HkRxU5RnOoGPbu2nkZ0C0hTPDypRuyqKytb+l2q0Dkn8T7Qo6ynR+rsTuCWaGZkc6VZ1GRE7tqWLwW9OaS41EEsLeWYYpxpKvxrHirUd+44TdZdrQ9oUJK2nb0N0NiUkw32CvxFFbPc5W4QyrL7iXhaG6Gj6061EFeHrICyE5KcKpAf9B1eRQYVz9iiPfJURNgeZ+A1xXjACHfHcxHGOybBmMNqd6tzwXUuSnr7aZLcIWgX8Kh7nqL6JYFEg4xUjGLwqR5xCb8oJoQW88R6ziIRJX3RBOgw1cDcItN3SWIf8LXr/ZEheooWu0UecaT5Tt+OarwjqrvR+VKCn9LybaKKxZ/UVF0CB6q69JqoS8T8j6arNZY1b2rh79QCFJzZCBBRgRXmyOZ0cVZMUjEh1ZLGyRccqettD01YdFu08Mmtoo4dbvPVQ5mvzf8pPL78wGjmH/+KH0HIUU099OhBPMJVIwnTlJpGnck+z4RgezxjodsRlMsKqNbB/Xy0oLHreagPvqmPY/jcsorcTDDSTALmdq6waozV2NC+WpiFT/4qtF0fy5PlWRq/3KjHXPdCikpQhfAeZWdNO42wtMH+Qaj1/WI+hU3iXHQwhTDIHySs4Dj1/2TXRiSvvWiFSKNrR6LmE/n5lF0f9aRKlL6xFpbXgehEN7k87Sm8UsEHEB81vAn/2grydMlOYXMvKZBk1djbqUTsexUoAo4hrL6jD7hQDX+TX5UVamMcz76YDh6+nSw+3++gOtJ7x5OgqmzxSaGtgM5I6xiQ6mDrHzeYx6JxJp4C75j/C60IpN3S5/rOUcPQUNXVzK6SgprGfIESnUQLqnvyJ/C1GSIjeMgnRJsJ6NW3wQ5w3yDIBQIBxTAcL1a3h6HARnuuWjmTh20uv9ySipFsJpA1MXbCiUUMO7J0Oo9N+lIGB2Jn1z3oBrgqUDA6uVIFMwtLdhGRvcdGEtx/RPV8Z+cJCV2iezxt2xj2rfx4T7LVYqsI9sU88RdNwT6Kc9S", + "layer_level": 1 + }, + { + "id": "d56eb845-7c0e-4be8-bf3a-239e3c0eb5e3", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "京东卡密管理逻辑", + "description": "jd-card-logic", + "prompt": "创建京东卡密管理业务逻辑的详细文档。深入阐述京东卡密账户的创建、更新、删除和状态管理流程,包括账户分组、扣款规则、历史记录的管理。详细说明京东卡密兑换逻辑,涵盖兑换订单创建、状态管理、历史查询等核心功能。解释京东卡密账户与订单系统、支付系统的集成模式。提供具体的代码示例,展示关键业务方法如账户创建、兑换处理的实现细节。记录京东卡密管理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案。", + "parent_id": "eaa525f4-7640-4d4e-84ae-7624f8b5c790", + "order": 1, + "progress_status": "completed", + "dependent_files": "internal/logic/card_redeem_account/,internal/service/card_redeem_account.go,internal/controller/card_info_jd/,internal/controller/card_redeem_jd/", + "gmt_create": "2025-10-08T18:18:47+08:00", + "gmt_modified": "2025-10-08T18:43:18+08:00", + "raw_data": "WikiEncrypted:2Tw4z8NsJjOlKl4tOUQ4rUaSoXsxiGw9O3wpAWVX5Hw9Zn+t5brSy6DKjiADvUn5zD80pLs7e6Rkb+ZAlcoR/eE9ccXFudltqMag2wVsQePcUFo+mDT2nXjsqLT5mA40/IJ49Ru5LCBQbhNci8QbxMRFvluUXdUvuenc+LVNm3AQOYOQb89aMmsZsVDljYVNe+DYDHhn1OdSnbB1AKBs++zJFjWL+nFebpJ9CY+McwdmT3zg3RknR0qEqbWPo4s6NUSNZPhPF+SlzrdZ3j4cu77xkyDstaH9mreAGyhHuXVsdFzJmURaJUlHUm8hYUdE4O7w4bBKxgWZFJbLgMVTl6UZUWPwrNr4CcSCZgiY3Y72c2iEwwNk9aqysdXjbO+p7Ec8ZYpv6rEkhDmF3uuk24EZEjwXvp5I8djNFI5LRvdtG3Ai10AO86bBZMAi7onQQatHdN+CiLQ+Ur4i0gEAexVwE0OZiX4RzpbmVoT36NSPmddO3GgUxsjod1vqalZqy3gIt1Hs8V7HawKDtH7IzhQEvYgJrG23vzUi4V2QXeHD3fF4vkPByfMCRbNyGcv6o6/hW4eb4yPWX1LwPg8iEX9imx3TxqA/8qsHTMfJrmtP70NNzXeuMnQ7MvIjlq55Nx8wejsRWuEFaen8j2bbwCN4WaQHXEaMigx+saSsuifW9y3CpctQdISZv6ap1+3urMk/me1OIuSuaI0EJQAWsx3J7j6ecoA70728mZR6G6nih5Ggl96zSMJ1jN6r1WOXuJtMff+thBaktZMtVZfeMrxkSFR8TDMkRk51Lr9sWx3h70qF3rtMHB7rlV/brkmCohMKLNZW64EldtqyXQJI4tIrzKSMtXGp60yMJXulcx6L/jmYF9VK71omKqV2EP1N714L9AxSKjz6iNubOjoHgA4Px9MPP+1YqNczN+33A+DCiqaXK3Vm5REcp8Qx9nXK6tY7rJ5/Fs8/2sdX6zOZ6AeMkD/MPatdnA0yFdNeOZSOC8xbUq1b6YKXG4bVHx9lEsR5O0o0tjqONmSgxLUVWjluuHRdwACQNFlDW9U7SoAr6veu4VYcUSmsrhzx8KQeozPeBcsnqqU2ydBXJzZHYQBc3J+YWJSYH14RGEMaFrv6/Nr6VHLMBw+f8RjY05OnCeLDNe5B65tFrMVSCYcV9rWfdRQd6wsvz8GDwm9S25YgjhWvZ8VsDMa51+d7I9sg9vzz/zDQoS9HhBLYVfkX39aSxM0fxN7tkMUyCmaihme6RTMwIQaCAd4wGYLxckiUS35HK6qEUGKKUQNloHn9b1hbVmMMrsNNoCaswodPc73C9xNhGEp+j3oduB0O4cF5cOKqcivuxvAbgm/gTTig4wjmXa5BtANQsXfwfOs9b8cxzitekmHWMcpSlMFrSW/6Ku+53nGXPrRe9SXxaowk7Q==", + "layer_level": 2 + }, + { + "id": "fa42c78e-0f93-45a1-8ee8-9cf8cfac869e", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "地域限制机制", + "description": "geographical-restriction", + "prompt": "创建kami_backend地域限制机制的详细文档。深入阐述基于地理位置的访问控制实现原理,包括省份限制规则的配置与管理。详细说明地域限制的查询接口、数据结构和生效流程。解释如何通过IP地址解析获取地理位置信息,并与限制规则进行匹配。提供地域限制配置的最佳实践和典型应用场景,如区域化服务控制、合规性要求满足等。包含地域限制与其他风控措施的协同工作机制。", + "parent_id": "93bada60-b20a-4977-b82c-eca224ca34f6", + "order": 1, + "progress_status": "completed", + "dependent_files": "internal/logic/restriction/restriction.go,internal/controller/restriction/restriction_v1_query_all_province.go,internal/consts/restriction.go", + "gmt_create": "2025-10-08T18:18:52+08:00", + "gmt_modified": "2025-10-08T18:43:32+08:00", + "raw_data": "WikiEncrypted:P3NkKI9iTG8m0x1wQHusvRv9W28aLZc7fU8yLGlEjox9OneM+QWZz8mD/lxQGkCXhSKurHn9FyuzwAEvgDByqBZ7wI7cF4nt3mVvixHgQ68puv7ji8/e+4o3WVDe4+8vsAtEyK9fl7kY2GmlYHgX0y8CvGKG6niBx5OhF5+v8XLH5YnRx9SxDy4oOvJlowOdBp03CrXgMsnH0VMGn2e4/QNq3zorUijFq6hhThfi8h8K478JvG4nI1rPm9vMqxW+hL6U7RkzvqGkz9JOueW0yldQCsHXDBvL+C5xJEze5E7wVO3Ii37LfN2vZHs8Cqc0hzx5hSWDbwjyqH50a9fr+JtvqeNiM0KaHYkBcDULqYe6L2L/o2nIPOEYnkp6iJEAcjpYE9Uil3xkjX9KLwpxAl942K6hi0dsmT04Y4g5ZEFA/sVUuCDQweNW4jNCnt6tYNFaNmX9Cl0DvquC6gdsdTY175dRS5x+0mJHayZQeLg8CY2C/Rrztu4qJL5gQjgMwN8ecUts0GQfqTBCxI0VNfEkQEy3MGNQTABdpNS9m0jiCnfRitMZoG8ap6PV0AmhyH6VQlPd8pJa7KCdN9lkv1rqGdx5G6zaF/MZPfaPJFpdJiWhukBzzxdCNzmccBJO8ylIedjYCNdh+rN30rCGcg3gf3szYxyxxodXhMcXDflzinnHCi2kZpQvpZX7u5c/7MlSVjj6tqjWsOjaZZPomhTaaLW2R6K0oCYyAyy4XxIUUTpRo2Vpeq3YROKE4BsXmz9v8sH9g6FWvAP7Bwn/AuYT0wh4JsGAgA+NBe/PdIf7zm6nADsvilJy42+JjIQTsnlFqclbGQs3yLqQApYF1FENA4b7GX+G8Gduf/8IVRXywollxZevSM+WHtGM9LtCGcUjAJdQNPBQs/ql6UwlgkK5yjLQqDWnFyHm3VI9LWUUIQmzNtqqtYBlLuxxfpQQygRbNIg+Ys+aHYHCVG7z6UDeJaNJur9jH6MVvUUbooHkZq8h90d3ogGd4tLH3ybQxWv5e2eW8CASlRvdCBfiztC6UKnv7akCXv1yBspBgGcpoKYxsW4OIn3+3ZqgS7KpQ/eB0oNS0QVFPXu8Jh11AcLQSuMJQrNqXMQRDKxVl61YCpSVl2XH872xJkI3upUWdrpkcfTy5QD16RHGL/Q55fVpHpTf4FPJIxxf5vbC4u0=", + "layer_level": 2 + }, + { + "id": "0e1b4f85-8e7d-463d-b8db-4ee330d61a7f", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "用户认证管理", + "description": "user-authentication", + "prompt": "创建kami_backend用户认证管理的详细文档。全面描述用户登录、登出和会话管理的实现机制。详细说明TOTP双因素认证的集成方式、安全机制和用户配置流程。解释用户身份验证令牌的生成、验证和刷新过程。阐述用户登录日志记录和安全审计的实现细节。提供用户认证最佳实践,包括密码策略、会话超时设置和安全防护措施。包含常见认证问题的排查方法和解决方案。", + "parent_id": "495d1fcb-e69f-41b5-b893-4efb8ffae28c", + "order": 1, + "progress_status": "completed", + "dependent_files": "internal/logic/sys_user/sys_user.go,internal/logic/sys_user/totp.go,internal/service/sys_user.go,internal/controller/sysUser/,internal/controller/sys_user_login/,utility/mfa/mfa.go,utility/token/user_token.go", + "gmt_create": "2025-10-08T18:19:01+08:00", + "gmt_modified": "2025-10-08T18:44:56+08:00", + "raw_data": "WikiEncrypted:SmmNTSq96N8aZksVSKE+83PC+cNK/DfBO+OUzl7+L2l2e/CIGqmnuvQf7qkuacMmnoLkipFhcdM+cLbUip31pYXUt+XyL88CjpCGtcV6WgiA3HqAdxPgiOexv3ElMAo/PDxaz+XbGSJxoPBZtHoB6NNUkOCuJ5XBXj0Hr1xrVx8wlNClVHsfL4T+uVK3j2jS0QhXXuyonPfAcspk5vveTDxeOyjeihNnTC1MJFgsMMw3+Jti190Cck3TrSyDb3h6qh/PZb0gRGz6yWJTQ6zKuk4lc9rCqAA7hMx6cwfzrOQeYbg0Wzho8paOlKE98Xb2vm5la+D4bEKvc77rc664fi3jCE4zVr6swviQ3BnlML0N7UWXhrLdZSkj3jGWtYLsbFvpPkOPcpvDF6vrU5F85Bhn5oHjYsy1jzwn2DFnnj+vLu0FYGhT4aQO2iSMJwoYrw1PdPNiIELqGSJVUBci7KJjmxgarnzumXVxGySE/Rs9TWGfzC/tqF0JY9GzD2MoA47uKrT7ly2om4B9eb0Aw9/qA1DR4GTdLMMCVieDKH/H4FXJbUzHK5Vhw7/GR6LEbAgPENPEoDpQwYt1WxhqwfT0pMsf9raNag9Ba6R6Ye/M6cBwFT+ctK55NH70iSAiWcfv/WAVthOatk1Ej3qtlzVdQJbKvK6IGsF80wrW1B1QRbGCnnBQXgKEx/sOF/Xhd92NBToz/uyjvtJpFyiNDR6KFRVPs4z7iRX1FnfdqlkwtNJsr7y2hlIJ2feB69kesP3qPXVR3YxgO8G4jFYVRQ9ij2jjvdEJa7jytAJ36PtgxFxZDW2Tbi/U5ZIpUX/Y7hl9P6o+slKpObwP1amRzF4dabn1EbpDkwg90yU5AoC4112sIEG5+mmJG6l3g/mAfVPRDRzWI0zPScgvH4Ha3wmdXidew2+BuF6gyMXwwl+v3nsOJBkLfqWMKaT7/OaKBmz3QlY0c0QmlG7SOwc1Zz9VRyOhho+85vphYELa/gNUecRlWEO2c8JPDeLyFqsOklUKP1e0RYUjyvfypAJPLyUyQBZVr22zeU+ueeTMHLYPp3auXRYqCD4P7v3fw1UGPsEpQyBPq07IXGwUPfBp2vO6YaYc7k4yzt0417aLPUkrZJbJ/W+EW5T1EaxrNllcpSmgMYd3LwO+rEoUUokYfErQgeCtv7ycv7HbJF1IbFIa+uJvGJanYHRAE6VjAfb0qscRKWPws0eM+3OgiU4nvKX0v+yTCOR9LKbd8VAwBTnqM6EofjNR71Hsy+p4dYbW/fldN+bH9YlMrNnIDk31gXIxHLPCTNRBcl73r/i++9Q=", + "layer_level": 2 + }, + { + "id": "1ee1a6e7-8394-4ff7-88af-afda35cd1775", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "角色管理API", + "description": "api-auth-role", + "prompt": "创建角色管理API的详细文档,涵盖角色的增删改查操作。详细说明创建角色、更新角色、删除角色和获取角色列表等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括角色权限分配、角色继承配置和角色状态管理。解释角色在RBAC权限控制模型中的核心作用,以及如何通过角色实现细粒度的访问控制。文档应包含错误处理策略、安全考虑和性能优化建议,确保与代码库中的实际实现完全一致。", + "parent_id": "681cb8e8-add7-42cb-8297-72df3436bc74", + "order": 1, + "progress_status": "completed", + "dependent_files": "api/authority/v1/role.go,internal/controller/authority/authority_v1_role_create.go,internal/controller/authority/authority_v1_role_update.go,internal/controller/authority/authority_v1_role_delete.go,internal/controller/authority/authority_v1_role_list.go", + "gmt_create": "2025-10-08T18:19:07+08:00", + "gmt_modified": "2025-10-08T18:44:25+08:00", + "raw_data": "WikiEncrypted:7ZB9yjzZwc/JkOb5fG5L6+rRbE7IygCTc7CtI4cT8O+zD59F1CL4IfdomTUY+ERjrw/C1sgRZPKjMd/qJd0JK1XynjC5j+ttuY7rxQ3NcMYL4gDLmIj60E0t7iT9EEmLacTiGIEqbqD75xu2P0W8HqTa+6+qc0rXfaxxNXqRIidThrwEfqDd+8GuJWX3FDwbUQ4E6veSUnxgr2Z4FGGHUaKakZAA8tw1Jhr+KHZKSE6MRz9Ent00d2XRIl+nNuUHSwyIayOE+31pjmtBYrUGvgZRJQ89Qd91L/06KO/Vy5OLU4e+YNvpxr7IohsR038eD8jjw1ThQWu6RaUCbDDuFe31sXtXisnhtQIomlucN6fjfrCF+Mw/k65a3JkM/cN94wotQh4vyUz0nKhjF5z0YVta+xU2veibFLulf1veHajhsfJEu3boSmNsh65tx2mblFbm7aw91yNO6saoexuqpDG/7tNWtDTtC5z4oGGlvkBJ67JDoptTwX+i35PtNzPa1mDBl6ab70c0CfShx3q/vk96XMdYjcP5W7HGJ3P3O6YXDEggum7/XyhGg+xT7SSemnnmsoJxLhzVAZCYOkdstHPdP0Ad6Lv799KPUznczFzSEfmcGikpjBEQGXd28vffmGl8euio5vBybeVmfvYB06JMt+CgXslLBnKUJstgJlJYuNHLyRdvmzmtmhhCtmfsNl+DNJvsGvDt11mFWSc8+kKE4wWZW84sB4J8N6EUg4jSm1AN32SRiQLsW0hLRogJ++RBcT91MH3Be4iTYPn7aJC61taQjeJVzSUCJHezetuWA4juKiMlMcvtdAaucOnpfUn1t6CWhb8uQVPXLkWFGmQ1l1RZwHUrXKka5FW7ZbJeOTllkZZDqsiOoPkQssL7UlrdCzI0EhPD4NDeHvSeYeH1jQ0qHQXufPTq9Mzz5PSfNMLm91nr5raDKA8nufucxAilGRbrc2PDR4zAeIRj+Yp320b8o3mLzkgQU8j1locC21AUeGd240sfyo0QGF3trS3wYEAY3/CmWtFAqU6vQR+15tvVSKbbqc5sb85nTKtHIjMszWB5pIlPCqPWJ+CdOKPbWhAIYxKk5r03JCuskliHuZjtwe7pItkgOOUJciW/oqY7dHknLDZfkJhC7lD1OW2KZ6RVwr0vBNrGExBTVocTT63hR6goEi1xYxhrbhDzzZzWZDTgLOY4RGPmo36vL4QGdRldZQJi2Hr1BdbLepk3eE1FbzM6AYlxss5sIaDPslwaLPuNFVNy/SJkKmEh95cIvJrveeAlEBNcTWtWD9jbxK6tWzeZBd6UgSuRoAlaKwMXCsvtXK3kSzc/zdKoHZYdc1nO13T/yWyV6Z25x7lqc9+3a1n5+kNrSn0pJI91rOTde7eIvfegV872hXtu", + "layer_level": 2 + }, + { + "id": "91befb50-6592-4b74-82da-7510ab876eff", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "订单日志管理", + "description": "api-order-log", + "prompt": "创建订单日志管理API的详细文档,涵盖订单日志的查询和删除功能。详细说明GET /api/v1/order/log/list和DELETE /api/v1/order/log/delete端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括订单日志的数据结构、查询过滤条件、分页机制和删除策略。提供实际使用示例,展示如何通过API获取特定订单的日志记录,以及如何清理过期或无效的日志数据。解释订单日志在系统审计、问题排查和业务分析中的作用,以及与其他订单组件的集成方式。提供性能优化建议,如合理设置查询时间范围和分页大小,避免对数据库造成过大压力。同时说明日志保留策略和安全访问控制机制。", + "parent_id": "079920b2-aa64-48aa-a92d-8decf24623b1", + "order": 1, + "progress_status": "completed", + "dependent_files": "api/order/v1/log.go,internal/controller/order/order_v1_order_log_list.go,internal/controller/order/order_v1_order_log_delete.go", + "gmt_create": "2025-10-08T18:19:17+08:00", + "gmt_modified": "2025-10-08T18:45:08+08:00", + "raw_data": "WikiEncrypted:9qHpiFX/XrbQzm4K3sHnDMz1KoRQEV75M4mACux9a19OV4ctaPk31IV5hcbtR/46QuarpgfjVEZ8jQDp8PT83SSZ5sjIba6R38nAWF81guWsZFOr8miHF8AOBbRBKlXQMX9qA9/8xyHTHhcnCOVaxCxPYMfBxEefEJifj/adPFe/8wtcWawGJPTZpd7DNy9QpIaS5iU/ARujr8LnXiTEKGnjlunB578POzKxX4UXdmbcVTNSytHSri9S9J6BggfcrJGkVPKDDcot5vaHhUcEVKq0pEmS4yex98PunfcUWXuwsdZIrKalMB5OrO8GRvSrlWdZxCJj/k++ohzpqHN192cAG1pU/wyNroxArGW5X0gwOQcaElNeGnogN2TFFJGvqyqWBwO19YUgDpesqT6gDuJ2pkgvqS8RZUblyJHq//vtWwPAcIm2Q+qLtyLn+M5/z92+wkU6qRgQ4H6/MR6/g+HKKHZUJKPqQEakWetb/LtskzLRkc4dae4st9/vZaLVBveBisOMNeAuIHLFbYQ6G/Jc3pzpCF3yr/Mn4q5lkmvBfZBPKPml75e3dh6NHfTHwrkoGAtQjvOyOr7RGjYWKFIsEz/ydqbgqDLy3CTZKlINfdDmK7gSLJnutOGLiTitJkIm6m67+97hgwaAXgS1odKB9OjQrBlW9LiZmw5fPcoQ+X9vPR+6qIe1Z5b6qofLe8VEizZR00qjZvjE+nT8osWYNzgb45vnED0BpC5WU5ESzSu0HgxuY710ywYZX3dRsrFkqlqGE0DzjhtFUOi81RUh0QfjmhjL5RRxKpJgRZXsiz4uW2DFhaADL3xSvrwM9I+nKE5ZBauh0UZGpEVcaUHVwnC2QzngOgpZxgv6I3Er2QYJ/N6h6c588dN80jkaCKN7GvS7AV6KGOL6YVQkH7R64CExcOYPStomFg0iVEguaJRqdlzupGlaZMx4JsIVGHWPZLSV1n67sEpUPpQeFllrZ7xBHS9dOud5Vg+odh3kErONG+sVTRKqpnn00/QiCP3yqa/7mckxadgTpgRwbKQgTG6T1csQcJ/smy055YozHVVOgCC9OOF4HHhXmYkBTqkjcXHpOFolJYc4FZaiZ4NVOItx1/wIEpSRQCreHriDMIVS4GgDLr+dQ4sHsXDzD6vT2SfE6xV+fvIygSbbl4Cw78zQTiMbMn6E/DtK+pd5fFvXf2JZBwoGxwWk0G2y5XO1DiSsOEb6SdJ6V6zQBh9xha5QfaqVBLpZcVeYeCupe5REbYW2O/DLiIzSaClUEnwjK6hc04LtFKm7g7WWoxibweIrzo6w9+VGUN6G4aRNZYrzv6Q8gb/IFwPz6xIj9mvW7LKQxi52eWK6u6oKbMjIT7Nn9rdvvVLVE7zOwVmJIgen6MBiY4tMXm7aBgHg4n/BGWlcru47by8GF5bs8U3+SN1wApsyDWRGW+SiIx0ErkWSaWIbSbkEF5CdMZBVn8PM6nnjsfglN9Y1ObDoHU8MUzJ6zi83cnmLi4qyQk0=", + "layer_level": 2 + }, + { + "id": "288b9b5a-64ba-4e93-885d-499412ad90fc", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "京东卡密管理API", + "description": "api-card-info-jd", + "prompt": "创建京东卡密管理API的详细文档,涵盖账户管理、充值处理、订单回调等接口。详细说明账户创建、Cookie管理、充值提交、订单历史查询等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括批量添加京东账户Cookie、充值订单提交、订单状态同步等场景。解释京东卡密特有的账户Cookie验证机制和风控策略,提供错误处理策略和安全考虑。文档应包含客户端实现指南和性能优化建议,特别关注京东平台的反爬虫机制和请求频率限制。", + "parent_id": "0d28da6e-d972-4227-9fc4-ecf26d5c6b2d", + "order": 1, + "progress_status": "completed", + "dependent_files": "api/card_info_jd/v1/account.go,api/card_info_jd/v1/order.go,api/card_info_jd/v1/order_summary.go,internal/controller/card_info_jd/card_info_jd_v1_jd_account_create.go,internal/controller/card_info_jd/card_info_jd_v1_submit.go,internal/controller/card_info_jd/card_info_jd_v1_order_callback.go,internal/logic/card_redeem_account/query.go,internal/logic/card_redeem_order/order.go", + "gmt_create": "2025-10-08T18:19:17+08:00", + "gmt_modified": "2025-10-08T18:46:02+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBkzZCXcBOHF+FU6wKtFwu90n8FV1byN/6qXgm2Qb9b2hMmA3oufYwccgA02hX880Lv8YtqGVaSdnY3kqkQ7D0lncxopWCP3yTvZllrVraULiC4X6Vv8n39VgoeEkDashdygPT6mPEo5kbP1lV6d2ucc1hVv67KUZugwcSrLRK3B+PQZ9VYvsJpwDZewlCbQsFhobt+eW2yuWVd9RIvYzVbBXpTSEjNXMu9gG317OVvQXaCp/EaNkim3txSiiIMVcr0VYiLlzUjMUknrCRbZ88LPCSkCYdN6vwgd3KU24W2zVIqRm1UTgj7l/GazbLHOElYIL5QLNFJNT2qq5ALN+bUE6Uw/ZCDwDrMjGTpP0xh1/oOtQazPknXxqng7eafCWnLouo5JTYZ7avPjEfhgi2mV08rJ5YK1TA2ecTkN7jIHJzWIyqgGzFQn9dHh2Y4KdBA8s2dr+2yPtYLOYj9XJ3BDwXZNT0J3C5TxL3t9gpTeUbsvyEjDP66j2zMZF3ctVz9a/GTgzXkUST0XMuf9Qj60lGAkNIAbJ16+z26hjV30EBAMnp9iKOlOYpGo2lFApxDLfIXOvdLqn+TL0u8epsrExG+wEAKpmyy3NggvYd3yOEzgYVrgTzOt1TliP2s/rG3mev56dhYLbkGcKybuAbATwu/htr0Wazr2gtRyG3qCC4L/yGEZ4OfdjSvvhYSQBD2m7fDhr1u7X6F+Io5BL7mzGmeGAvzCJL8UViQsa2WSRw7F56Kc0e1BZUt5hTruQ/Hr2pnrC/EpdP8IaXYmNETmxupt+44gv+9uuEjWj4Z3zC7WojZzHuVRTDwhzwiXoP7usTBkpZRwM4WtMXqI7xNaKv+AAFqU51fdVhaDayzzd+EjSAqEInjs7ukZ3qjGIU9JLDhA3Nv32zLOwJ6hPeKt1zZVroaKbf22NEDrG/NCgj8ftLm7F3UtvWBKCRNWycvwuI7ZvZq1KfiMOlcPSBlrHN93XJhL0Z/dulb2rdFPIBkOOuAxEcOKG3SOT5LPOArj23wKaeyHtuRXlW5grO8PLN8BR0qmIhing4Tl/YCQezgOz1+8WPzV9z8xKj5DdxYMJ/cSETmgVlrAuIFZkUPHWIAm0ody17ZyQewLxidzeRYufOa1jceRU3DrqMAl6xseIt/b6jHCbWbnUCE+kE15BfJywZa/yA/O68dVryDjd+LUeRl61IvA1TpataICWFyQUspx5gb1xIUfmIg5dUYONhtRCfIMWSDNREDCnDYbmZlGSa9CLT6l7Nf9N2LBRODpTvQYxRppD+P1cfgFQKilRQeN2OXASBs13pYImwDrUF7EVP0TaMqO/qXSJ/+Fflv44kjXjtIMI4Q61JH1tI6a5apoZsoR9dV6oO+QHulXm2rWGzupXfAHDkur6Sxap6VECVqOGv0qGDMqzBKpek8aX5CfQTleRHuByIeSf4HgYucRpzMQyIejcQ70yUT6kNCl5YQM3h4l/ePO6VfOzj7wkiREzWtfOJv99rfjLWA68t9qfkHgfNZlBrPNLwlhZSgoZQbcY3SSofJKOEJjMMDWAmz6K5bV0NxYGXCluIAXfJgeyd2RfUvzGKiIJ3W8+R6EZp7zU/HzgtioQlbbH7GaZiYeCToNIhY9F/zZt9X+KA5i8+WJ1P7VFX5/zUp/oKA==", + "layer_level": 2 + }, + { + "id": "3738ad5b-aca0-4c87-9e86-9551d689f889", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "商户部署管理", + "description": "api-merchant-deploy", + "prompt": "创建商户部署管理API的详细文档。详细说明商户部署信息的管理接口,包括HTTP方法、URL路径、请求参数和响应格式。文档应涵盖商户部署的创建(merchant_v1_merchant_deploy_add)、查询列表(merchant_v1_merchant_deploy_list)、更新(merchant_v1_merchant_deploy_update)、删除(merchant_v1_merchant_deploy_delete)和详情获取(merchant_v1_merchant_deploy_get_detail)等端点。提供实际使用示例,展示如何通过API进行商户部署操作。解释部署数据的结构和字段含义,包括部署环境、服务器配置、API密钥等关键信息。说明部署信息与商户配置的关系和继承机制。包含权限验证和安全考虑,确保部署信息的安全性。提供错误处理策略,如部署冲突、参数验证失败等情况的响应码和错误信息。", + "parent_id": "c423075a-af3a-4aa8-aeb1-eca97be6acbf", + "order": 1, + "progress_status": "completed", + "dependent_files": "api/merchant/v1/deploy.go,internal/controller/merchant/merchant_v1_merchant_deploy_add.go,internal/controller/merchant/merchant_v1_merchant_deploy_list.go,internal/controller/merchant/merchant_v1_merchant_deploy_update.go,internal/controller/merchant/merchant_v1_merchant_deploy_delete.go,internal/controller/merchant/merchant_v1_merchant_deploy_get_detail.go", + "gmt_create": "2025-10-08T18:19:28+08:00", + "gmt_modified": "2025-10-08T18:45:48+08:00", + "raw_data": "WikiEncrypted:BG3lFnKLVTvBR2vGYwCPyS1oEBfi2AVR56kbRNYu7vwIO+DHFV69S00Cn9VWMkMaxe1C9oIY3Fq7/E2iPGjEOWLuHnpH/Y3i5x5MeS7pdEua/Xmsn3jSgq97JVn4WmFs+i0qFORtaoDVDhsfdANByM3haKpjsykMQbzBjz/AGlh6GFpbuJFVgb8PakAlvFVMMrnfLDVe781PBTGKjZX5cNj9NyCDvYFqpvf8dGl4Eyrme4koWNiLXCaFHzJmzQuJaMryaqUP1GZCqe2hNocsirvz7vpOLLy+C9/tvNacelJ/PPvVaySV5PvfufSSnWflVxy5lYoOguix9DOaCQlCspj6knTDHJTUKkzXNRgu7kE1uNo6hA9C6bZupPxWXqh/WtXoHtoxH4lr1oCT6O1y11QsWsnJ/7fzFR22ixnyeOY94dUztPBFYF23vFw9NWRAwnFGJuWWnffxzjtNaTxcWu4fMwxrdMtddeVJ8I9rYgQbtNCk1A+gl3qSS23N6M/oLZiOJSBLXHEHJ9KOpPi+THSSBjm3vNiDNAe9nQlzY6w3qgi45586Wm+s+OjJ3pKiIFWCPVdYlBDfEp5x+E/rli6xtXrg4H05DlZMMfEaet6Ylh4xcKYzFHXSSAzgP9P02lfxauvCKRSBlKk4ghhEWe4SgnFDc6/Dp2zVdc9zaBhRrMGPgp+kWS6D58e1Ho7BRAgNQ0eI0FuequP7NvUPxXrgef/k+yf6YYV+MtQEEKlG7kSkoNEIUp5jadkG/OEgfpTLT2vPPK3mZcWPYKJAM/tZhzpBWgKL3JUIh6eLEEEwDVb2X3Lu9IJD6gB8HA+C7gsVW16AJTsjjtLAGVCdQsj+lud1Ppg6g9GJNJeEJx4Djdj9cZCnOwNRprRhXy2CkduLwhjTK2oVU93+XcLTH3CLz5Cx5g7umi3cPadEB26x5+F3G4GLhdSHHOb1dxTlI2kNwc2oN4RhCfwXGOKRmSfVZA4YOihgvwUUGUisWTnap3HiweNrJabbS7EzoQqEjyO5q0EY8sXN7oG7lYZRDCffvkLPe1jWWQwRo5vDjsyCZs/Gb1gywv6M17Xlul4LewLk75OyGzh0M70SjvLzJ9Bx8Bv+utnKT3til4k1br3jXch2Gl8wdB4E38Yv4LKW4EEwZg+auRxbDKbek+aYei9UeiNxUguTyXaPvxlI+7MymT0VYf+P4vYS+45qewtlJdmrtZD3AOXpP4+2V08cdJcxFmOKlziCHqhAb7T4aFEDQu660P/1JR/xCSJYtVcF0fvaH/6zEkzwyPXOblsyboTRnmJ44qqpi71Ue+pLszEoBqH9B9Dz6fiGUmw9fAdArnsa1QMK5I5MAWXHf5TuDl8voTH5BBMNyAu3eCFAENlyxqclkhsa4lEY+daBdYn7d69JRiTN0s2pWKfMdsPHLdFOExvi3DX1n5rTvVOPkFR96ULg+Lz1rMcllNEp96RSOFYsApdCMxSWLI6/weKsE0F7HptwTC/A7Ed9uHtl89JAtxmnNoZ8v7RHeYm3Rgl9CpJa2kIcJ0dHDr54cFdZ8lj8Y0xml3QqRWSiZKESxpGH6/DyTiF89SVYFBhsoE+FOZ5jYAkSiFN+pSTT6uGXK1S24qnF404TeJi0oC7QLG2ignQ3a5/X82JqNoMGgU54GCvm4t/sA/0V+fIE7M48InVffczgysFmxej41P4GJtHiVCv8o7to1G2czXP/xj9B/lvRjKdUE1RF66lcEEl5vjwYnqSqHOm0DxpIoTQO0grYuW+/ZpJ8ZslSJByyvB0HGEhgnknkqZBCCCOjWtt9DaJZy29EaruPeoedC2oeZ7ZfD4mKAqt5zjpU3ylWJtYNR7zOpAp3sADXBD4anBD96Hhfij33UuDUH7Kvsnwy1HMhpsflXZIrIB6auN13Ly+jtDu+vizRqlv7BxQVojuYeA==", + "layer_level": 2 + }, + { + "id": "3cd0ff7f-89a0-4ba5-89c6-d092ac39981d", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "资金流水", + "description": "api-fund-wallet-log", + "prompt": "创建资金流水API的详细文档,涵盖资金流水记录的创建、查询、更新和删除等操作。详细说明每个端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括流水记录的类型、金额、时间戳和关联交易等字段,提供实际使用示例、错误处理策略和安全考虑。解释资金流水的实现细节,包括流水号生成规则、对账机制和数据一致性保障。提供客户端实现指南和性能优化建议,确保文档与代码库中的实际实现完全一致。", + "parent_id": "b24f3c8c-5f2c-435c-99e6-6ee42c47a46d", + "order": 1, + "progress_status": "completed", + "dependent_files": "api/fund/v1/wallet_log.go,internal/controller/fund/fund_v1_menu_log_create.go,internal/controller/fund/fund_v1_menu_log_update.go,internal/controller/fund/fund_v1_menu_log_list.go,internal/controller/fund/fund_v1_menu_log_delete.go", + "gmt_create": "2025-10-08T18:19:28+08:00", + "gmt_modified": "2025-10-08T18:46:06+08:00", + "raw_data": "WikiEncrypted:gLdwQ0KTVfy2nZNoG+5bdVeNIsI7Rn4dw5X6ZL0mhD1BBBIaJJZW2YjOW+ugimYSG9xA3ZUS6OH8+spiwyeUa2dff3Wg3ZoM3OcF6w1SfIUfWmDL1hLvqFGU/n3l0n5WI5Vsx37b9ZMGqW8T5L9fgTo78EUg4QNL4PRhdW9rf+S2C647GMaU++K2tAlKnr/6Uj8FHsdx17K4KU9iZcNTz44B5lqAjKpw7804zOfD3xTGwiANwhF6eXUn8DHvxHXqTiIdqQiZMNtFg+QWjwQXDukWbfTj3YdRw8vUeR5450/GxUZ82p/6u7YWmBZhukwnZ1quMwModlIJ/tZwDc0eWXVm2y7Y8RVn4g3f1MCJLpLKeqhO64H9s6zBz+t/TDaiD4OwJBnW3MTJoaxbkrllk3myZFBshVPORjS8llqHemg2nyaw4Fs1B03mpXDA+s9ZHfGqOSbgWCCVQ6c1xoBTxx+hBUIpLWOannuTOjWs9AZI8eeEMMDH+39eDKYBx6DlFXmXE2Pw6i+VtroNV0EeEmjWQzH2n9LYui/MFZHAyVmGkzpNGwK6N3hjcoRrxZ0CfyyEPsXWMouwJnXgWwo9ZKQRR8aOabqnkrqm5uF/hWiQL+OVK792xeEZQJf3nwr2C9leCdvZteDTfVdNgWw3Ni5+5tQbURM66mYvX67DWI1CI1vcoJkGfd1cE/9li3sd/+Z5Bt0zfotW5Lg7X6U6ADHq8Hw30xt70n9+AQw68Un2azk4p6Xre1GeFNpawuqltGB3v9Cmh0Yx3oBXD2epYLpBIGf1hZ+m2H/mA8ygEtI/HrRLV+thguWDEsnMsdbtn9OH+lQK3fDH3Vq0aPSwMNdzzZGe/dArFtwDUGUXy2lhRW2H/kKo2XqQtKhzFaY9/XWJ0FqLCmVGqLld6vwXqPqyeaCJ1FtoMbmSKZh8uAw6dbiMayiI12Cv3A5QDeM1gpOFHtm7OxfDoGHqt99yz0TLs8lAh/ci5nkyAr3ZIwE5tFw8tM9usoBFqYcMSW++ta2agBL+dAPLww+z78U9sUVZ8RES+DpgCfm+jImJrxnVYeZJYYD8HNDxEwkpfdPjkKX6uGq47cbaCVZAZnMHx80FIkFVRhojXSWAureFgdRzvaPYvLk3CCMTeKsqITOZoSvwYyTUMr1h/EEo9TrPkgsSgyZwRPGG6142LhfusshjuKyjHNt65vK0eiZL225idaiePPwRd3TxoOzM1B226MG/KvMMGS5I7JKYSG1h/5lwvScTo/FJNCNgo1p3dprug2xLb0NQP2rd06Z+ZNo34iwpVIY0CbQ1mnprmUmlr5zEQVwLzcyMBrcd/Uv6c1VCIq5uKMbypvwrgVS/4BzBMvej7bQW0RELbmm9g/mckKI=", + "layer_level": 2 + }, + { + "id": "2c2db8d8-8ed8-4ef7-85e5-9d42615aba0a", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "地域限制API", + "description": "api-restriction-region", + "prompt": "开发地域限制API的详细文档,重点介绍省份查询和地域控制功能。详细说明restriction_v1_query_all_province端点的实现细节,包括HTTP方法、请求响应模式和数据格式。解释如何通过省份信息实施地域限制策略,提供获取所有支持省份列表的使用示例。文档应包含地域数据模型、查询性能优化(如缓存机制)、与IP地理位置服务的集成方式。说明该功能在订单拦截和访问控制中的应用场景,提供实际代码片段和错误处理指南。", + "parent_id": "71487087-d57a-431c-af0f-f9ce8536c80b", + "order": 1, + "progress_status": "completed", + "dependent_files": "api/restriction/v1/province.go,internal/controller/restriction/restriction_v1_query_all_province.go", + "gmt_create": "2025-10-08T18:19:31+08:00", + "gmt_modified": "2025-10-08T18:46:54+08:00", + "raw_data": "WikiEncrypted:C34GewOyK1SlumqKiPsSg6REtxJOhfHapmWv4MsZLlMnVHv8m19RbsDccvca7VOfBHC1jyhvaYbgCJtCr8OFnOXgJd1hgEp8tXWWmNRgzcoiWSPnrtMLbKSNeE/EO5Hsi07kCCTP+q+z0DCEdHjRUoEfVRDUia29axnKySIKf2jdx5h0sg7eXKNqleoXzcRdslyd/E/l2ATKUKwlpRc3Mwi90+KzXlHyVhbun/g5+WDzzDn6j5xICgb772TnbCLFVhJMVG2NK3Nv2T3ld3ONvk+2Ki1GULEIOE3KleevYffTucrxKqfligT01pptyaUOwccqtGqgaKJie1hSM3JrpMnEr3ufNGb1Vir8ePLosnWkuMuMR0xaqbsT/bzFDYdOYfJz3a9gj1sA2NxYBZ32S0oZd7bf+F2DQHMNDuA5PfzcU4NxOra2bK+8uwUe8tFgti0TD4d5IWd4TrYIPH4wqekOJ/ESKj/5Finl8ay2xrjc4gUULV0VUS8o7PSdiGExRCtKTd37sEuYVHxnnrTi4dQefnTa+FmgvBhIJol+i9Eb/iDVchVtSSnNRWzW2KTj2srCgsLRIrvIUAcfJpcoskQgnMYu+IhYpAsbuOqIDdKOxbknqImvsmKUmnYtPpV8l8LJJnIOOxp9/Oa4lMfcOEqGHs+nF1KvuSqVrQ+zJ7+mXSJP9jy99PvTiCoGiWW9QYDBE1mMtKVyoY8IMm0TSHj5lk4XukB1iM5zLUz9K7XWTaWUB3OMrLTT1CT04K4fCvQg4Y/iLv2a5SN2kRlU6rA/2rj4hHujJmkPlAYCEoxfnsRXJAf7nUsPF7a9XQHUOi7NFmYPsdFOelJ+hHjcijXHZf2qT3qY44S/GCGk1pajnWu1k9LhqNO72a8587Qa80ZJzHUjg9HgB9x4tFQB+vJSxQIfNijHYhck7Xb4FuXKyJ1b3kr1N/S2l48Ui35vosb/1OTj6mZKVU2bhIITGIqx9jaEc4TdC0wxzDvx/AM0OLwUtlm6KP45PX+foZ8/9a3tNHVZxOkd5pkXnH/FiGwswP5hgRtHn8BaH1dRA/u/89v9nnK3OF3AasvZbVWVjqoumStKJ4DTye55BGI08akuwQfxtbMSMawQDWLBhxI6UaOa4OdZEUiyTB9X9ieCD/+dcSIkCI3TRMs50o/vBqut5haFnGkCKvHN2pL9Jas=", + "layer_level": 2 + }, + { + "id": "58118687-a7d8-4b0d-b788-36481cba182d", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "Docker Compose编排", + "description": "docker_compose", + "prompt": "创建kami_backend的Docker Compose编排文档。深入分析docker-compose.yml文件中的服务定义,包括kami_backend主服务、MySQL数据库、Redis缓存等组件的配置。详细说明服务间的依赖关系、网络配置、卷挂载、环境变量注入等。对比docker-compose.yml和docker-compose-local.yaml的差异及其适用场景。解释install.sh和install-test.sh脚本如何自动化部署流程。提供多环境部署策略,包括开发、测试和生产环境的配置管理。", + "parent_id": "3c6ca985-3423-453c-9f11-d9030f798abe", + "order": 1, + "progress_status": "completed", + "dependent_files": "manifest/docker/docker-compose.yml,manifest/docker/docker-compose-local.yaml,manifest/docker/install.sh,manifest/docker/install-test.sh", + "gmt_create": "2025-10-08T18:19:36+08:00", + "gmt_modified": "2025-10-08T18:46:51+08:00", + "raw_data": "WikiEncrypted:h7ADvj4WLJHyulzCl+z7kJ8Pt9hFXqPwDEYqTB7J4Z1DpkLMhPMThA20z3p55TN/dbOQvkYqmvPeeZcdT9k8AGiciG93m8eaAYTkXuIB/l4DAim0NYlZ6X87KxK+sMjwpnxmr6pP7RLOBo6UxRplPh70Fbp+ZCyPNE79wMWIsvkF1xqcQIlTyyFRlpmj3TkENxirLFnxTb7D0dGKaC+L4w/Qv2xsaUjLvDxtuk8oqZ71V4Qwcrv2vF2g+FcC4W1y03/EsII4j8QwbYtAmcJgT2klbExZya7oBnsaCapLj7rXm/66r/or1p/c3CBpnRExtlMeW9HJ1N6rJuH9KXgMMUPadAST4plZVIbYOxu2ntmvBhxzre/Cn6cwL8J7x2GZmTOKdvWnemjYF0cHDSy9S/UVwjisOK0dC8TsMQBsg1Vtd4huntjKgTfo8Rv+pyZU5xELyZirMaIL8nw/QLCJyjR2j1DHcq5RpSOpG/2SrKNVU4RFxwv1KbUpPSWZihT5z0JZ+h+R85XbIQ6c8cPrIUNiF9rPJ+LbMgD+GEZf44CSdKVymvGJyLv2aFAnapp6ZnuUPIUw9wmFW0sE//ZPhfGimLyQPXiLLLOx4si9S202RsCHAlNGZXnIkFWQYwlm6Myenb17d4x5DQNtAvL1w3YQA17Z51sicIC8UdcvGSzJL9x4Wm9crIB1WFa9yTbcliqBVqUibPD6sPRZvWYkKlSOM/WeGeZLCOgRBK0ziTl0YSjPlcgHTvyxJQYl3lltxnZ7EpjHVOOYQho6g3Own6kONLcRabI4vN4a1lnuMRb/0jGXo+sbRIR89a480+XJolbxc5+Lt8YJcqkViLNTL2HfcKyaK0u2McIyj9T7cRlNpLFJzIoPLrn/gmzG857hSVZndqZ2S0pOvCsnGjC8KoAz3JYfKGpsSwwjgpcVVda/5cB6X09jBp5PpHGtkWv0M73vV4dhGu/AVMIFcm0oy5iBQ1IoYpYILbmr3eZ3nsK6y/gaOEoYfmQ9guCiGEv1k5mwCsDL2N4GMd4NrphuAZFqa+u2iMGiNkSIGUHaTP7hfEWmFPz3Uypup4T8PtEB2Z1DM4PZMvWRSjab4e97uHlJND2QvS9B7Z5aB7HePoY3Sbz3pqd0MzMYYmBSsP5bdKIr9pzDIm+bo7eHcApmAq2dqSRHg4wr872D6+dpqYmQh2bdUNxT2jnhNJJWdENk", + "layer_level": 2 + }, + { + "id": "7fce1289-c2cc-4640-9fe2-2049d025cbb3", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "Shell脚本自动化", + "description": "shell_scripts", + "prompt": "创建kami_backend的Shell脚本自动化文档。深入分析install-one.sh和install-simple.sh等自动化安装脚本的工作流程、参数配置和执行逻辑,说明它们在不同部署场景下的使用方法。详细解释wait-for-it.sh脚本在服务依赖等待中的作用机制和实现原理。提供这些脚本的调用示例和常见问题解决方案。包含基于这些Shell脚本的CI/CD集成方案和自定义自动化脚本的开发指南。", + "parent_id": "2b16f9fb-3e48-4abf-a52c-5fcaeb1467f5", + "order": 1, + "progress_status": "completed", + "dependent_files": "manifest/docker/install-one.sh,manifest/docker/install-simple.sh,manifest/docker/wait-for-it.sh", + "gmt_create": "2025-10-08T18:19:37+08:00", + "gmt_modified": "2025-10-08T18:47:04+08:00", + "raw_data": "WikiEncrypted:mglmhPyPH3dtFcYRgfroE6r5iIRURsCQLCsCRil02AKAdkWTWXqM5uSIN+acuboTL9lryyEx+kLcd9u/TwuNVTMqaBnEh6CfwrIc77h929CPwdDlT2sE/wWdeWpMkgXVKaGFpTqZtXX//6qhmPDLsHmlnX9gniSevlGs1btfNRHUTRd+FXSh6upD4A4csE8U/XkCo3Vs/o6jjV9gl8fR5IzGI3jONT+pZtXQhSnyg1Oab5dEMJjss9NoZibHZACN4VrCM0o8EioaFPpzibdymj9B9Z4jlW47U0vFFP4b7Vd55YM1jGCF+DjKkIgFPn7i2Wu6L8zPQZjttr7x1ncnG88x1Y5QCVTaxwGUuk8stW7GZiXJVYo+3WALOzz3WwkLISr1DpR+fT7u+Ye9hR+6FquP/p6wgT2qAflGBJ3Ut+PZHUEbE4ejlChLvL20NViWPFY7lixxQjEPrGuJn6VU+TTuPh+4qcPotgMftVXQZCJ25EEOWx8E/5d3cb0RuzmdUSEfr12aqkhv9KwzReY0oDrby6MzpC6MyNkvbtMLY1DJv7M1iFOSJ/IRNleuU1KKBjccItC0xjEDBJXdTlrE4osyiamLCi9WBsTh6T/WYuVYMuE/heHPbq9PAlBPRHl+pjbFVlwO3iBtlQw1ovk6Ef1fSWk5O1L2BYaVN+0wEpslestMrEgxlb0JOZUrvBn+zKzLTJnjx7XCG2frKaDh3VlUYRXX1bQcZu1S+COiIMh0pDFRxlWgWmlz1d40lr3dWgvByBwPY8gWT0rsFXDnoUYzV0F57eXG+G1KrUoZLmST5KDcfjMaK+jQMYlC3oZr6uKfPFT2B8h8IL/ejXjQ2Cvrr0ffSZ4UN4DejfMIcDU8aug7wV9pWi6xgTu25yq8ZXxSNVvsVT+Qn8deffoWvHEcd3XYRAsDP3ck1Qs24QbqvEjBs/kPn3+3kaHIdN5RFq6IosXbzGgFJEdyo2U3tPBYl4il9k5Atd8cfmJlcuVzx37L8EsGAb+8bkHQI2Ck6/3JlyBdaJ6ow7Z4+jS0fgN1dUioC0dfA5Emceck1YIEimTsDBiBjnOFi/1hUmuzn+zRW5ch87jRmVhrp5+TAVS5eN5cLsH77X3Ka9w0IIg=", + "layer_level": 2 + }, + { + "id": "4ed6b7ca-ace0-4389-81b1-f1e35781d27c", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "天猫平台集成", + "description": "tmall-integration", + "prompt": "创建天猫平台集成的详细文档。重点说明kami_backend如何通过tmall包集成天猫API,包括天猫游戏卡密充值、账户授权、订单处理等功能的实现机制。详细解释天猫客户端的OAuth认证流程、TOP API调用模式、消息队列处理和错误恢复机制。提供具体的代码示例,展示如何调用天猫的账户授权、订单创建、状态同步等核心功能。文档应包含天猫API的配置参数说明(如AppKey、AppSecret)、请求/响应数据结构、状态码含义和性能优化建议。解释集成过程中的技术决策,如为何采用TOP SDK、消息确认机制和数据同步策略。提供常见集成问题的故障排除指南,如OAuth令牌过期、消息重复消费、订单状态不一致等解决方案。", + "parent_id": "d49ad99c-afba-4362-af4e-ff689d5d94cd", + "order": 1, + "progress_status": "completed", + "dependent_files": "utility/integration/tmall/api/api.go,utility/integration/tmall/api/oauth.go,utility/integration/tmall/api/trade.go,utility/integration/tmall/models/models.go,utility/integration/tmall/topsdk/,internal/logic/card_t_mall_order/order.go", + "gmt_create": "2025-10-08T18:19:44+08:00", + "gmt_modified": "2025-10-08T18:47:59+08:00", + "raw_data": "WikiEncrypted:pmN7H1JF4+HQF9n9w8KwRUKDbNdP/de0lI/DTackQjt1dXPuSXceIWbMl+vvXLEu1sxXD8WKbhjK3n2/UhdphhaFjQmpEob6TVfcLAEh+k9/ktbVlygCt2t+GwBc3MuUV855x485AalJt0qEkSZAh/ijrFM6JjhTyO0u4jE+gxHIW7BJBRu191WyfTaM9rLj5jdJ7/ATwDjEj6YrggjBlpGVa5HdOID6Z1Ow5f2HWriYkRwBzOiz57SPk+bEWzk+1jtGGbDJrDlsCw5t6dwgu5iC8Gz9fwV6nIkfT3SV2xKmn13dOZmhkh8Psq0dNVRhzi/vb8v8kGuSt/TqcDAZBZIlD4TLJXaHZlqhBSiXZjGYYJogonk1XJtIauXfyDvnZnIcxzFyB153pduPjANIcZwLhf6W3mLm3WZS0gAAZJHcb7mup8Fv6zDUsbTSeQ4pCUCZHBGavulqwK2QgCjJ+UYZDCc4p11qGL0mEqSNYweHwY1gGnEFok0Qywzmq1lSev4814qgIHEdXbjAVq+JlhrprmItEfKQfD0aGhTQv7cfy2f1ku5zPMxcEiqiLS6OR7xgf/wovpJUdLovk4/7GrhnmBOEeJGY0dtPbzoVpDfYoOf0RB6duGZnvknwhR0U96f/uwJJKuqiEGK5hKQd3Qd6fndnXpthkMVClEMw1kd9qvEXCBi3WPETboeXxwXtyPIBySwEi2nWLytULmaHZjY4RKScOjiJH2f/yQDql5d3MmvsLLPZzPvbmjZndmImsFm0PYq+d+3K/sD7Qgl8DHRFd/3Owo7lNJiafzF2oDS8ElVpFYdoLt1Zr1kyaWfkhPuRdO8P/sjJYqdzyenB7V3HTsPrDrpQjIgKbJGCLuXY+7ppltFI5d2BOuQWOVE12zqBmQ7fAIDohuUaE/RemA3/AXDLrUgIK6jv+3ELcuWdFXIcGsA/7EB2qstDoXlUmfQ9/Vohf+ICPfSI/BJN7MNWamVbZwU0E6xd/Ps4TbJlzhokLaNQM4AcLDTF2DJKHscozedlDZvq39T9mOuUl1IQeYrzUpeU/iPW8QrLS/TRmZlyGyD75c4Iz6RB+xp6FY7X2dkToZ9AJWN6uxeOE/aI8dVJYduVmGVqWEQoUUKFMutIP7XgbRYUwBVzVlGrA2qVeh7N+rENqCzTGfjWCSi8MbxKgu4hK3EkiUvvfD06vBI/pZD4a7UeqBsOeXCnAAWpRMJbpGTtlh3WaKk9jp9BEALl4YwtAj3zajfthxfInITjYSfE4p0ZiOsCUAAAagfxaXxcm3wO1jMojEgsLiuZd45YY2dmgLKUSG6cWZvhW/V1Cii/QAokiEduwUHAUbMsla4gK6ntp1viTaha4xkOqXEEP4B+pe2bf0+/GtXc1VHTLHlzzzZVHYIzr+kmk0MawuPIOzVl/pA5HTmzGU3pdyR0/2Ir5sVu1943OaEWhoe8TB9yU+6lSqzUZK+dze1nglXy5q32yYQwNHC6fvgpf7fFnqKsKJeYFPW+B2NFEtOb8Rejh6j+frPjuf9EEumVtZfe0A3TuSDPqRml2PdhEezeDG/CAaUi9X+5va5FHf8AJ6QdJEy2shfCgFd3q+GvdBXHQNxnGzYtjgXYihGtQpDtkVVjBhA+JOsbmlUqCXcYYjFB/ZRC32YxQznIDa2B+ToI+QNUWt7ojUx2xVUsbyJF64FY3noOwm6c615SQUmCpLXI7IPjea8mJ5+/", + "layer_level": 2 + }, + { + "id": "745be06d-31ed-45f2-9822-e6cf41730cae", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "Apple卡密充值处理", + "description": "apple-recharge-processing", + "prompt": "创建Apple卡密充值处理的详细文档。深入阐述Apple卡密充值的完整流程,包括充值订单提交、iTunes回调处理、充值状态同步、重复卡密检测与处理等核心功能。详细说明充值订单的状态机管理、异步处理机制和错误重试策略。解释充值处理与支付系统、风控系统的集成模式。提供具体的代码示例,展示关键业务方法如充值提交、回调处理的实现细节。记录充值处理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案。", + "parent_id": "f7bc4c8d-64a0-4c2c-a17e-cd38987a94ef", + "order": 1, + "progress_status": "completed", + "dependent_files": "internal/logic/card_apple_order/order.go,internal/logic/card_apple_order/callback.go,internal/service/card_apple_order.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_submit.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_itunes_callback.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_order_reset_status.go", + "gmt_create": "2025-10-08T18:19:46+08:00", + "gmt_modified": "2025-10-08T18:57:37+08:00", + "raw_data": "WikiEncrypted:ngLqLViTt5zzUmJHZ62DoJjLFzanDnCUEKH88S7Dvv1X32wPzyDcbjDs6v94J5yROMxgiwKYF1A8NRbu9hnKYFd9aVfkxEfnFwMuDDLlEty7cKSzzMoRz1UzygV8UVvWVW2+IKCBpUW7rWmlmShhwmfprYHt8x6A1O5e7zUArn56dPNYVFegZk+uMVhOmNE6BCX3GjnAD9Bdepxi38Zg3amPwrd5qz9YlDIlZ+JLZjO0DCGiPzkc53UOe749lpTDYnXcbOmjL/B4/19XJNglt7bPpof8OPyqPkjobNzOhVi2DH16GYb9jeyTvBGEquy4zdw1Id+hEx+E8ZKvMAnN0cmKRO+cUF5qqHTRAEJIP1CcyWTMt/p93p+2Z2WXCqJWCUyaWa7PvttrVrMvWWCDoB1TabwTslRtLBBomgUHCdUeoBVZuFyKiWf1v/Eyo/p3w9gyaFDOLXfhy4lcaDGHGmxGyRTBhPaVm3ne10bHji0kVz5VDCYXDzb09tusRHuZXnTPg7o2nintITuqnqCz3cO0rAgo6Qng7F3AfhU9+GjrZpOCnNDjGe6WDeuSmdA0MBs9DLVhcOnKE9HkZHUG+la5VO163Yxbyt0llDofyW61fc6yZYNjKD/ruQxr8aNAEQxs5jnuv+i68P1yLp3rfh8GH/XXcS0nWxrGkP3hafjBNFfATe9UeaR/kJSxcJj3r5ASmUf8Ishf1O9F708uiYh0RV6FJUfkaOXdC7JiOFUOOO2ctzJV3KX8nE9n4Erjg7bCtQ60hX/iR+4Jx9hjtHyKTvXuRpAlMGqXny+q3j0Le1LqcvYuwAykSDOuEPzb7Bpj2mX2aOV/q3GAsA4tHvb67PvBeG/F0wEOR+m9z9RU1F6PLCaj8kPBT54MInl5DxB3WnsfQttQzNmPkccznjfBnus+yYiA9ppvEtkmT/Nq+MVcc3i+yI0jACs+KZwrxp2SaLes/0xJClCjIDBcjMXu9/mJUAiOJg09jQOXzWWeURrtqckus6fMlxecMnp7D71Rli9ELDvDzDeIyE3foA+tlSKW44UdTG0vanco5guTAvX/wwp73jmg2Ypvun0l4wGhpR0+Hbs+J2uVFzwC/CPuiaeygsukFtbXtPs8FCdPKeq8GvyUOEJJzB2dShtjkwHKfNUPbyNd7UzTmsIkvssK19oGYsUMFqrlE1kHe2mzUtSnS2dRWoPQR+ORrOyi0iuR+++7JY0mkKbD0MIxSNny2f3316CKlZwKdkouOqM4tTeqIj8YyLn/Qr6Pbi9q2h3IlETzwZS+aHrUFKNp0x8oPJ35iZQujDc36ez6Z/Aq/E/72JMTOiEHLl22DQ2Onh1osqSleTnR5s182CPNLuTEB05p9g2u0OaKaFjHkEFFqFd3ouYznfA4XFpg3+bzZU62ATY6c+U/GRXWjBPufmMbVaboCEXU6O5E7mwuGm1XfP1lj7+L8TExV5keV8MqxDFBtsQgGn+9t8WQrKmNPFo1eA2GRzQWURAPytBlaiktWpvPU+IMkNEKg52ZrOBaa4sgtomzjP5N+IwBiwMMxK5i+fDu1A2HuGxen4HRE/CWTADfotXqp20oIiJHYDdDX2DOcXnrRyOEVkO5t5zwmmlDWZvyfN9lUM6f2slRNX8=", + "layer_level": 3 + }, + { + "id": "230cd5da-15c7-41e8-9ed4-a0cc2496bd71", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "京东卡密兑换处理", + "description": "jd-card-redeem-processing", + "prompt": "创建京东卡密兑换处理的详细文档。深入阐述兑换订单的创建、状态管理、历史查询等核心功能,包括订单生命周期、状态转换规则和持久化机制。详细说明兑换请求的处理流程,涵盖参数验证、库存检查、交易执行等环节。解释订单与账户、支付系统的集成模式。提供具体的代码示例,展示关键业务方法如兑换下单、状态更新的实现细节。记录兑换处理中的异常处理策略、幂等性保障和数据一致性机制。包括性能优化建议和常见问题解决方案。", + "parent_id": "d56eb845-7c0e-4be8-bf3a-239e3c0eb5e3", + "order": 1, + "progress_status": "completed", + "dependent_files": "internal/logic/card_redeem_order/order.go,internal/logic/card_redeem_order/process.go,internal/service/card_redeem_order.go,internal/controller/card_redeem_jd/card_redeem_jd_v1_place_order.go,internal/controller/card_redeem_jd/card_redeem_jd_v1_order_list.go", + "gmt_create": "2025-10-08T18:19:49+08:00", + "gmt_modified": "2025-10-08T18:58:15+08:00", + "raw_data": "WikiEncrypted:2Tw4z8NsJjOlKl4tOUQ4rRBWcbr4pdze3j1+4HY3S26IQAEz137MI5Yq00cndqaSFSHvFpKgMtWBeU2MocuooTtw+/vbdByTDIm2m6QMlj0YgBjJy7FRIg1NzkZOZo2dBnr4+843dekwRNc4rXV1/WyzTZ0P2PJ6D48QSP3sVRTCYimL8zahcpjhhu5wJ1DCpzXMKRS0S6yE9zk1KbVmaWvcLpDRF5pNuSGch9VhkhRuTvbl3lv3Aa1eGagTfmrN/9ffgkBo8tkME/0k02T1D656W0Ey7cRJDduSIJoBeaM6mA3yT3j9hlXmvG2pJeCfTduDONk24NThZwtsCcaveg+0Svklv73B8N2ZPTlaUuCFlYgBqK9a8qJxVkZpte9lpaZk8G1+8aHCmztrC91WE7QW8jspEMPh5MiQKtzO8H54B9hM7gQ2HLEBWpyoExPTckpsZThAHCwBfdU3astLS3HriwtJRJOmcKSw3aATZ1THHYlUNPwq8jZVBgb04vkosL9/XvlcswEFYBOE06eTvTkWFXiFHvM8cqUTy9fQRorp8OEZgZ+wn2FHM5j+8P9a24346+ldVPhrCwoY2DU+2W0MTdj084H/vRELAsIUVreoAvkRlpj9kxvUjxuhgH45vY6nNk0eU6dfokSMEdFCvTGNvn9WUw7EtE3h2YFWTMMaFcIF0e6AwmgJpPegB6708mBCiJPB+N3DqGM+V7AjS35iT75lpIiBhrNfqRbUehN2vjksWooLFwCKeIzqUpRIG959i85z85YiPBiF1O3LaV93FxMHyB7pVjf955m6am1ebASO3H4uQt55/R1QAgr3wvNxka44+C3DoJQG41xxJzOUi2ixmhUEksYQY9ksSiYxei43GN8bYaqVRC2jTNj0JdHKdjFl2fv4vw6TCLWDQFttUu/sQwvXL87uvnQCaODbvv9pyc0PGQyTjxX3RYIOM4KZWT6MO6EOPPRB0YLtMlXgIkgFguCDMvuTqaPeZKVM0zamwLGMwC/sa/+DixtY3eXPCtzT+J+J7UgQsey9VuF+j8qATagSRTUC2MOUG8Be6N7YHvFzlMSZCgu9OnEkpsZQbCw0HggfkretmqElYXaLWBui210TeE7wM7yrw0FIV1qEiENbbv5N3QZjYve/YAzuufUscM9Mvmg2IA/FvVN8/XMQ1p/WuXPOs1gkqDClgxkPcf4Uac8QieEVlBjotTPYR/RCOtF0edLj5PMOpgj0TF40CorM/HImZcHpCKIHfrTVBYdYJlHTAYmIEzD8Qhoa8VYSaikimVZ1siU+vSUOWK6Vep+GpKvIogddbdc/9xXxkdUtbzxGHQPJ2DDUwhr2Xm1sv3Oh+u70TQfuhhfp4tKWjMmEwqaZtqX9LFM0C4dGaAxI1JlZg2knCT07wjY/e+UzMJrNfJZ7vTj5l3lU1PVHSWgLEZ4gIYRUoOVVl6z9s3/GMH5oM5GGIBC4Nj5QuY/aLZRIMhPbZUa+sQ==", + "layer_level": 3 + }, + { + "id": "58030d31-a0a0-4431-abd1-4065b0200dfc", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "天猫卡密订单处理", + "description": "tmall-order-processing", + "prompt": "创建天猫卡密订单处理的详细文档。深入阐述订单的提交、查询、状态修改和回调处理流程,包括订单分类查询、状态同步、成功状态修改等核心功能。详细说明订单与支付系统、AGISO系统的集成模式。提供具体的代码示例,展示关键业务方法如订单提交、回调处理的实现细节。记录订单处理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案,如订单状态不一致、回调处理失败等。", + "parent_id": "8137c301-f13b-4054-992f-c556767d7c45", + "order": 1, + "progress_status": "completed", + "dependent_files": "internal/logic/card_t_mall_order/order.go,internal/service/card_t_mall_order.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_submit.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_query_order.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_modify_status_succeed.go,internal/logic/card_t_mall_order/callback.go", + "gmt_create": "2025-10-08T18:19:56+08:00", + "gmt_modified": "2025-10-08T18:58:16+08:00", + "raw_data": "WikiEncrypted:pmN7H1JF4+HQF9n9w8KwRa3WSApkXAR5Fc40tYehasW3oRRWjQgzTzde7LY3UZtxAiPwPZh6umD0hIu1ZxyamO/jzuB0ChImt4fwd/3TrlMI6CTgIwqXZdyi2uZcXeOqr+cxbAih167U94oPG7vP0ynlhZnr9bMec0kuqh/WRLpLnF4vcuws0pDRdrGjPIWvns865FMXNTmBRkZwBD12AI9v5HeuFC/mBSB7bwujiigRKcsIYWzISVjTI9xMTb+wXQOEoH7u5DiAEzaXINxIoGXKPjS1HYunIfG9J+tX/3zCnRIlSG/ZgYGoFEf/KqAWxXGTTDidEywoAaEtsoyEkH/p+fvz49MlshRjhJh82Am0zOO06lkbnHx3CXtY/AmOBkalN40SQNVLLrVhC+nnZOxAQjfbcsLzVpn0k0fBRHw1D7Rgl47TL9Nip8ZGr9tt7vEb6kxG3mGscOumxo5DDzcPHciw2oZmjLLoVfH1wm6WcXKvd5TF/+YePJazkJ/fYq7cseFLu+q0Mrf+5Szk0Img02WDiiJv3/USpD3fIC5SCv9l1fFfzh6haJH+YVntv6VHQzdSfVO8w19NNy9REF5skh6wZLnkuAb35GthbyTT+RrzE+0gfqsnmTO2RlcsGo4M/SNtnF7tyuzSI1Ikc4dbzHRfvBbTuL77Mes48EsZNzKFDP2z6B1SL2WRa03heiT/OwKzZbdJg2v4WQyF9KJUgAjXkxpd21w+XOOeQVnZXBy6iX72BdqeDUHRxOMW8Rft3KoD2rAx4VMSEYlm8yZf05HwnJfgIeQ7FPhDFFtjAyXj206M6cvbKLs8ucEafTjsGGMPcNNposqicSxfBaYJO2LIos4WDfJ8a6ch3fofGBRJYoOlPfMm/E7KdGY11PnkVEYveJsSGG96OY3FZ+skie2zb5Y2GrwfJF5WpDb7Zv4GRWDYj0d8K53mi3k+cg0XmlFnOmLPD1qKIAQg1mwRR4KSO+KVX7aJstFweV5e/0Um5q4VqYLMxQmbVdxe2aseE/XJZY7EZUAEDUh42qi2xQ4/Czer572EPp9ov2yc8RKWtDViOVM7V8mt1E1s2D0abzLj1P2cW3iI1n8zFG47vrU7mddUMpkzCNpAgUtpanjN26fgJuYxkV1Rnoc+A97qS97rBsY5Mw/ijcDep7DSKcn4oE5GNTCekRawF8nmbwXAeEqNZxESHg6HnPDG2TRAa0mU82CUvP8PfHLGFg6+zPW4n3ravMQ9k7JlGW8L+dUBhcLuryFG05xTa6XoW3nUncn4OoYxG+SRzUrSKeunw5OsHzov/HjCDev2WSPerrC5bkCz5m9K+M0ts9Pzl12+9TZimZx0YHqBrlCDaxPdoIB9AecRZkLy3Pj/EKWn5Vua0HBll5c/AXxCj40GCA9q7Axa7wo1DDYzbPs47lwr6Zqfv/cvP91kOFmt/Zsp8D5XtbY/Sy+zFiGnw5WXZp8RwhWdjn87K00yYzlSoX2QkL9rl8PCoJhnEehnRMP3UfhRZufDeXU6lnSHwENNHcARGFOLwKVayg7nvgYOiCRO1XdeX60yUGNNnf8byqMYZhLQBWG+B9ksEfEgBbT3XKQTMv9pm+66dxKzfFssS5kJRXynKAx4Z1ZLChf2TXj2p6fvGgUKiIHk0Qivsc+q", + "layer_level": 3 + }, + { + "id": "321018b9-e7f9-4101-968c-1818559aeb32", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "IP查询优化", + "description": "ip-query-optimization", + "prompt": "创建kami_backend IP查询优化机制的详细文档。深入阐述IP查询的性能优化策略,包括Redis缓存的使用、布隆过滤器的应用以及索引优化技术。详细说明IP检查接口的实现流程,如何快速判断IP是否在黑名单中,以及如何处理缓存穿透和缓存雪崩问题。解释查询性能的监控指标和优化方法,提供在高并发场景下的查询性能调优建议和实际案例。", + "parent_id": "6810876b-78f1-4c9d-a2e4-a82d03615272", + "order": 1, + "progress_status": "completed", + "dependent_files": "internal/logic/restriction/ip_record.go,internal/controller/restriction/restriction_v1_check_ip_allowed.go,utility/cache/cache.go", + "gmt_create": "2025-10-08T18:19:56+08:00", + "gmt_modified": "2025-10-08T18:58:38+08:00", + "raw_data": "WikiEncrypted:HDzk6pDBQ9qxx18eHV4+ms+O2E4ojmm00kWAnKbnb/AMRZB70jeLhKW0WT2jX3fFE0/z7i/lrUCoyD02Qok5lj27e+0TrLp1DnybseY20m2kdsNivDERjyOZh+dwK+03eYbVnW2mgK85IDoNg/stwG/jio1goT9EpZceMcP6kLCBHj6lJvkGJPsl3X3BxGzqrf7U411Gl/8beFyrNtNNbzQcG6MYI5yxfJ6O4giFhnDV4DRaO+9HeZFouNqCnt/MMtPpIRYj5PceoqK2PISi1/BZ3l5wacazP43IMC2XIlaRim0Xy33sGhYw3ggrstwNyc4a2hil3MZeROD4DpV1pcQN5d2qWP+IYERqgfXMNkb5F8cxf1u95Vwwk+DNWLuhWz9zQY4xuiGR9/Uchn45pMRNGEO6Y0FrkfhxyC36f2DL7zAUy+YGw5DzQr8na4naH4ETSD1t+9GIZ2TwCWwbGRU084daz7FFkZNrfGFOmZVmNWmxhab/s4pAqWhP3kjG2uX4Kdv5mxuKTCaUtPtOFZIMK0njiqH4FihPMsX/T+630oVnDA6Kqu/51IyudKWdHaHQhufXjy1WBxMe2Zjc29pd9XGvrONQNP2ER1s50vZSC96ja/S+swTAQu8To1kg84aWGohPl6vMVePDmsrmee7+/zWLen14DcRbvmgp7lDn1yMb5pi/o/uEp1nZrzmAImKHZHfOfc7QSm1k3R1lgYKM60ZSBnTUD3aXc9q752eLLbJ3WUcHPEe3gqA8P+W4+TuUC/MQ5ViyYmDCc8QP4IOWkrn3IJIPUMY5PFS9DISELmYgVsHgatalwV8vdTqOKPSHsd3QzBX0zePRYfi9+0OHLgvEJHxl8H6z3iTI4C6uWP/l7kyfn9weaLbP/2dZLEhWWEjjs6/wFjxsxjzVBP4kuLVRzMu8n70NFPaY6fXdoco/JeRvY8vKs+Vf69EZS6uyWx+tuK0852DXpLZyEtPcltnSx0g94yM0hvBHd6J/gZNaWWkcMHA9u3CFgfIjI5/R756QqfRcn9ThLtOXea6Q4dtoZoRSao4i69ZV/rOO2vJns+9tMTgfJRekfGHMI2b/m3uigX3F/hMBrhvBNQ==", + "layer_level": 3 + }, + { + "id": "c66c0c6a-c5ba-4081-a359-7bb0a47ca417", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "设备ID存储策略", + "description": "device-id-storage", + "prompt": "创建kami_backend设备ID存储策略的详细文档。深入阐述设备ID记录的数据库表结构设计,包括字段定义、索引策略和存储周期。详细说明设备ID与用户、IP地址等其他限制条件的关联关系。解释数据存储的性能优化措施,如分表策略、缓存机制和数据归档方案。提供存储容量规划和数据清理策略。包含数据安全性和访问控制的实现方式。", + "parent_id": "e130f1c6-f0c7-4f2b-8467-d00341dffec6", + "order": 1, + "progress_status": "completed", + "dependent_files": "internal/logic/restriction/device_id_record.go,internal/dao/v_1_restrict_client_access_record.go,internal/model/entity/v_1_restrict_client_access_record.go", + "gmt_create": "2025-10-08T18:20:00+08:00", + "gmt_modified": "2025-10-08T18:59:13+08:00", + "raw_data": "WikiEncrypted:W4RZ6LTz4rg+RteR0TdbvLbiAthlqnrmydQ6GyJMt94jIqmJP/dizOgivC+50j5F77ll+XT0xbiFFnwmAAdXa5XvJRzqEwFtbYSi4IM7h+azyRc3StUlklnZwVbQ77701gi4uGbBtEtg/gwIuuWVoJ/Ql6uDqLfY8Vf+scSGf7xoM5+A0A0qrQGyf0N5X6CXcw6qPAb3aD9GL5li97zQy91r5bcdBA6OgWxbLohUbk6fzHA+KBsJYJLi5nq1NoDl4rYr8yem47bNIHTQCenlywS2bPPI20HJHWtv+XzDTy5qSXbkTUW+xdnJrkE9QGss3xQD6Vz0Kf7bAReh+9IWnYlbSqrv/Z5Blw6Yb/z8Z9v3ENw8gNqqPyxVwaX/6RMFwZspFbHSFIpdwdr7lRp27btPj5zbd00TdC8eDm4I7Jt+3ptA4eKdPvDUe2MBDtZxy5H19EubCwPk+uw1Yzt7Qb7vJPFrny6Z9r/mQLftGThKr5nNGEtB5EFwVD1I17ZUtYUgOBsL8dQ0fksaOQWuzVK/tUBdiY9BbY6JpcM2wVwhWknYGQhYww/8dYZS79NtnzJcGdK1j5We324ymLwiaipOT2vopHzYlyJQD/0SRL+ly6bevCllY0M/hIqaJazHTjZTRfxwPQAateLjZveU+KBAenloB0u/zTrIHRVoZtGEm1tYZWnd1qzE83mjUqdyBu5OEyhZ06C7sSxpo6NHaZc4uaAM2Maizf3q6YaT//XaqRD4YcBKcgiRqAIOKqdyTR0iNUHgDjSTytTvE3NFN0cdr3xewzbrbSy4IKYkrhYy4twaz+qi3+j5UvlS9czprctGPSXn92s7g9Anu9JfzkYdgWktkLzQ0bfr38cS0raw8TbM1CXN2CMs0ShCm5DP/8kbh5Pl2LjCJ7iPGr3kr40FN83D+1N4rOqQe/385wyJ3Oo/XI79QZfYFXqPiEviwI2jQmaOhV5NzuUfN5D6cupyMPBJZYMOte49njoqpTXlZ6cS9CcKSqbKEx3UZIsaYJgRPPr0AfPeA4OSP8fbWpZIfs5Nxy5N7mJqEHvD+OKr9hEpcIW82eFNT/ovIzu7/HxbtF1ZSXvLKBIkxvIaAAJIWh1boy9iNT8+4bmfiuM=", + "layer_level": 3 + }, + { + "id": "beeabbca-9f86-4566-98b3-6bbce10c5df2", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "双因素认证", + "description": "two-factor-auth", + "prompt": "创建kami_backend双因素认证的详细文档。全面描述TOTP(基于时间的一次性密码)认证的实现机制,包括TOTP密钥生成、二维码展示、验证码验证流程。说明用户启用和禁用双因素认证的接口实现和安全考虑。解释MFA工具类的功能和集成方式,以及TOTP验证过程中的时间同步和容错处理。提供双因素认证的安全最佳实践和用户操作指南。", + "parent_id": "0e1b4f85-8e7d-463d-b8db-4ee330d61a7f", + "order": 1, + "progress_status": "completed", + "dependent_files": "internal/controller/sysUser/sysUser_v1_totp_set.go,internal/controller/sysUser/sysUser_v1_totp_image_get.go,internal/logic/sys_user/totp.go,utility/mfa/mfa.go", + "gmt_create": "2025-10-08T18:20:06+08:00", + "gmt_modified": "2025-10-08T18:59:05+08:00", + "raw_data": "WikiEncrypted:vY6Su0EQyZ4UawjR6GSslrl8TerMMRiC2vAH1D9LsXlgGlhSVt6X4lc0ZcGM0XjdwUyEG7Z65qRzodxrMLLnPnQdajFR5qdWB7OnHuwnK4nxF5WDbrYVWRgzofrWcIPnTm/3ITBkBoKIcdEEGsY9hB+Nof8DN9JZkRzJJfJbfma96VCDDGRtCeS1yEhWA8GYgQgJAkAspt3/dBRiFREKOruVTI+4YpbiGQbcefs2j2qQZauMp2PZDvYE2My0v9fpY6iZa+cNzD2Y4SVyFRAzChxQBfL4WdUAp3vuq1o+AtQRIF0VKf9Pn14H6j+fXSXXpl779AEYyMBSJ8FBrARnQLn0vcBAdZPICQlMYP05F+LBaYH+qdPxUexSkF5+BhnHbOUDhuKeUXx/1AQXxaDhBgQl0r91Kcat9Fo5GnKmMxkz3jTDyX0eZa0wDQearidX2HEfS6yLhNNlJ/g1IMZ9UyqjsQI/nJNuCMN5hyHZe8A18hef3KSAUcZSN1zxM7o/42dwzBZyszq7sYbh4fAWpCoNVlGI6dUwVMKFZYuwOdd7wY2zp85IqJyYL6zGVyZlcA870+SniyzCc8XjHAdESUR5tC7zcDoN9pdvmX+kShg6eLaB8ogC877RbyElNpqTigH8jBuscxW+ZNhKZ1nbSxhmrSp+R/HZUIja+E3bX4c+aS9+Lzch2Cy1whBO5sBZ4tBOdTG3Dj7fBgQElnp3R05nZGc+8bK2Gabr/E8aMr8Wtg3gUbbuWjXUWUoIpxNjLY0SwMVRmwq5eT+0a+spmaxaiibH0siDFrh1lE4OVfvAz7GHkz1XtBShCRIZJJwD5ul5Su6sEcVRjcKOfee9bAzW0W/wJa2NA3cttTl3YlsYgmjVGItM/7qifqDJmTEHX442NXZFo3tIy0BKzbzrTeizDbhg4K3i+2WlvsxFduyfdbBQffsvRuHuhMIyT3SSM2+HbWwtv0K97jq5GeEsIlw9BoT9VLKSB4PE0AXcQ7k+qRkYCi/bSGN4Vd1Oil53HvXe/oGlWyJsMKj+kfsbVDnC9v/h3G11nHF9ZnztCHwHIL7LI3T9vV3wuvZn3Ryn8e3I+a60Hw5X4LRr64YpJ3YaCy/9g2yyY+VoFh18p24=", + "layer_level": 3 + }, + { + "id": "3acdd907-8a5f-4d42-9ff1-61bd6e8cabee", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "权限验证机制", + "description": "permission-validation", + "prompt": "创建kami_backend权限验证机制的详细文档。深入阐述基于Casbin的权限验证中间件实现,包括请求拦截、用户身份识别和权限检查流程。详细说明RBAC模型配置文件的结构和策略规则定义,以及权限检查的执行过程和性能优化策略。解释权限缓存机制的实现,包括缓存更新策略和缓存失效处理。提供权限验证的调试方法和日志记录建议,以及在高并发场景下的性能调优方案。包含自定义权限验证逻辑的扩展方法和安全加固措施。", + "parent_id": "b5d20329-a5b6-4db0-8325-2b83ee9a2c52", + "order": 1, + "progress_status": "completed", + "dependent_files": "internal/middleware/auth.go,internal/logic/sys_auth/sysAuth.go,internal/service/sys_auth.go,internal/controller/sysUser/sysUser_v1_user_menus.go,resource/casbin/rbac_model.conf", + "gmt_create": "2025-10-08T18:20:07+08:00", + "gmt_modified": "2025-10-08T18:59:43+08:00", + "raw_data": "WikiEncrypted:arCjhUL6OOP3tq0tMlrtoFf/RGWFtEoRnhdJx6YcaSt2yvz7R2ny27ALK5reW+2v6HBYXkYVp42DaRmQlw6wk5BpsbZJASnN66QvlIxTtX1GJ9/oYF/PBg2wVhmXSI4E4863QHWaMcIRmAVuem99t+HgIXr/Sj/hAls5rJnzaFEWpGVJiEhXzsspWqm/Ek6IyM+UKLwHHfdJ6YRuB3pVTAMrOjKad8gYWgfp0Q60qez80Z6KPcdV9hSUQHs/NNICNd7XzK7msiKl8l6T0U0osNiFKzIa9RdcE+IEr2E3AdSUJIwTrPsXB/eEOjW4OFIDPmMUekW1Nm6Qd5IQrQwvurEGevh7WiWIB3+Zx+e/kwhAR2w1woh2BkKP7zGZYjslYlVBCipomiH0A0qQJP6riQbewrd7b0l8BG6a+/GETYz+XZvViXDCKr4I9iEPSQK9WeOiOlBQJzkvpQjTJzfotSvl6XgazWIuXiyZioPJ5rHqFg/X3PbNBt+N34h+qOmu/4aOJIm0eKJzMVtA3tzOTUCpcKpr7Y3bWvcEXLU/eCW+bKfgwF6I1I3xLJ+fcHhZWuxY8S7Qlk2bfrAyvYU0NhteTi/cOJN0xKilr0yVDDC3Xc+zff5nNN8qBTG8oDj6fNNkQPQcVFf96skiAvJthx/JEn4t0nzjhzRsBhWvJQOZX5dBCyPaqV0kQFlM6m+fQWUwxgAEPly0awuh1di07X4l+BpYEevW8tF2BEIxQIYcLvyuIQ9neH9yNG22mT5w7/ZrwbMxtbUQq2cL8+sYFU4fvda8QGA/C9OJnG6yakaSO0b1CjCyA//By2BZI37d+0laL8Q5epqq32Tqyzg4P/QAQSRdE9g9RZJLfHw4JS/9jCntJruBscq9BVeVifX+yCE/e/LDByJ/BFEJzenEin8wG+/cL1mWQWPHGDolqCnQMfnJQNj8TRaT0F06CPsLK7cbzqYdUxR62plYNbL62Thd1buqu/C7XyVJWdyY424+uPDQSbEo1EMnhSYIUWfCeDrxRNBPcdF3v8RY2Wzrpk+e7TI7dqWVD+23ONlthzIXaYs+njKH6PrggA859ITkjojfKe6AWL3ThoYfmJ9rtpTWBhxfqUVQqhpuIZXdv3jXUiiUnIfAyRYkpClCGrPsvz4AsHPnuuSpGouQzOfACbgdJvGOg6wG4lwH6uhmnxzyiZGOZ2aNpWaZlBTOnbjdHW/rIyB7MbFTqMMRl5qFhO3gZVnS+R+dEwn4dWKVL2VzZP5S/nYKG1o7moc8cbcG4f9rqsNmidFBTCPRzrm1SDdCxZ25mdVF4MMjMCRaq1wEJgRvF7uG1s3lK3uUCOep1q2IRAa79NfyJfLCk2BwQlee+NemPHNHAL50qhGbqt8=", + "layer_level": 3 + }, + { + "id": "f8a44d0b-b413-4926-a059-e1ac7b32cd45", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "Apple卡密充值处理", + "description": "api-card-info-apple-recharge", + "prompt": "创建Apple卡密充值处理API的详细文档。详细说明充值提交、回调处理、历史查询等端点的HTTP方法、URL模式、请求/响应模式和认证机制。重点描述iTunes充值回调机制的工作流程、数据验证和状态同步。提供实际使用示例,包括提交充值订单、处理Apple服务器回调、查询充值历史记录等场景。解释充值订单的状态机和生命周期,提供重复卡密处理策略和防刷单机制的实现细节。文档应包含错误处理策略、安全考虑和性能优化建议,特别关注高并发充值场景下的系统稳定性。", + "parent_id": "04d0a6d4-e8a9-4e8c-a8f2-bee9fd409e56", + "order": 1, + "progress_status": "completed", + "dependent_files": "api/card_info_apple/v1/order.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_submit.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_callback.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_history_list.go,internal/logic/card_apple_order/order.go,internal/logic/card_apple_order/callback.go,internal/model/entity/v_1_card_apple_recharge_info.go", + "gmt_create": "2025-10-08T18:20:13+08:00", + "gmt_modified": "2025-10-08T19:00:01+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBuQ8gXhRT0hzB3h0Nbh1xIc8vbGqXNlySwlsHA687otrBmRJVS6BPY7gJac8PZeXAsAUuL36qjwvumcmqfC0mO4vzJPpld0yLwP9nKUzByZeABboPKxsN72AHYuimc2vbj6BjRkMxey2MWjbd7zKWCmcBhGvX7aGJZgvRitjV0NbfinDarbhhJnXy2JG8fWQMPVL5MT6As93QDKtWRspAh7McoJm4482mM5530X0q2+/5pquJsvX5TVtIhdaZ9YQ0NVMUw9rRtpicvoJekjYlNOxWZuLmWwLUsj2FGo0lWqQQN0I2qCrLsueyHWEsTrUIE1tcNEGP1SesE9z2GVA2RQzh6Bk5fA+FHSE4yhsvMI/RDblLcl2APujp9eWneAvKuZYvDAULZ8W3jbtM43qVgX8X59wSHDnxfe/iLTGHxobpo2ZY3emYDBUtPdz4aw6Y6djarI1Tug04e0myHz/gBAUvWFuXuzSxrnnWVro4dXM9G93q7dgZjxDgBMUIlBt+0pK3FNWTKt8ypLZ7hcyOZ7qZXEk0SFm6DCxzSadEmnB1/cHvPxgeGky8QtSpttAVJ7QfzJHd1NWP+A85H8VwzZZ1buhNjamJ0FOSidOrszQ9x4j2xPOLXqYpOuF17xM9K3o+F4DxQ7ScG1u2vAmaGOzNgDIdKMVUtGuaVeyOTQmLTObX8XrV6lOE+uEWLHBALC9jMYu9m5mPN4M3HoJtJ4uz0Sth4gVJYSzdXMJgIxDQGRP4vcseqIBD5Vzx/i1Omho2/PT3t46P58JUF1ei3ACBNMgMueW4vpvsIken9QSyshW8MkozNRNpSHaGNgLsZ+Hv0mxz4HZkqm49Iw1BHpKC51pgk3Uks0BUjt6xsKnxDEbbAoh+IFl3Tx5SQfPLU9MdmfgAEUNVUydcdV4RBta8VKRmhQlEpd7u4L2YLOdC3pAz9XvQceBvxc6a9JpFCPbzl7invyujj7Z9Ujz5A4GcukIVtaMKSCBlt53l2LJHofYx2OHrdr/AP+7uZjkZFLBmelj2LX0G7dTMcLILju4QdmFQawqmYJ9HJO15WdO2uz9C/nyK1sN9LbjgMOgVc8eFmO/A4kTYd6D2bIF9TdfzKIhLRdHiiy6ZvlmAMzpcczRB4xN1Hq4Nyw0EAC9Nkf9Hi8AAfxGvABIiNBwWDyXahE9tGdXpB4eMKHZn/5Qt1Z6veg/JG96rpMs35nn4/qtuT5eXQRy+UZdcDC9qyWnyXNKH3N/DnxL2NDRHTcCUtBJhgopB4kQz0fzTh1bZWtylP46ilFo7HswGp1xQScG8DpABULiI3Q50m9CTfBvf42TmKO03cTOn7IxkCEQLmqyOKwNsI4THODt5J5H8ENehAgRz3GhacvV7tATmIbcNLo82ROYYQRADUqdnbB0YbPOZdglgpaoIBJhCym6cpUV3sjLeq+UFO39JT+JDUXVfVmOE8isa7tj+vb3PKn7c/utuSJLcyIGNQ/+Pm4r+w/KjNATozPcmc/buYl0Y4XiHU2xWY6Lptym/XT/1iO2Juge1mI/Il//TytNRDLz1Bs/yqMYiT860ERThWkBlRaRmIVNf5R63uU86tmNaSFV9JXW1nwzRwZJvwPk/lVFlmek7UPPp2dfj6DCmxrtoPqOWCLupaLjEzzAIUhB/fZSGqDo3n6gVa/6Q0kfRoLGGD4NLRVCFj9R6nA54crtmC/F", + "layer_level": 3 + }, + { + "id": "a255fcc8-4b84-415f-bd11-dc26fa62d0b9", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "京东卡密订单处理", + "description": "api-card-info-jd-order", + "prompt": "创建京东卡密订单处理API的详细文档。详细说明充值订单提交、订单状态回调、订单历史查询等接口的HTTP方法、URL模式、请求/响应模式和认证机制。重点描述订单提交流程,包括订单创建、支付处理、状态同步等环节。提供实际使用示例,如充值订单提交、订单状态同步、异常订单处理等场景。解释订单回调机制的实现方式,包括数据验证、状态更新和错误重试策略。文档应包含客户端实现指南、错误处理策略和性能优化建议,特别关注订单状态一致性保障机制。", + "parent_id": "288b9b5a-64ba-4e93-885d-499412ad90fc", + "order": 1, + "progress_status": "completed", + "dependent_files": "api/card_info_jd/v1/order.go,internal/controller/card_info_jd/card_info_jd_v1_submit.go,internal/controller/card_info_jd/card_info_jd_v1_order_callback.go,internal/logic/card_redeem_order/order.go,internal/logic/card_redeem_order/process.go,internal/model/entity/v_1_card_redeem_order_info.go,internal/model/entity/v_1_card_redeem_order_history.go", + "gmt_create": "2025-10-08T18:20:18+08:00", + "gmt_modified": "2025-10-08T19:00:03+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBnAun8ymWT50xr+zQMrdfh+JzQlOWLJm4o1ZqCukrC50DHCusAN/0zL1uDXc/vrzQH6s+pvprxcKT/XPElwdmz6dQ8Qjdb+NTvCbf0d60ZSVdNZn1cZCzjaTkxXDwkUwKfBZAaty3DDkJ97arJJM2XeNGKWOSpcw29gbMfkx2sBWTqtT5Jjotdmd2tVIDWkonvnJ1vA8RzTeDXpB7Mk8YjkTFg+waI+PfPGf/y98gHCNEO/fF1qpBN8vkz+MAs4xkbYJBl92K411F/oX54qyaDCDGt+RDEIYE0GV+kNJ/xmVu9eFvwp/Fkylf4S2X4rMKixtRzRwuyUgcBZjFx+scr0QzVdTWHxpb+4VdAlnyNe8YCn1R35zcM7apkH1DzgEwVPqpz/PUoFISxYyEEPM2ryaCwOAoNe/M8XeXHSIk68dlpJ15NNaMBOuFCVHgCCBweWGWF2Tw38NclAQKtEGfiuvQeetCLRff+NDEEc/XziANOey/NI4PnkQDjMLsDtS5y1pEFGlkzevaULxwOv4Pu62/IFuRRCES4+MjPas6eGbwTm2ahAq7MOwNvUxl1E+oYl9GyVYcqXH2UnD9dWQZYJnbiiIfXAoxhJf8vUQJFV8YpzF7LxPE0zUffUNeX2RjJwq6DOBlH8uBKEnbg/r7MDIJs2IM9MZnpMWulUa2tmbK4aWl2uUpJcyjK/gDjn17XoHysheQllRQalXEkwAbufDf0kDNFzx/K7aMwRd/nKjVOyaKQ2OjwfY/cC6NxPDCvOpuPeglR2C74aHUjHsDkAga817aSC/9ETfHC3IjWSHlcH1ap82au/gJs41NsbO20aGZ6+qarkWDKW0sdmEFqAlJdd0XsS8N1fzyj1unkjosiHLoaV8yzQnLx2oCMX9Yi0TqDAwxq0ZHWcGDgaIDXFb7SxrWW0brOCV3k3ubVAObIM7XAz+pwrcfX/TiXoTbLg6kKMCaw3d+LiAo/Fs1jqVB7L1bdNQsfBbrKPNQMFh/2DdScuVrAAf33hR1rL+DRfddlbIztmuxqyllhL/V1bwR7kD4EakY1sDLkM4aaohE7HaWaGENwI14Ar1oMcjYpBkl2r9iEJFH6e69N6O6Q2IxN2JVXHdDMxCOYytu3uwdmEDwuMVmsKYoLFaEptwJi/v9s88n7rr0LXZaIyYE+FU4/EgMXtVwudLi1aV7e3IU+JKatpMjbLhRpaNLkfNUs5zHCLJx96/VTjaZqogjbqyAdcyaXgw2UWbhpu8AhtS+hk52pXvCwMAUDRyshNvlH1TkgYVttNZN9u+pDO0IEF5kPTA6riGhmt5v0qMfrMETY8Jk0EE3q5mU25xqGe0Dm2M5HIgBFYCzcV0dvCJCZsgZ2dcM7lrHKB5u8wjUN3ceH7aAA7XhZMr6fmA0Cp62hAXM2JvAm7hjxO8XGH6VlduHCeUZODN3M0wVwjqI74BCmeMvxWFpqQBe/uvAnq+TWGM9fRJuqEpwgjZ5OXuBd2HDVRd7OoD44cEFCNykckz0OzFP4UhsTqZZno9bK1TM6Kz93JnP8ZqJtiNF7ArUFxAJQ62924u2nrUOev0NpOqoyUsp5lHb7zh3oiQiLmMy/0jj6/ZbtktpyeOFbHKcth/nPhAuZyD+oKr4m9443SH", + "layer_level": 3 + }, + { + "id": "c156f2b2-d455-46fd-8a01-d316c8e27336", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "天猫卡密订单处理", + "description": "api-card-info-tmall-order", + "prompt": "创建天猫卡密订单处理API的详细文档,涵盖订单提交、状态查询、历史记录等接口。详细说明订单创建、状态查询、历史获取等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括卡密订单提交、订单状态轮询、订单历史查询等场景。解释天猫卡密订单的特殊处理流程和状态机,提供错误处理策略和安全考虑。文档应包含客户端实现指南和性能优化建议,特别关注订单幂等性处理和状态同步机制。", + "parent_id": "c32a3e21-0961-4618-a256-ee1396eca8c2", + "order": 1, + "progress_status": "completed", + "dependent_files": "api/card_info_t_mall_game/v1/order.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_submit.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_query_order.go,internal/logic/card_t_mall_order/order.go", + "gmt_create": "2025-10-08T18:20:23+08:00", + "gmt_modified": "2025-10-08T19:00:59+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBpwp7PBBej0a/DwKAcLvKuicf6vl49763nJQ4T7oW1SwmmHr2nQhTOzIckcABWKSlUJgeuYKu9aMTw/ksiYmKpWoOVkcuA29AjNMeJLCYrxELEHX/RtDnCSymIrpWrpYBEVNL2JhzkgxKtjJv2P3PIQhoddo5srmVnjOAfj6WX8abAtLQIuib2C3CUsO3Jy0caMGiAhbuPgcILgCNYwKb2LoWo1aDROBNXLQiv0h/5rlxBDhiHp6yHTLcozUcyr+nmvqv0xlQJCRm7PF+qS74uQESL0xA70oGIsY7BGSPSPnggle7XjqUQU++v8gvqoIXLYynp8DzRWxUQBEYDmCgIWSWlWALARmKONm3zkvburdzD7ijliod8N1i6eyqo078f1TofTk5QYiq74NexQNcpLTc/SlKN3x9Sj/ZbYEady2ObHD++RpsV+H94r2br1FWPuZZrQUHafAz5nP/3TIwMEVQ04PQUGYbDbi67wBchEuqQLOBk0hyVb5rt/APRH2aMiGColxHHYv2QIQnfsBOJX1IoQLYg1FJkhFuL75dAg27UIigniKpZrgcL8tB6WU8XvTmX6VRxhoE7zzIsuRWp7tLHqnYVb4K0qfRltEj8Wk+Onp3ReryA9nsxefJwSxa8PpMiEQ4ZmPTda1SyM9MR9ylD3gLtk4rJAjKLmBfCcYoBNgByN6s4iUPY3UlojvhzNM/rvQpxaeuqwykhAj3UTYEiTlQP62+tf/XNvc/4xHAL3h29WOWsPwRYXqYDUrMUkm50C8Rsi0jPVYjKHN6b86sEvCaJtwhRF6MjWaML852XBJv4ccMrBtlKmYfTl0L5+cUZKiv+QNN9mNdBH98POVpcStwSEfUMv7A6w71JdToOKRutsTS/b0U581GtgzvMGd6cwWMRghrk0XbBF0xP85DoMxbzfiL9AFigDz3gkWtIUIHlZ/24+dJKVKSP109IGmzIpMNP6te2vMkbeyv/Oeocdu0hsq4muGsW1UD8vdU9P8UDgiNui04pNnKilDvotpgPvE2nyGzlRIX1fKmO/Jtl1L4YShMr3JuNv8kYu+1tLQ9xiJ9yU/OYalmvBsr20bW6MbKmkE1xSqDpo5D+N8O6/cN82D3AmrmUw3tRxadOxo0dPmrk7lpot813u6vAhi5zNSdK7keFZHGJrULsqvepmKT+ImO6D4Fc/zeNLd/Cx7gc9nU23VRea3HspNOj/is0O4OzIiShq/de4xRBFldanayA34KGEQppWM/6JK4jNiRYjk0o1yI+uoY70npaC/BfcVLxtNs1kyLs20fnJ3JdABUqlTffbNbD8YdkxTAk8jtaLHvJpRjY6q3uqCjf4Z2n7Z+bCt+46Fa+8TegVOr9ulqNoqGprIh59PGkpQ1XvZNSXgGyeplvS1Eo5+HBUosyFzDi6uA5NPwKaH56mBsj6IAdlArnOaLbzM7jPM", + "layer_level": 3 + }, + { + "id": "754a8225-3d82-4760-bc4f-280e0c19eb86", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "运行阶段详解", + "description": "dockerfile-runtime", + "prompt": "详细解析Dockerfile中的运行阶段,包括最终镜像的基础镜像选择(如alpine)、二进制文件复制、运行用户配置、端口暴露、工作目录设置等。说明如何实现最小化镜像,包括只包含运行时必需的文件和库。解释安全最佳实践,如使用非root用户运行应用、设置适当的文件权限、减少攻击面等。提供运行时性能优化建议,如资源限制配置、健康检查设置等。", + "parent_id": "0e3e4dfa-8842-4108-bd6d-6cde149b8707", + "order": 1, + "progress_status": "completed", + "dependent_files": "manifest/docker/Dockerfile", + "gmt_create": "2025-10-08T18:20:23+08:00", + "gmt_modified": "2025-10-08T19:01:19+08:00", + "raw_data": "WikiEncrypted:h7ADvj4WLJHyulzCl+z7kCJ8o09p2tGI8awkVmrWyL2InK1RBcwm2+B6aKZI15nZpgKrnqicGdFRDxe41FImLhKK2ZOgsu721pHM3qhtLp+lD9TBo3B8GW4CdNXlVCXttj52FagEQnWjR7Ok8z2qIK7CUp951G7NrzOiF4BuUSyA232hodj/ra0uTSWpWoKgWjEyiZU/YVzEwJHVhlsCBJ76yhX8TTK64mT7WFwWu7azM7pUoD0M1C7mjaxj7mPfUq2iRCCrYACWhaH+T5zrbk2Gbd4O+M4PEs/ywQdHgjvyZMuFF862ueWawUZiDA8Fy2QFwzQ6LHFk4GXX+Qb35PvW6Hl54tucEP1Rw/o7HTnmoONOXu3go6/dL9+WRA0/RoRyUC/+ak1iXB+N5gZ5zlcLfxPIuOf2i3ptDWkDCCS42di4p7JFiJNjzMaiVwpHefr7fPReZmLQJdjI/O0g5WjDycruA2NO/IYw+vJJR0GyaIcF9E8UCtUx95EB8WRcjwwIHGfTMhRbSi9QSHq6409vNdPU9D+wT6kgmYR5HNCkzdc+8Hvgog2HQlg6Rtb3nQ8imzt8pVXlGQl7T3uDyT0Q4JSqfxwO8Q5QtpBXFkwpNoW6W2APxPoaWn8DDEJB0KXRILGnl+hW9I1uCDVCYA59OdsXnYx9D0Osjl6ixMzT/j7EF/kWmwaya+Mazf+wHMHguXqY8Md7TgEFz2Plqd1BX89eRzcKjzNFywC7AXOw0o34TuNLexpxm5AH56vBRwxt4aEj9ZkU0N1kDkqkyxwAIw2uqGevmMFS6EVrx2anEMh7jlzhUxYY+J0hfbl4/FlW5BSppLyk9HZbImH6ooAeAoIZKrgpmBRSivNGx3vzCRjICr6SbMJV35BXkdzhW8NB9AJjRWevAS6q2Rofw2P/mi1byfyZErtt4gYypYM=", + "layer_level": 3 + }, + { + "id": "694e73a1-0845-4ebf-a2f6-990acde1e379", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "沃尔玛卡密订单处理", + "description": "api-card-info-walmart-order", + "prompt": "创建沃尔玛卡密订单处理API的详细文档,涵盖订单提交、回调处理、状态重置等接口。详细说明各端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括订单提交流程、第三方回调处理、订单状态异常恢复等场景。解释沃尔玛卡密订单特有的处理流程,包括订单状态机转换规则、回调验证机制和状态重置的安全限制。文档应包含客户端实现指南和性能优化建议,特别关注高并发订单提交的限流策略和回调接口的安全验证。", + "parent_id": "7171317b-83f6-4146-8818-b00d88d2b2b2", + "order": 1, + "progress_status": "completed", + "dependent_files": "api/card_info_walmart/v1/order.go,internal/controller/card_info_walmart/card_info_walmart_v1_submit.go,internal/controller/card_info_walmart/card_info_walmart_v1_order_callback.go,internal/controller/card_info_walmart/card_info_walmart_v1_order_status_reset.go,internal/logic/card_redeem_order/process.go,internal/logic/card_redeem_order/status.go", + "gmt_create": "2025-10-08T18:20:24+08:00", + "gmt_modified": "2025-10-08T19:01:13+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBl7AFS+0V9EBoppO4IsIlgmiZp2o9E+nyWzfq4lRGV5l/tcyFnfkBw9B2/mAMxcM35H6yqYgB3970FKC4oT7YPUYYXIhgNKAWkEUnOk1wxl1biDCVdJzQe2eGwQ9rvmvJLFNNIjY9hB0yA6l9NQkvO/eHqs8iynDUlTpqQxm8nwJfpqDwtjgx0bVz7s/AyOVlPg/pBbtDoClx6HKqM0Q74Rp6MKklmdTj3fVSjBx46aTV10dC8GUmk5SWn3kHKLi0ITX1W/1Yra+NNYNaX5g6HPkQxEXX0SsmtLSIBgPYrK0RDXHDvEeziKFi6k0k+zADnz7V7rd+HY90sOadfVfycJuU0b3CcwqHfT0BYGLUbeRt37Cyk4Af9+mwZqcPsx/yEs7VqF0r8rI68qZpTZFRmlgXwMH6qXci+7CzYs/B6yADK+tQ///GPG15XMO714UDfFgzCjnyreeQ4mwpFW7/IDYlrw2nFO49TfwnRoSmcDGNn2o3o1uAoxRa4HwxqtaXHhK2ke1SCZYjONhha7b94kF+u96x4V75vff6GUqdz2t19Qqsn3KHGGo5WNDt06J/ASkZxTxfBCidTP02xEHgsTMDeOrecgJHS/HHPkdLHQZx0wFJTvSSZXM7J2qKwUzJvmHpgp/84E7UQGffMrIpyp0hdt5CDbGdadVCkTJpRqNOKClurVmSH6LDgySUCmaPogMpXr4wdzo0tJRvPRe0wult0AoHd+4zBHVMO5jJ52YfsRZlO3ZxCeafrFPPOYqpLVvRhExaSR8ckTGL+9sYBPo4Gcjqj1Nng/Rg6dWx5O8pIguOgqRJEC1tDxx0ANIZ81A0lx+YJRLA96evM8m+RR7uh17E8l6fGyX94wr77DU4XSpms3GShy1wsXg4Bm3cjLCQJA2Xck4E1Na0j/Yjz3QOLLPeFz0OXqXF2KCNoGgLWOOQFGdrhtxPqncvCNTlsBxDZoMsbXAJ3KH8aJwx/v2PcDDpoQQjh8zInOUpA2lrwzBXM8P6hnE0yyjaRKjLQ97PhTXOq2gDXKHOdD9Ax5jQc6q/jkYb4W9klpQDXJrNaGCOJz3gf0S90niEy/epd1wfolAArqiCh78gA7FftUAcGgKKKPB/gipbw1OJbP+WvEdvKgtJPbu7bbZq2POT7CcjrMYeiRXOeSgBQs5kPkQt9ErYwHTl7weK4RHm3v2IIIso8wKEXnAWZP1J5RJDyiRL5CQWtUjc9+WAxt7P1y3NXLxZKh4a9S3341YEXjKKNrPaSp3pMBDNHtzYlsn3KvWPDXyF7i6fJkadXtc6aCmX/Fy5pMdua0TFCJLL1z38QkEns4+F1sucDGZ3Ir/917cVVys3GHyVdXaZX3EDm5FDaCbBMjqwn0F/IjYZ5MdojWwrbLrZS1HOm4g/Q8WOHCCv17831vexItO8+xhMnwxOlst49F4LQOl+Eod8VXxy85Wy2T5M8skMw4Sm4altwFeVskh3EiHQPkcB1ATyXv397DP3D2AUJCaGxmPJ/AyQ4sxk9FeIYXsKOW3zSlD4J1uE3TF2GQwbSlBPeuHd7ufO3jI2FvuBiWpgxxWhkRj/CEfSdwdP9R1Yo2JCOYbmPX0vomc5VI4DRgO5ZtOyHU=", + "layer_level": 3 + }, + { + "id": "350fc114-3308-4a56-87eb-6916d2c2e278", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "数据库配置", + "description": "docker_compose_database", + "prompt": "创建MySQL数据库服务的Docker Compose配置文档。深入分析docker-compose.yml中mysql服务的image版本选择、root密码、数据库名称、端口映射、数据卷持久化配置。说明数据库初始化脚本的执行机制,包括字符集和排序规则的设置。解释数据库与kami_backend应用服务之间的连接配置,以及如何通过环境变量传递数据库连接信息。提供数据库备份和恢复的Docker Compose集成方案,以及性能调优建议。", + "parent_id": "58118687-a7d8-4b0d-b788-36481cba182d", + "order": 1, + "progress_status": "completed", + "dependent_files": "manifest/docker/docker-compose.yml,manifest/config/config.yaml", + "gmt_create": "2025-10-08T18:20:37+08:00", + "gmt_modified": "2025-10-08T19:01:54+08:00", + "raw_data": "WikiEncrypted:h7ADvj4WLJHyulzCl+z7kDbH6uJdYYCT2pc08C2KEwMf5Wl8AN8aSXt7ibeyk8vJfbJakXE0fYaiRSmXHov8N6HxKWIlNdIrovG28EnpX4lr0UA6D4aN/Jr1Dw76RdHebznqhp3C8/j+LlS6Kd6rR9GwW/vWIiXiRsELkjk+KMU3pP9ndmdEuLGFQ4uAWPTqevVaLNpxh/cPBeylyu1hIyRorIghw3DHdQgQbx8D4bUmDCf2AZm+xRJxmakYugRwU1t9VT/TTelfjldfNZrjBMWWKaLWFBoAu1UP68mIeriPuYhVhUp7TbCwFH9dfq731iRttNcit6/wULnty89Wqv23LCCh1GxGYgvFscEAI/a5pQW+4FC8OrqRnF0t8aeh11XU4FyDHA4lavLB3g9FdMh3wSkPTIMs5QC6M9YNlOeROdjd4+yHrEWD4kGWMebzgOrb9CJfohrmExlyyxSmnM/6CXtjTFMZOXW6uQZ6E4ZjbWkMeSt9JXGg4DGAulvTRg2IXMjb0ajkRwH7fbt6YQ4P6kr3Xy2Suft9bjfNTEJu5bzOn8eMK4iFSzJ8j5DhciebwLZPNHwJs9DP/OEFq6vl9oWKWZjxP4qfAACJmVn7+CJmevXfcqc+A9D1GfOSNWASKo/EudAN2/T0FD3CzWHDq7qdkhjrS4m4SvzxPS4+VO1zBYO3gRH4lJez77fsMVpCt1CmlWlzv63AG6H1wsn+mrSZb3Yv/4OPHi4XNckxlkhlhqlmeJO1Vvy2EG2D0zs+/OWIt95lxuKksLver02gy6PAEFN3EK6LzE9qRcDjVsKmqtzEvC4ju6cnmqAA7DhP5+T6mhnh5R3zUuypkJ+sAcffjT+Ns5tkH662R8pXpyZmARzeDVsLkrtE+lRYtgxYF2m+vkRW2NNLesQXuGqKY+8v8N1+5LaxFvcwrAMTcby9wDcKaehfSrYCTgWhBymjwMrboclLoRFkQwYMOTxdH6hF73USe9gHMYlZjcxTczTkUeREQvL8EoYdzcOYTt50qUpwQwSkFBeMjs1DExIPTh3dPbh17g8fRGQ7gxewkAXgw0yhrisFa0KsCrpHswWBkuydMB0YUycjioFxUBvq0WQ8wlHkI/xYDSUUAsCWc6Ud7z2i0llFzpxl4o7G", + "layer_level": 3 + }, + { + "id": "aaf3daf4-4a28-4e81-8d88-4453361c2ac6", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "商户管理逻辑", + "description": "merchant-management-logic", + "prompt": "创建kami_backend商户管理业务逻辑的详细文档。详细说明商户配置管理、商户部署信息维护和商户样本管理的功能实现。阐述商户与卡密通道、支付方式的关联关系。解释商户配置的增删改查操作流程和权限控制机制。描述商户部署信息的同步策略和状态管理。提供商户管理API的使用示例和最佳实践。包括商户数据隔离策略和多租户支持的实现细节。", + "parent_id": "201b5004-c469-41f6-a407-c98892822b49", + "order": 2, + "progress_status": "completed", + "dependent_files": "internal/logic/merchant/,internal/logic/merchant_deploy_info/,internal/service/merchant.go,internal/service/merchant_deploy_info.go", + "gmt_create": "2025-10-08T18:18:19+08:00", + "gmt_modified": "2025-10-08T18:31:02+08:00", + "raw_data": "WikiEncrypted:3KjeyWIVLPDcIZ9hw3jQxyih1hcV0MJ4WqB9XePVqO5uSk87HoZVMGLCJS/ddafnUeIJQvZXh8CiqeZCsOzZ7WWApgQWliHRHf7qJtC8WdA8vY8+vPG1IchuNQxYCmY726D+QWa21h41Q3fVwQ/EbkZ5I5PeqL7fxALsHkjR7bBIGQOIdSoi28zn6pIjvYcJtnoUtCuvAIjXx4lggeR3EdyOcuTum8hNpHtQIHe94pnVGtGcsTmo4ctQw1pIrWvLoU7Mau/SNz9G1PPgih7WOyVW8Ikgmj0cg0hr8q+tzGSk1f0XuA90bYVJoHuVlzYOxgYv2gYUY3QapeKCICUn1agTLEmg7N5M7J5gxYS5Fcvn0PeeH4pP/EVszrTglRxS3bCNec9qgXJGdu2lNpJysa1pHLO02WqstgyamSPXp3McUvZ2iAukpl37D7J8xXX9ObEoHE6BqctgfhJilK5+D9CeM37NMY2xHIv1AvIz7eJgssb4j1tw46j2zytfPPuHjkbhVD9MAgReDPJi6nDlnYLy4TMisNA6AMWQvZ+QgSa8Vcs6rSg1wYsymZ3Jb+Sp0gRTQJ4w+LqN9lQSEZaZAfaN/UY0vagzo/nN9u8qsucFikMgtnrOn0chKR4cdJM5abvOonr7yFX9n2LVA+tLio3/LOOx+lbSMHV6s55bwhoqRLznUUg82dibsXpDMLfa9Z/VNObrrZDhQdrKtRBhhpSWhAiW+wgqMwVxIfoG663sQVvSSn7InNOHftnlVRJNL3PtprkW/ShZqbUoKbMa2CwBC6eYqRQ5GW/XRcObjsjdZ5iC+0/MsNFpt+WhMSWBxEiX+2WDT0VKjxoO4UxDct5AfSeG6orDnF5nYNe5AmUVRtwRzCSqriHvZI+6zcni/Zi9e4iZatOYfyn0dWqCNgh/tp1h1ijz4fjWm5JD0r2iDnLgsdK1vHpeCi8Vek/TmPythReG4WqRW3Hj0WxgJIBsDppKaoGu6DkbCLa20FyVOxMfxPi+X+bYZoHAuwWDw123uRUGPqUw2NsCDDuVLfnAyuaO/angWaDh+r+Boi1QdjLgELbognD8lGncTpHASDOQL0RrGx7E3zuXU05pvtTv/pJXtxz/S5StHSs8DCw=", + "layer_level": 1 + }, + { + "id": "8d18de48-44df-4825-825a-d6d8797a330b", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "卡密数据模型", + "description": "card-data-model", + "prompt": "创建kami_backend卡密数据模型的全面文档。详细说明v_1_card_apple_recharge_info等卡密相关实体的所有字段定义、数据类型和业务含义,包括卡号、密码、面值、状态等关键属性。解释主键id、唯一索引card_no的定义,以及与订单、账户等实体的外键关系。阐述卡密数据的验证规则和业务规则,如卡密格式校验、状态流转规则等。提供卡密数据表的模式图和示例数据。记录卡密数据的访问模式、缓存策略和性能考虑因素(如高频查询优化)。说明卡密数据生命周期、从生成到核销的完整流程、保留策略和归档规则。详细描述GoFrame ORM框架如何将卡密数据模型映射到Go结构体,以及DAO层如何实现卡密数据的批量操作和状态更新。", + "parent_id": "b8ba5dc4-8d15-4b61-86e8-07a963bd3fa8", + "order": 2, + "progress_status": "completed", + "dependent_files": "internal/model/entity/v_1_card_apple_recharge_info.go,internal/model/do/v_1_card_apple_recharge_info.go,internal/dao/v_1_card_apple_recharge_info.go,internal/model/card_apple_order.go,internal/model/entity/v_1_card_redeem_order_info.go,internal/model/entity/v_1_card_redeem_account_info.go", + "gmt_create": "2025-10-08T18:18:21+08:00", + "gmt_modified": "2025-10-08T18:31:25+08:00", + "raw_data": "WikiEncrypted:UimKryUcsn+gf9HzsspIt0TIkSnTFPxTB2lIcaUYUvTTahsE+f36dmyiYIpjkYfey8DDMQ+BmZ0SzhbP+eCmQhymH25gVp+YgCt1JureApmE5TkiTk2RbLINgqw81oYuaqjVHxuOFT/LJWr7ImO//6hBzRf6kT5rwrtfnbMhZpcgnzdnhvYrshMgYQLG7GmInjya61EcyoSK2g8xCVgq/es4rCHLSk26D0FRMNCM/aTu6Q3HkZhiSsFiNSpsDO93NxTXrDwiqxYZzO8fmCK2WscZ5yz+LCT63AalI2AORs17e5T1px/vEgCNthvL2qcPurZA6nR//CvFRQKkqrDs6Ny8uhNezNQ2muQ366rNdjUkb6Mck+pqB1BihHrYaLbdiNCSdtvmlkQ4o7Jc2YtEQeQp2SB0JqCpI0BapgVIrbHa/ap3At+XPgvjOrM0DkjaBYY1BbaZm/Yo2xaVSipEvZwsJ6Nu1gLeZ/94zGFYd9myhj7tfTOhyDumOITEIVuhb4x4EgjjZNwjrodAm+zNVjYMeJsZl3yDiAwhcqIaqSg0bOBUAb8EZsvjpy0LlWs3lLma6BG7nJl9Ua9mLk89NF4sMmVMwbH2tMv0d2vIYNMdFjiFO1lsXgCM+tDKPwKi27KIN51Yogw1HV+R2LF4uKhdROhEtgQuo0nk7oRAFQ/ebNcn9qFxFbKcmWvj5mPu1yScF0VycTjOs96BwIX5Fb5uEkg9bINW5wxy+Z4yti7erx7Z+GKy5BsrohlZVVudfWC+/EMAGFvoup0d4tXEIA+NliyxBBXa3wLVPX03VyF6ocX3U2xm6R61Jp1oRHUL1QxDFlFyCfDIGr6dQAynjLEmAQfOMqjMj5FZFK99lem8ReSO00U+Jo7neI4Ick0TPlzfxVyVe7Jf9C0GuMlv1tFTa1iygAfB7k0rMYMTqw9ocWd8ZHy1j4CS5wnCJeBfLF4ikXQUG7NY+PbAa/iljAsABhdK9C0DOu7VLa7TC0oAFQBVATzj+4t6DePtbstSXbWzULRqoNA7xplI8vGKRlpySO90g6eEOhvCL03mZCkgEtljL8+NaqrC1zHqsX5RGUr7ecb6V6aTT5wMW5IwgyFlVRgQA66J3hyiayQIUE4Swenep9r7rTady0HC8KKCT8wqYfp3L8WW0Uy8adLSVwKmcQTN98eGDNFyOdDhlPTMslwOldgJwy5XUPKPfzQQaf78PG4780necxhMz/RGNnE2VPyEFdT7FSZOesi+6wjJ0MufPgY2OAVOsadys1egKHEh7N10G37T+ZlBGQSZGclJpwfJjUeTLDwYUrNTPMUKeWYwKF/smI+L4/qIVAUoxOAicOh9NZ04H8RC6zUqnnZQF5sG+LPyx6JwBcpmp0wSmt9umA/Jo3bHMUQkFkjvcIOD2qAkf5+xSUY7rsIY2K4qDZyGPKd0iDHaUGN2XEOkz+gfUmIccB5pQ8y7GEPEoTxl123ZIYHUCPTNnv9IZJ06iJ0UTnw9eWBcuhSS0QPiR5XNrDWa8R7YdXOwSQ2put9iSem2kYb/LJhH1WmdyTUgwzr3A59bH3Yd9j8l3EbofRK/20pz3s8ULT3GxL/JdC0+xhY61uZLj0oas8y1IPHuCbJV6Prqz5MZuDXVYwcD18Duh1HM4sc33SddGmKVEGehJrh+T8l6XuRocVYVr9blG/xIvssdZrx2z0SBclryXwYwIK6NR4X6TAuXiKsldFwNTx91+s7yPlV17QOkWkBkmOrXrORn8puHWpLHabtqPY9IeRaxx05d6b2H6L9WbszqYQqWkFe/6FTXqIJ1o2BNzeNvrmGQA8hej3Nc5OcqsJWsSw+Pj2LOBNsd/1zxr/AipDuF14x05COYbFhqrlO4gth0CYzK+eU4Q/18Lnk=", + "layer_level": 1 + }, + { + "id": "079920b2-aa64-48aa-a92d-8decf24623b1", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "订单管理API", + "description": "api-order", + "prompt": "创建订单管理API的详细文档,涵盖订单创建、查询、历史记录和汇总统计等功能。详细说明每个端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括订单表单管理、订单日志、订单汇总等接口,提供实际使用示例、错误处理策略和安全考虑。解释订单状态机的实现细节,包括订单生命周期、状态转换规则和异常处理流程。提供客户端实现指南和性能优化建议,确保文档与代码库中的实际实现完全一致。", + "parent_id": "693df6d5-abb1-4b0e-b0ee-fa0cfcf10ec3", + "order": 2, + "progress_status": "completed", + "dependent_files": "api/order/,internal/controller/order/", + "gmt_create": "2025-10-08T18:18:22+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00", + "raw_data": "WikiEncrypted:C1x/54IbJKQH/5Vl+vgwI0JvoWx6zPUhTb4HRqSX2wblxy5DfJxLRPGgKRoPkdsCB6p2I5EUE7AQk+39L8I0VQviyQZaImfNEZOtggFwNploSYaTE7l4RjjXzGKiRU8Gj1Mq1SO9gaAVmB4P81rh5y5BtUVjn4cO7JrpGMdRZa8HyHzfD6e8LAA7s81daxDM8gFr/3d4RXXGj+Iiu7EZEJ+rYllow/hMLyPoAwsdrEhhOfP7khzPU1XtnlyynSx/ZQFaYJL+7OCAyGbz+VVHJIh8O2rEcBBJouwdhAb4O5VROn1tu6fgGN7gSqMA4AJ2g6yoqRraOTtGBR19Vmj4uqPhkmqlOy7GriXeI+V30vEPN7H65tR6D2MK6kdTLXiQHx+yLB5YmRpdyKNvSbBoZ0QlfS8KNfwA4xRuEUQ+QmM5aNlReXy1gl3jcyzEQe5/nVZoBuVKrf0Tuno5tcJE4PzNO7EaESiIAd+xHFBi9l/v3zYIoJuzwSaslB3h2BbTY6pLKN4AqTRKAq7HcMHvvdqhBOivNvSdoQnVmvoaRB8Ocv6zt3kjOws92P3iut51az5bZkHZ+pz2Ppr5whoAMP4w4hou1XeipwKey/AxMqw8iZc8ZTCsDFwfkiDobOn6n5BnncbIVfVmgb7Rii9oucNmFYag1K2veaUCqIM5MkPKOQkx3QpKBh/BIaRedPnJMMBcAhmekD4BNjHHLA+0RNpn1j1MGHmRjs9rageXcMrqcMLlY7+inQw1pZO4AC/QVnnxMEXpkwObn3fBPJtE6oNhFJP6MEJGW9BF1mdPmYxl+bqdVsBSuNjadkPokD4Zc8c/HH+cAPqLGdy8Sd2o3+Zz1Sqgc6CVEbE8izb4VlT5yrpnfLEmLTDtMdMdW9YTXAk4rBTdK+/OaNCwlbHqW8ug9CdXbBbJWnDjNRFPFvpk8+P3PbddLua7aWmwSy8vAmyL1C+Xe4NTR9Dk5iDEFEb7LF+TcjuhjT7kalnpzzzmKffJeNbX/H1Bn658W9P8wMDyKzxbFW0TLsP99Bd/vdfOxj3Q2gXLRQo3uTwzZlzrVAC5xicKaq17c1hhvt+KwIMQuY5RQnqaJmDoliEXtS/RcZdZTmIY36OuL7pjBpc=", + "layer_level": 1 + }, + { + "id": "8b232595-64ae-41b7-95c2-1ae6428857e3", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "数据安全", + "description": "data_security", + "prompt": "创建kami_backend数据安全机制的详细文档。深入解释数据加密和哈希处理的实现,包括AES ECB模式加密和MD5哈希算法的应用场景。描述敏感数据(如用户密码)的存储策略和保护机制。分析加密模块的API接口、使用方法和安全限制。说明数据完整性验证的实现方式和防篡改措施。提供加密配置的最佳实践,包括密钥管理、算法选择和性能考量。为开发者提供数据安全编码指南和潜在风险的防范措施。", + "parent_id": "ad94de09-b7fe-48cd-9a8a-bcfa78565c2a", + "order": 2, + "progress_status": "completed", + "dependent_files": "utility/verify/aes_ecb.go,utility/verify/md5.go,internal/model/do/v_1_sys_user.go,internal/dao/v_1_sys_user.go", + "gmt_create": "2025-10-08T18:18:35+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00", + "raw_data": "WikiEncrypted:Zb5TNaG1u/mRrgPr+sDyCughdwXy7VcKngnPrhXBk9mq+8vTqaApkxGNWz8AzfwPDXM3ewLU9f0u8hwciM00IIlZnIcBll6gl8LBLw7BrvO7VDkNrXtSqyXynWajifUYWfxTGnS36tIu4vil/lsQgR4NTt2CZbcOOlZNzJklHW9HzG00HlUwW61cPpRnyoG5q46hWubwOdhCsZT11eNLdbtwMzACYDb6Oym3NHyJxO5ic/6p2oxj45ZAFe0BORfKTTnDtzmLSLVFZ3m+sva00QGegW0HNuZAOb2NaNAq4RHjQczuV39bZ/WP71GHIiBwRt4t05OOjMfAmYX5/Lq55FG8nurl+AponX+vuO/tRQHuiftCVW1pslI7cRIAGaFhm4lzAdyBPQKmgPXsUQ1lZXO6cc4Dvfgmkmm0Yfw8t3Bm+7KVug6gjArizaio4ZU5Wp8UWc+Kl1IfExy3QIjPxr24KezusWbuRxdbSnfigcdz1mksH46rUG/vm2/+9/ho3f+JjrvFocW3CMcH3HUyGfRpdvQWJdnoXWWiqzIyis8pK28c8JR6hhZni+kh8KWr2xomIRXsfNWjSHku+FcT7LOZtr9uv984hom8xnOlkOKBgaifiHwYiW4PeCRv1/UTNggx0lDH/I2uBABfYGhY9M02KDvJQ5vTKUuSs9U2R0tcp59s5BLL2PwVYbub5sYAZyBMjHcXTdbgrA5Al9qKpz8KIBmaFRTdWAUZq0La3fXsrwgVfcdZG9VFaiBF7CNGigiuT5nFFr7b3KDEr/PecHM7bN3QZpZz4WaHeuz5kddJNmvn7TrAZgP16Qgz9Wls50CTic3p5I5NFHIfLMGuxnyCQNh7/CXGujC/fNWvo6+CB8MUn5UXbd0KGMPLOF5Jfs+D5E+PNQO6LhHqtBNdQSX9Cw4HowKiws4vxN4fMwE5E8Ii1qZH/Vn58z7OKshSbnSMGhmbbX1NTUnnS234uZqi8rZ1kzzoSf4XSRSsxQpwhNN3suvIP6TzSS7fzkBUZKJktVDjqqu5kMBo8LOcNp0ecHrco7IlRgj4cz+tlbBp24/gP0NBl/cqVY1oIAw9LtlWOpi1P59XVnrCZjJAqetTfEKw303o+T/ceC3YniYtqloJFHJOswLmwkemAdMk", + "layer_level": 1 + }, + { + "id": "f5f182bf-a48c-41f1-86f7-12c882b3775a", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "权限系统集成", + "description": "permission-integration", + "prompt": "创建kami_backend权限系统集成的详细文档。重点说明基于Casbin的RBAC(基于角色的访问控制)模型的实现和配置。详细解释rbac_model.conf文件的结构和语法规则,包括[request_definition]、[policy_definition]、[role_definition]、[policy_effect]和[matchers]各部分的作用。提供实际示例,展示如何定义用户、角色、权限规则和资源访问策略。文档应包含权限验证的实现机制,如何在API请求中进行权限检查,以及动态更新权限策略的方法。解释权限系统的技术决策,如为何选择Casbin而非其他权限框架、性能优化策略和安全性考虑。提供权限配置常见问题的故障排除指南,如权限不生效、角色继承错误、策略冲突等问题的解决方案。", + "parent_id": "050aabef-4c8c-4892-849c-74a2e3feb22b", + "order": 2, + "progress_status": "completed", + "dependent_files": "resource/casbin/rbac_model.conf,internal/controller/sys_auth_rule.go,internal/logic/sys_casbin/sysCasbin.go,internal/model/sys_auth_rule.go", + "gmt_create": "2025-10-08T18:18:35+08:00", + "gmt_modified": "2025-10-08T18:32:32+08:00", + "raw_data": "WikiEncrypted:arCjhUL6OOP3tq0tMlrtoOi+YxZ4wb4fbUs7AyKQkZTfv8mRogDaYSFnyXY1kIyaElUfcfdUV9J0wBG/P2Ehs2OyadwRiht4khd2EsVa63C+MnyAVI7YW8jvLO3v3yE+fhVnyBpR/iyNON5eMBSephXFulXENFk0jgIADmhaOBPZXWUgx1LwKHP+payrBVQL/u4CBFeLuzPWSLwZ99ChGf1b26H4avhLUUrXklEWuQ/I2MlcxALqQ91VYa6i9PgzA5A3yllSOB33AlMEKosbjHeb8t+mG88biL6xtusYRFz8mc5QUUUEVyhQxwXC6Ov+EWJPswoPe/iMp7ktb35Ao8TLjxFECClVRorfUdJKEjsSdmeM5Xz67w75bH3C3vjmEZMjy5yw0iFMm0IuU3CTKUBFsK8BM2CpFSHlP1w3EeJUQghY0ta0cfQNKZmcmR2Uj8+P0TAsPwPs7IXfQOMOXsyc0wtZCTxafeOzFt1DPAud7N2bMpcOMhuG470bKCRlPP9YeA/FYdynNY3VZTp57hwKVE8PIrL0W0x/uSrF3o2FHDAyygDIVoupDbwpwZlFV+niyGek3RIsP9zJ1wDhxjS1fmBugWR5hCi43OrrSzhaTBHOadF/oIcf9W6aqfEx0obSFNLQ06bc5FGQO7F218i211bWCsi+WAl8wSxxc63RT3NmBTYT/DFpBVuhkHKB3OTf/bxn65be8H+uLtdOXZNMg1nsFVhwqBH/g6vYy/gCOx7D2bDciAe+xDImRkryiSWKnnMzKOsTNUL04LYwrYXSxSwVUeZdI9dHH9wNFZD7o/Is1PovEvaqpGaI0xfloNr7lhJePlu9msKkv6KJiw0tWIOWg/2LojMv2lXx6wWsDH+0bLFmHV23uw8OxnawdO1lPX6vsM5FIbqUd8tjtowZOjYi37Ol14RMicd1oxm8I0CNAae0Ipg7vtEK4D+hvMoVIVG5oTjS6GCxBomrPUa8YhNrc2FqFd/65QbxOKgYMEtpawK/rrJSRL9adxUHecNKWUKeiAELdITDeCvgZqfybBlLmdkv/m3hOEn/FLhJiZfABYaGKBYk2QdoGyPuN2WvUyv0NA7eYCjrjbw8RCdRyohv7lltFfQFe6SZFgiKLRAMD1i7RAsxQXqLpfrHjB3O3kbOEkS8O4y9ZqmUoDv7CRCiYwhZ70PdX0vUJDpmEpB4aQpevmh5qdm1Gqb2ybxvpCPuepoQnEilBjtLk3TV39FTFXVDsWx74f4SKvJ5nT0AxuOgyoS25l5HYPK27KyUrIv+xPp8ok7VwIcfmcNOPhrIJ1G28YycZgC4ybvDYW+Biw5qw20wRekJt/7fB0k+ic1k0kyaoAXk/nEUkcSoPCwzTh74LG63uAOEH3oe5n6wl7gSJznpIA6R/wmJJQAYxfrD/nCG3vEuHWvkspZzZdd6fTjp74FMStyZWdn5LrgN+UrrgaGiP4QTJjRwXfITXpEofiNhJBEHOcLoF1GfWSz6Ri4azdyiw8pZRhddUfTXWIctgjHwWiOEUdEDkWUBMOv9a/fBAWjO81e+51yRKQ1w5mpiZmsRVgZz2J2O9V22PtYzw8uughfSOTzm", + "layer_level": 1 + }, + { + "id": "2b16f9fb-3e48-4abf-a52c-5fcaeb1467f5", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "自动化部署", + "description": "automation", + "prompt": "创建kami_backend自动化部署的详细文档。全面解析Makefile中的各个目标(target),包括build、run、deploy等命令的实现逻辑和使用方法。分析install-one.sh和install-simple.sh等自动化安装脚本的工作流程和参数配置。解释wait-for-it.sh脚本在服务依赖等待中的作用机制。提供基于这些自动化工具的CI/CD集成方案。包含自定义自动化脚本的开发指南和最佳实践。", + "parent_id": "519aff94-32db-4783-85f1-071d6c314ff3", + "order": 2, + "progress_status": "completed", + "dependent_files": "Makefile,manifest/docker/install-one.sh,manifest/docker/install-simple.sh,manifest/docker/wait-for-it.sh", + "gmt_create": "2025-10-08T18:18:36+08:00", + "gmt_modified": "2025-10-08T18:32:49+08:00", + "raw_data": "WikiEncrypted:ZCORAne7l5wn5JMRd1ey/o7bkWmPStXjff5imJQAXqphxnBeBXJmPZwisJmizM8eIz7HNdoMBW49/rBkf4pKo2wfKYjANvYUoy1RHJoMcvkl+T7a9UY2qj91JzD+P6W/sfk59RExJfaIeqfZgZ+rQMaLxSQtUuIhyt4mzgGsQPVmLF4IdAyCS/kkIRC78yEzoqoLgwDjrOVxaFsGFSf7guGOTNbeW5qj3HRXzfsOrMBXdHOWUcUTrzZIRl++C3/w0f90Zohr5H3LUM3FkB6I1o36YQji3P6+2m0Y5QYDHgr03cgDVX80/bDeIc+fOZbtm7bWqYWwx5pWiteMMRJS3nQ76LLrfGALYkb1EN1a4sdf6CUQm2zUztLdc85KE6aIdVaq8EbJKv/QBpMkoYe1JR4uu1eA64eotBXkHU4VYwx0SXapkbV8jtT3HkMgMIBXEAT6arg1WSQtm5yHtud9Cs6JE92XEUSUsoLc008qqHqjMXXiClyFKZ5osDVgZw1/8+yK/1z2t7P+lDkkFV3hBFiUhEKvArFdRSqb7/w9pEM6ukPkJZrHTibtKpPd+CSJTzMX00Eh6xjcx4IW0zwNi1M+k09Q2cuwejMkxbMgrBhBMYxxRpSIipS/RfkMVO+6EmpZiYf2i0nDGahSxa+Defz2Xne9m8Ir2tHn5IFauNwMbCjxCoC8PF2pA8yaT74wSHjUpnWPmfm8rxH26mqJoPJyabanEvaSTF6cvil/bczeSjH1c5Jf8K2sPWSbFzE0vwdsPB16RmufM24QhLouxabstQEFXIue4VE4KLXD6V5+ygIL+g06agNyVu9KE/gBs1ynlyxZjKdS0rnNNSF00GwDi8BJjAnNabziMhbftQLSGwEgxkeXLJm/JkjLhVtfSKMaCgryekc9mhDaBaiqRRGgWlsbBmBTldJc3zN0eIzM8jVM4aXYpod/X2oguQnp8nynv37iVKuNG7KgEPWDSAM9Dy3Z9bEHFf0BPHdIbCGl7H6D/i76r097eaXCZFmJah1GoZ/NTkW+WZqQlV5PX1Ot7FhP7m0ag5WO5+SqeHc=", + "layer_level": 1 + }, + { + "id": "8137c301-f13b-4054-992f-c556767d7c45", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "天猫卡密管理逻辑", + "description": "tmall-card-logic", + "prompt": "创建天猫卡密管理业务逻辑的详细文档。深入阐述天猫卡密账户的创建、更新、删除和状态管理流程,包括账户授权、工作空间管理、店铺订单管理。详细说明天猫卡密订单逻辑,涵盖订单提交、AGISO回调处理、订单状态同步、日常汇总等核心功能。解释天猫卡密账户与订单系统、支付系统的集成模式。提供具体的代码示例,展示关键业务方法如账户授权、订单处理的实现细节。记录天猫卡密管理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案。", + "parent_id": "eaa525f4-7640-4d4e-84ae-7624f8b5c790", + "order": 2, + "progress_status": "completed", + "dependent_files": "internal/logic/card_t_mall_account/,internal/logic/card_t_mall_order/,internal/service/card_t_mall_account.go,internal/service/card_t_mall_order.go,internal/controller/card_info_t_mall_game/", + "gmt_create": "2025-10-08T18:18:47+08:00", + "gmt_modified": "2025-10-08T18:49:06+08:00", + "raw_data": "WikiEncrypted:pmN7H1JF4+HQF9n9w8KwRYQ6tdackApaOqk+2UiPey5Uympesdb3pMU/7s+Qp6tO6oPzMXaUwJg4minT6Xnk6sePRl2JWkJUs+0eVIxY0BG9pcqjbf7cWuLX8od0+v34lp0Zxn9XDzSh8RTI15SkYOSghIua2OYZxaRm/Mu4hX5l6kQTTVTfSSKyPKClM4KvavuPVwUtPmj3jmzkp6+OxGfvyOHHxi45tlQ7sJSA+9hPXVBJv0Bs5vgyXxnNgX79q6xkLTpWKwHh3G9HbmAbT+aM/YMoDKTlpBQatIoveO7Fj4b5lrfF4mq//5hqz7inZBGo9qXDxTG+bHBvV8Gy2QtMZlsNHM+P93RPmaRnLfbs1sgKR/Owrqd3c5hAfU3Gdn/V6HhVnIBe+PUsSaBZO3dOQyqHd0vGnaweozy2yNfkf+KTky4lg0pCrlrz2Dxn+qqOiiLRPGGSHcfUtctCi1L3cd9njdgA45LEi25H+KhWw9n8da4OvHAQxlH5HQKjIUnRZshILDmupCmj4ugHgAqew99Lswzv5acdEtL73iUh7AUvGNXLMbpj5SCo8meYSA9PblqFZ6h1nexkoA4LLO5BlZpHP8aKjFkIa50INM7W7ULapiqxAsnV/qkR29Z5Nuc/zpa5WAaDESeKwbZzWoPc3wJ5wPlFwvjfSehVeLAMwxVGy9W6uMXoL73LOUb3kYjjrycjhDxwDA70gdBAZ3qJvU955H6z9f0/QWRrs7ihikQdHyQNj6ForyX7LpUYS7yieOoPNSNtECIWQZFyeLEQ6ZgP05r1cO9gPDVxR+LyuNGoCdtBTlo/MQScFbyuCjrRoDENX2MXyU5vC/+VhOM1PE5EJMjt75Sd4AEqDgM9w092/WXwdzvR01LAHBXQvPqQrK/E2cj6fXzxOATYgKkQvtYGT4WXSVPfGE37oaMmCQpARSRiPViVe308ZV9avQPCm4WX+RmrXITc9ABnvpRAXtlCyHKEvVENtFfEdJl7we04YVsFP2xnZPc0ewH5p5qkB0247fnAXiYzp3Uakf5FfnJYrJ0192eDLmFxY7WxmYlw3s3X3ZcRFSN7NQOKLEf5cTZpBGiZ74vcH/IAJxjsbqiYQ/Bgrflft4ARYAFHJxbe1XOiGSbManH1eo3ti1puLFxSJ+JtNQEgyR+uwTdaEplerXLbkft/HM6BbUCi/D5PQjeuF8V+PjvoyM1WmRpHAPwArIQl7v0r4P+DI1ncJAo55u7CpPXQgG6AprMnaT8eF18vn9QqQpM4AeUEZAMA3iFMnvnehJD1EvkSdEGUTtiiRIzyM43FK65ZZ2R6Q2hDVoi9Awv79id1D9RtBYT/gthzgG8N89GhEVJif8iojiJclglG7j7zh3AxyOr+uBr+itr5ferH2t9LJgzDq8XfBkqScWuzotO2AfXPAA6aXLT1n2qvWNrgQEAbTokiHNZ3FV2UiG0aclDHvK3RA3uTnWnM+Cn/z6kngnpasYO/Be3ah+v1QIV/ucnyEuzCe/1jnHjL9+fOFe59HMdN", + "layer_level": 2 + }, + { + "id": "e130f1c6-f0c7-4f2b-8467-d00341dffec6", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "设备ID限制机制", + "description": "device-id-restriction", + "prompt": "创建kami_backend设备ID限制机制的详细文档。深入阐述基于设备标识的访问控制实现原理,包括设备ID记录的采集、存储和匹配机制。详细说明设备限制规则的配置方法、查询接口和生效流程。解释设备ID的生成策略、隐私保护措施以及如何防止设备伪装。提供设备ID限制的最佳实践和典型应用场景,如防止多开、设备级访问控制等。包含设备ID限制与用户认证系统的集成方式。", + "parent_id": "93bada60-b20a-4977-b82c-eca224ca34f6", + "order": 2, + "progress_status": "completed", + "dependent_files": "internal/logic/restriction/device_id_record.go,internal/controller/restriction/restriction_v1_user_info_collection.go,internal/consts/restriction.go", + "gmt_create": "2025-10-08T18:18:52+08:00", + "gmt_modified": "2025-10-08T18:48:47+08:00", + "raw_data": "WikiEncrypted:W4RZ6LTz4rg+RteR0TdbvN6YBAqoBx6vmhNXnYNUbJ7vAEccQfsRXUvrcsUd5Ica1hLwUQWXp/Pckc1X4JzDNoA66D2onB6YIWzByv/B4nSRfbjaSB7sM5WkmHD/fJHdteFTnfZ1b2QAGESqdRvnKyy28PscM42NmgyL9aY8cmYTSe4nohnfq0HoW7tpvppy3BF4ebSEgq5qwXh3mJGqFINPrVHftbrjrPgAd0+c2XTCEyqkld8j5v+0XPQ0dOQ4Mb7yJQvZEAY52bW8BuCR/kWAdOxtP1hJrMmyy2WU97hyLm3Irg5YI85Qy/lDkTxotVPWosAoA9yaV8tIyv8EaMg335NRDnF2rtrX5P446NAbwzZCcmjCJ/t1UYVtCQDt+CrDK105I29wT9bhylEcqnM0u+H+STpsOG6tTb09D+JiGAlDrhGWXzJiPr5ZE8qt0i5NiuCynzQW5r9lC2BGBCQ8mwKUsVXSA4k5B0fVgJtsxAJJ3ocg30aelFEq1ZlXlC7E5tufuh0PNI0CfXakfDay8V6UAGZwZGyKo8Bz8p+zP0qoUCIr120fndCuiZpmbCJagp1x1Pv02SPxoPv8XC3F36isbCU03ygDPhF52wuPtfA8n9l7jvTOpLF2giltwoZLWYD1MPEKjXIZpaAXtrDMxLCr20ycqoM9jG5agOvfVU5lgaPDXpm7p3+xt4XfPj48zWHh2pn4IyeYeYN5HcDzyjOBhf7mJDG+Mn4fh5w2r8fwvtZfEzKA2PXfAIRFmD1e38y1ArMbS5+bmG0cuh5xaFsogjA6T8HLopwiAqfDct8ZyBw/lOUacbWqasTEWh4ACx85OfTJD1hBDJkfN/14QrqHojfgE1azQMRgUnNX3DM8ww2IMfRybwOrwq6+y4wvgQNmKwq8aSsNHiUePPtyTSS/jArDa4aGK+AiOpNYmGSHmH4C+95/Tn4Rrwjl6xt7o69UNsNEUlQBD6ESNR5ckzlMhfbKzf+GNWd8R6PmCfy5btoM93AAP/c+l1QJR3Lda5DNt8PqRC8Z//dIYxhdR7BxxXnXVWnKPJ4nqJoOn1D5j0O6c2PBae44z3wu1c3UhOTGiAatqctKYk1ivn5TU0tOWY6i4YIbCN9xe/klx+RTqPdqjCS2ZFepErm5ECBfxEP4jMo2I+5veVsOVQCJzd7OkOehSPJ7clSquxotKDzc+PDyIqnIM02mLj9J93ZjgPjzTffw6zaHsCSVbVEaqB30+YiJ9Huj23cERqg=", + "layer_level": 2 + }, + { + "id": "15255e1e-df14-473a-8e50-b20da5e10eec", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "天猫订单处理", + "description": "tmall-order-processing", + "prompt": "创建天猫卡密订单处理的详细文档。深入解析天猫游戏卡密订单的创建、店铺订单处理、工作区管理、回调处理和状态变更流程。详细说明订单与天猫店铺的关联机制、订单同步逻辑以及Agiso回调处理。阐述订单状态机的转换规则和订单处理中的事务管理策略。解释订单工作区的概念和使用场景。提供订单处理性能优化建议和常见问题解决方案,包括订单同步延迟、回调验证失败等场景。", + "parent_id": "5ffd09f4-939b-4b8b-a254-494937471526", + "order": 2, + "progress_status": "completed", + "dependent_files": "internal/logic/card_t_mall_order/callback.go,internal/logic/card_t_mall_order/order.go,internal/logic/card_t_mall_order/shop.go,internal/logic/card_t_mall_order/workspace.go,internal/service/card_t_mall_order.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_submit.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_query_order.go", + "gmt_create": "2025-10-08T18:18:55+08:00", + "gmt_modified": "2025-10-08T18:49:02+08:00", + "raw_data": "WikiEncrypted:pmN7H1JF4+HQF9n9w8KwRa3WSApkXAR5Fc40tYehasW3oRRWjQgzTzde7LY3UZtxxDt9YCxNFsXtULH5ojzuVd9vnuTQsUsGlwPeby53UoJRaMP+2TVlBnpawHqqLyQZmsIaCEBa0KDS6Vqvn+W5/fkhVXVX9ZWv35eZ2nDZVxRX9N06OvWXNmnlgFwDtZrtnykRQYxEsdH87S0WS6nkRGy88H5gvafKUFjtLpWMOF6taMNbNenHgJfYss3RB7DnTw5MIT6wHuS+ZaU4JjMkQrG+5wFdEAdZUD1PSue0jzfaEh15NxpLX1QVkytkWFWRjQT1rS2FovSJu01DE0SX11tKcURB5NvNm4ZGvmOg7fehl8mrIhDcaoIXabkCxF4QnAodr8aJRQgsU3+D0pGKgDs2bNBK0cfAIZkrodMbBqU6PFOGHE50ld4+ikmQr5KmGbQHsuKVUOtfUwt9mk8rJB7IhJyZYhAtWHZ8xk3SRyTzG1S1h8bNcK8J3Utm1HQthqzBOvkipvWIkP4YeVA708Di7n0XMyI7DG6OXY1KkL//Af6gFaLG4/m57mx9WpCFPnRMEKsYbLQ3VeI0H+Elm6Pc4XG58wC+p+Vl3AwSZNm9XmPvgXDd9/I6nt97XKMk4QrQrguiSDFxawF1kWGkf+9Fq110k31gZVuJuJH1LBg3qac1ymngVP1P3Jb92QJz2KbUMgJFFn4CetxV8jxUPO5HHW3G+VhTynwYKx4otPsZQMUlQ6ZengsKFQp0zjnBWF6/+P/WtjkyD655aF4YYaKYBKZQayVIzFTsElEckA9VMM4P0g1dJaMUNfTzM8uw9h+ovl7gYigVnxgmEsrppjOG0GOuWraQJ89qKWGj4jWP7th5aHRtjLYU/lwo2yeGpIlhtQLy4Az7RisMFacI08umgWXM/NSZYjkd9kbUtA43t/ZiUHSUgCIPQ7x2w5ECTQHShtOWKhjBtifMTmudS1EvQHRfw/dHf+892fVxOWAXMlZnneciAcEEEWVmHC/0j96byVrqztM/MjygFKB8+ziEAMTgCGG7GH3GyoLYY0qeB0Q61VzaRPJbzbFPP0wemK3vPaiISKryQx6THbGQ+mFRq/yuUZ6ikHx80C5rj75zXIUOVDjzljDedQmmMucRlgPFyFIfyqFfLk2eD+Leo4z0T7bwSAWOE6jMe5XxvbFFpjQL1MXj4G2nA8WOBMNsjkXE6ExDG62CSDBmNTkPlLSUKYhIbDAl5+Kp42/e5auXARWcD1XZELs43fbGxn2FREszMT9n+Cx9UxEAiP5FdJ+P2Amoaa055YfhtdY7oTThxWYbqE4e1zwx/WQeSXEiNyUS+giHH4RCxyNGDb8BMRvEmjCTBJCBYsZ17AcitHKWsDmiB2ryVyOXYQBw0zda8RiMtG1c9VPyOHjJWS4CPUSSoETLnSzrMmeeB4o0q00xAxuwr2NtlrjOuoYTYhTvLTHdXahJS1yWobZNrOzFC+PoibaT0m55GndT/ry9xDczzuws8NwZZywyAGrouKanzoFiGbLPdBXSt8KGcS+/X10E+U981sSx867gYDQ+foo=", + "layer_level": 2 + }, + { + "id": "ed66dce5-4de8-4993-bc89-a466abb74f43", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "租户管理API", + "description": "api-auth-tenant", + "prompt": "创建租户管理API的详细文档,涵盖租户的增删改查操作。详细说明创建租户、更新租户、删除租户和获取租户列表等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括租户配置、租户状态管理和租户权限设置。解释租户隔离机制在多租户架构中的实现方式,以及如何通过租户管理实现不同客户或组织的资源隔离。文档应包含错误处理策略、安全考虑和性能优化建议,确保与代码库中的实际实现完全一致。", + "parent_id": "681cb8e8-add7-42cb-8297-72df3436bc74", + "order": 2, + "progress_status": "completed", + "dependent_files": "api/authority/v1/tenant.go,internal/controller/authority/authority_v1_tenant_create.go,internal/controller/authority/authority_v1_tenant_update.go,internal/controller/authority/authority_v1_tenant_delete.go,internal/controller/authority/authority_v1_tenant_list.go", + "gmt_create": "2025-10-08T18:19:07+08:00", + "gmt_modified": "2025-10-08T18:49:45+08:00", + "raw_data": "WikiEncrypted:7ZB9yjzZwc/JkOb5fG5L68aHWPaH9F5LGpC42+E2cka9EswWMfNQznGCsOCwDohduHxVlwwNiPebu27Gv+tzlD2DJk2+e2CXbX4dfJxKGN6iUbX3rXiwgFJEI3tC+P9BDa6tkVW6SDvFBRodPlpM5SfO9sa2tIGmYdoiIQaCCSyrzuMZ3cVpNcUA30mpGuwh0hcBAyezdqNf+XF6K5W2OBNNssVE0ZWipueAut2AP3gQ5pargmXYfZIrw7bxHPayUU/63u9oOqj164zIv9snb3CtKhR+5XTNVjKB3XKD3sYGBWt0Fsf/RNB0iKQHCOuMcvKFNJ8GMg1QXel8Weay2egAt0rFmmvy3H5Xh4AwjRI8Qpbj/voCcmRv+oQiMvc7z9aUOWlU0TEQooi6X7kClFfXBaSD8/rzGXK7nDDrt244bvSAV2nA3DMYPTsSpFk3VFK4KmyQBwrsAkK0rv14GdrZf0wbcT/4gpqfXdUI/1p2BP+qG4Ozb981mOeaRNKSglZAqVqtHjrwvbUEgNRm2OkKKyjzzi1Zy3YacNPZp7w2FDDvGtnMzGaDCVep6iGIIzGbvuJl4hDkp26j2XQgzDbGnoywuxfaKD5CMEx2jRS94b5pT0RJXPBKbKcfRJR23SWk95iuXVyL0Aa0rTjWOA2pqtWbna/sep84jJcYr+0HUsLErLraLR6XakY07pPga+qdyVRckjsyT20Bp7lFmDQ9AF2ptKF3ZIj6powFEPpm2RDmh2PRoUtOG2katpZspF7kypixlrNTRVu+xUQ8KbaI094k0j9A47l2ejku9ih7Tr/F71Ro2HvQGYR3WWE+Q4jjoin2j02mkT4ekHmA8iQ4JTt4G2ovfm6FnJiVQ3xpdayjZm74nE/7Vp36luCg0ufDKLWrfzn16uX8iNbTDcUYbLSxKcPIYCZnq8/xV3msRVkPB8Wx98Ex/uOBqkcWSLYUGN8h2FFXzZrID0OpYrEXXw4s2ctIKTPG1W8O+t4k6WmZNz8/OoPRIRt08L3+XJICLTyu8/yYO37lMxNdK+TPNzHxfxk8D/8DBGaK6g4wKAVaujejzovOMx8N+pLQDh/i/AAgjuZUejUE923/FR6sQAHBxnXdRhE/ckdUPbFc5zFKSy3Wuf2nepPcCkDNYrW7pH8x/wKhaN1hbOI6j4A8tA3ByFN0/KCrCmSkcb0QRqouTNt9VYuEGpia3uAx9l7cZEZKo4nCUTVidhSE8o01GX63uFoWubwxz8vrIeDSDuif29gImVfOxDXRaMCmeUP7Ex2ZjvU/LX+ocYkP88H39YM5YlXhIeroyuo/HE5XUT9DpKEMeRXK7l6dTiYeA+9oQ/KDnGslDc3C0f+ujJFOmr5HCWofJ5haZzePeM6oBR9vh9LcSlHI1Zjl79pkvhYq1a4ZoPMuhxAg1Bvb857PlDJLE6F0D3lp9LdjIK4=", + "layer_level": 2 + }, + { + "id": "1b7f1c36-8377-4ab0-91c2-52017bc8c76d", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "订单汇总统计", + "description": "api-order-summary", + "prompt": "创建订单汇总统计API的详细文档,涵盖订单汇总数据的查询功能。详细说明GET /api/v1/order/summary/get/list和GET /api/v1/order/summary/daily/get/list端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括订单汇总的数据结构、统计维度(如按日、按状态等)、查询条件和返回格式。提供实际使用示例,展示如何通过API获取订单的总体统计信息和每日统计趋势,用于业务分析和报表生成。解释汇总数据的计算逻辑、更新频率和数据一致性保证机制。提供性能优化建议,如合理使用缓存、避免高频查询等。同时说明该接口在监控系统健康状况和业务运营情况中的重要作用。", + "parent_id": "079920b2-aa64-48aa-a92d-8decf24623b1", + "order": 2, + "progress_status": "completed", + "dependent_files": "api/order/v1/order_summary.go,internal/controller/order/order_v1_order_summary_get_list.go,internal/controller/order/order_v1_order_summary_daily_get_list.go", + "gmt_create": "2025-10-08T18:19:17+08:00", + "gmt_modified": "2025-10-08T18:51:11+08:00", + "raw_data": "WikiEncrypted:9qHpiFX/XrbQzm4K3sHnDG2/5vEWeLFokdGXmwHMfnNK62dfNT/UxNqYsUKg4IQXr9Ziy+qK6wcqxCPYSkXSBZ0Cu4Zbo3RmnZoSYolWzgof99Xi3JgdE7ix8h4MkQ781jRhI+eruRoMp257F/SEC7HsTSYYhA7lKgnr48YMoeXisC8c5v16L12us0oUm0RmANUS5LKkMUc1hWm3Ig3y/TJsLtY0m0Etg0vKodqG0jzEzt3hYCwo8lmabkQ1RXOehBSOV4bXZ87/bKnsvWzhq3Mce36iq8EhqPTdUOiDtQD6/UWYi57FkpDqNNtqGQg7iEKgetSw6T8tpKay7FpwMUKjEENFU1aC0aCoeeO+fhicusalJNWwkRCG05SqepMUai5Za+i/EY1pvEUsZ8sUGCazB+077/m4Cy2Suck7wnLWIt7HqcUtBisSZpHQCJa0K9esOcNPCBV7RYrZKFMlstxIgHaEekG9ZOw4q1GdblhjpAtfvknRGVYM4Sm9LoLGwkDpGliMpLHAzyTS/U04L3Rs9gyhHGMN2to30SPbcUYf20HcWE0U2f0yQb2hXCjZb4rTXrGGIzVDn2CLiJGkIV2LL9P7q3CFc34F7nqNpICm5qezQljeUT/ebs5hLcHYfudzI5gx4cf5QFGGj17ozZUxbuMBfPSQ8mnfWxO2BktJj4Z1kvMAeImmPMYb/1h4a27qGGH/UuhkQi/QmQFw99CUkPn0ogsRRx1do6KjhNOF0NGrQV9wo3yqrD/4C6UuHEYkGIjzBMnb/h9BhkeEiIAnbtlBubeBjuyH/BXIOGAhHWR1sAWbxOpctru5MhJ/MO5wBcRPWeAsIuidmRL6NjbHFVucDMxadZc/SoUurRVN2aopGy+F+xtws7AKxcHnuXDJVfVkTNyv00yg5UwELk23xwSe+RTmVSma/Do9ntHx8/r5f6bsrSleb8X6GF47ZdA/ChJjBqJZZFs50dq6kohWG2rqDhoaqILhIhPECc9PZaiUhvr50hwwi63uAWfNmFlZh56WjIZFNIFOLIsT2QSIfd3pnSN9al2Xomrpj7P/GiNdxFbsYMZnPNcRdMMRKNXNFLaBXLQM0RmJE3rRpd+lJr0YoCGuADbH2zGedbowpr9VZsHZ08SMLTXTg5FtkItK5Q5021PBS2uEnv+X3Q5M3SLKvNVJWrYVFB7y91p/v0mIdISQr9e3x8dCl31EFUIZ3MGH1v5WIqC5AZAYAgjaMFFEaPrRrCP7lXUADvh8T6x0VcTg6pHTbw9A1HkvanKGEQlqdkb+rpQctfnMhoNMANZLTnDAPzeqjC58w3H1itGrxqpCfeXGCPePp12vtYWbIt64YArky4APRKa5JOzlDqlofYj+wFOoq52kube7QqnpFuzLqmvS7t6LNbqhxss1+e2s/H0aHFtagsYbPDN+zqhTH+8SxRCBhGQbDEyOAx4lvRWlzdMkeTIK+SyoYxr2AfcTckRZP/Vy68YFo59hzeDRj5uqFzXUozrkn9brVnp+eMXH/sMmxEombcpY", + "layer_level": 2 + }, + { + "id": "c32a3e21-0961-4618-a256-ee1396eca8c2", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "天猫卡密管理API", + "description": "api-card-info-tmall", + "prompt": "创建天猫卡密管理API的详细文档,涵盖账户授权、订单处理、店铺管理等接口。详细说明账户创建、OAuth授权、订单提交、店铺信息同步等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括天猫游戏账户授权、订单状态查询、店铺商品同步等场景。解释天猫卡密特有的Agiso回调机制和workspace管理,提供错误处理策略和安全考虑。文档应包含客户端实现指南和性能优化建议,特别关注天猫平台的OAuth2.0认证流程和API调用配额限制。", + "parent_id": "0d28da6e-d972-4227-9fc4-ecf26d5c6b2d", + "order": 2, + "progress_status": "completed", + "dependent_files": "api/card_info_t_mall_game/v1/account.go,api/card_info_t_mall_game/v1/order.go,api/card_info_t_mall_game/v1/shop.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_account_create.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_order_submit.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_agiso_callback.go,internal/logic/card_t_mall_account/account.go,internal/logic/card_t_mall_order/order.go", + "gmt_create": "2025-10-08T18:19:17+08:00", + "gmt_modified": "2025-10-08T18:50:18+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBhDOfi1XULNq8w0FtjpadAUvV+ceSF9+Fz49FHc4BI/wHY1vMagnUmaQBpv8QvE77IhbXlWaabmCE2ntgHj2iMG2xn6ujYVBOVW2WcwN+kfsWyXc7LZw0jyz4gDVPMYNps5QyZVLLCWx9ZXoE5MCdw3yTVPhueAv+StWiFapxus+h78kDi3FaIPsR9Nn6SFMJ5OKTJsTSn5+vf0kwylPNuc/+Kpj4+S4rjyiHkJ6/AkHMKS+z+fyQQ0fjp32p98HtaISDQovw4/NwSSOIBGOOKvGwuLE9TcqkFbnrUP69eyaOju/vnY6PHNO3ceg9Yyn/1HLZ1/I4WGAcmKA4DS4/iTGZc2gs56D3HGebg96AKT8PNFnLMQJiamx5915UQWdh60OOzrVDfJv+QYu1BILz+Owzs68mGQwCajmmc8pFuUoFCwb0/TK/J7fM+53LDucBYx/r89clLpo/qaQw8QMGYsmmnej1ejEOHaAjABPIVLNhdU1hO0oDm93rT9aY3aUpCcz/Vti4anzEkdGsMtsYwcF7r8v3ue4rIHzgny4bDynfCCeog5tMziIesbErutBiY1DfNxO+dE9FusuhVvbSPigcOPcYXpYzqZdhzaqTMExjvXifhIsnSFio/uCxYhMyhwhNVAjVfJqTuSHcsZq4SsMJdenQ9PfoP5Q1ynfDf8oPhJs9SgOqyUC27Cei/bxKvqdqXjyYb1sP2AvuVz2IRvgt52TP8qo3gB+lwZJ4XbIjNSZgTDKUwWcdMzpPHZky+2IIwX+UosDNia64SYUbXA9oYZRrf1o539Pce880X3uv0jL49t7e0QPbrp2LEo7TWXF+qqEQ2qBeZ6TohEr62fapuOoiPBs0bylJaNcp8mg2ueegHm0Y3I044rIew1itqX8NSaRaqlt5fhSrOuGCjX9+HoBCUnOlMuFudHJVF48VibHUycpS03gHGJ94xyqm77K+5+zKPCaVUIrmkx1uju5P/eZS+sO015HYD+2O6h/tF0aJywJ2j/26CQ77i6BZx0kc8j9kEG784h6ghQJNmuLVOBrVIzAgYDx+3IFcZzPayWAWK+y7Zc9MOxkAolM6D7trEmVVbWabNyWFLUUr2ck0tAT5OFGF7ufaJZ7Vhmi2HMvSSWYN7vUwiHODD08eaLEnixCTMpfvgNsloZMsHLRjrjO6dGzl0OAf/NZoT9B16KghJf3jgKSr51FSI1H7j+aw8+U6pdmxWadCTS51urAV7jMnWULfylBcom/XNu9Fpnm4hm/HlGrcIEuD7jN5U95w9n/QWwsE14ddxPlVjLBEa3o1o8Y7GyogxfuHQitt8CLvUNGciIsADU0B9z/WEfmMA32Nz/B2cq+w1uuI9JXRi5WFOEnVrQQGiji/rELtk5/XGvlMH6/QnjYshVbOcaHTIo/Vb/X8nYiQibC4lFYhVW3pa+jrtI72e7MvUCYZ8AbQ2dFGE0KkGOtDjvk8nwMu+OCcqZvBs8W7g4RQmBtHkFxwcUL6lEw0it0RE9V5kLxyIncbh07rZxArIKwsF9SdtPgSqWSd07iRXzJpSpbKWBM6KJ2A/YjmBpj/X+rPp6Y+Jfd85tLwAixDLf5JWHEks9n9zDTD/YEBKg3HUchj5rqyt8TgXus4BbxX7HzKyLhZGtisgeXWKxKTu9wkbWXhSvyP7lrdt2I77Y4JHiZaZaNS5KQdEt336RGvmtv4bLgdu99zuEdp4OERMA6J/2rl8ReXKrbV60uO355I7fadmUGx4XdJFRD8j8onK1P7DhkLE++PPiFP0j9AHSrftMC4T1Hw6rgr9DXJLkabPs=", + "layer_level": 2 + }, + { + "id": "c98a021c-f5a3-4847-b8a2-445d4b79ffe9", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "盗单处理管理", + "description": "api-merchant-steal", + "prompt": "创建盗单处理管理API的详细文档。详细说明盗单规则的管理接口,包括HTTP方法、URL路径、请求参数和响应格式。文档应涵盖盗单规则的创建(merchant_v1_steal_create)、查询列表(merchant_v1_steal_list)、更新(merchant_v1_steal_update)、删除(merchant_v1_steal_delete)、状态查询(merchant_v1_steal_status_get)、状态设置(merchant_v1_steal_status_set)、统计信息(merchant_v1_steal_stats)和记录查询(merchant_v1_steal_record_list)等端点。提供实际使用示例,展示如何通过API进行盗单规则配置和管理。解释盗单规则的数据结构和匹配逻辑,包括触发条件、处理策略等关键配置项。说明盗单处理与订单流程的集成方式和执行时机。包含权限控制机制,确保只有授权用户可以修改盗单规则。提供错误处理策略和监控建议,帮助用户有效管理盗单风险。", + "parent_id": "c423075a-af3a-4aa8-aeb1-eca97be6acbf", + "order": 2, + "progress_status": "completed", + "dependent_files": "api/merchant/v1/steal.go,internal/controller/merchant/merchant_v1_steal_create.go,internal/controller/merchant/merchant_v1_steal_list.go,internal/controller/merchant/merchant_v1_steal_update.go,internal/controller/merchant/merchant_v1_steal_delete.go,internal/controller/merchant/merchant_v1_steal_status_get.go,internal/controller/merchant/merchant_v1_steal_status_set.go,internal/controller/merchant/merchant_v1_steal_stats.go,internal/controller/merchant/merchant_v1_steal_record_list.go", + "gmt_create": "2025-10-08T18:19:28+08:00", + "gmt_modified": "2025-10-08T18:50:34+08:00", + "raw_data": "WikiEncrypted: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", + "layer_level": 2 + }, + { + "id": "87378996-7b26-4ef7-81e5-3e2c73c13d78", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "用户信息收集API", + "description": "api-restriction-user-info", + "prompt": "创建用户信息收集API的详细文档,重点描述用户行为数据采集功能。详细说明restraint_v1_user_info_collection端点的技术实现,包括HTTP方法、请求参数结构、数据验证规则和响应模式。解释该接口如何收集用户设备信息、访问行为等数据用于风控决策,提供实际请求示例和测试用例参考。文档应涵盖数据隐私保护措施、信息加密传输、存储安全策略以及与风控规则引擎的集成方式。说明该功能在反欺诈和异常行为检测中的应用,并提供性能优化建议。", + "parent_id": "71487087-d57a-431c-af0f-f9ce8536c80b", + "order": 2, + "progress_status": "completed", + "dependent_files": "api/restriction/v1/collection.go,internal/controller/restriction/restriction_v1_user_info_collection.go,internal/controller/restriction/restriction_v1_user_info_collection_test.go", + "gmt_create": "2025-10-08T18:19:31+08:00", + "gmt_modified": "2025-10-08T18:51:10+08:00", + "raw_data": "WikiEncrypted:C34GewOyK1SlumqKiPsSg9Hm0SYOCvN6Palim0MtUus3FRNUjP5X2DCKGq6+ITrvgt+4sqxszJWV8CNot6oQWekgcQS8eVsvLJhdJdSqYK1/4eLLujPOisKkWSSyE0MbrNLnRLCyhUOTiL8xLNUE+kiF3Wn/RyPl6myAP2CJGriWPhItOWgUSC38Gt4OwaYhJnX90WR1tujcn/wfm0biK6DZGNjYY62gbT8J/3/q0KB91C0sGiJcSPpO+s0i40b172wZpabVN6RrvRIdzLaZaA214I46pvfMwW+XyrBZFsBS7A9f+FT87iV026cSHEM/dv2hDmNwqB8x24otSAcPa9TNagF1DXZ8+1yrQ/9wEAU4B10UJtJvlfR2qttVWVI+sI8ofW2cud+igJZpDKZsngjgh0PudRtiMr18IvHigwdTKWumLLlvQJN2B1HS07YSGF28BeBw/J6P7PPhPebxYs+Nh953dxH3QFrV62BuIXEkHaRVqujfh54QZ+e3hl60SSHCNBuagg9V9Sg3fKXC/Gq/stqK7Ux4zMi7NrKQyDGjxacTeuU1XhFz126uL0OQgz9d8b11sZ9HtssERoHAMlccKzPTB63sv+aHrs3/0AOOE2tWwlNGf7PHdUzbM9tBv3Y7uGMVUMNhZVL/hqHNsqShbPGS2MpFTWlaXiAeUw+rUP3/OxhZOmXYnJNL0BWjZGqrpT4KHDQWdbCyA+P3P2F9j63WiE908Ut5YcozUHGpRejdfp3ynbgOw8n25xEOvteYn2m9r/q6fW3TqhvBzB/GsBIgHqR9w18yIVBxJS+3J2XCbVaQQgq3QerI9Eg4EcvkHhU9YwzRymfHWJZ6S8+mnkmv0/75ztt/+oi3P1XYhxJSn4OsQeAzbRUpclq5+VGNITuCW0QxUPOPVYveBzyuS3RhuBwIkJNRgijrUGv+e+hdmftbRl0r/3xfpzbUvyDitwfN5jobAs3znVH3GbOa3N8odfniMbqoy5Cz9V3kTXZtNJCnZdNrY9yWCGPctBl/RpwIA8mQMhf32EE5zi/7bQCF3gALwp+lSxNBsulPvREC3hm9Wxfm6gPygOmwK2JlX/WSbX4bbeN6tabdSKome/uXenGYsklPX/1Q56wW9cqV5IURChlK6JOSQ6yByrDCgbVt17oAEh85Ek88wpSlBqgO101409FnYgaooyKmO2kTogWu86DCBAjsiAlQtv/7QVPsgliddIiIsxxDUtgKRJ3lRpVIaCx6/tX5YXZtfAx7sVSCTvbfpbZjvhA0P4PlGuwjY1NlRrJlDZF9J7X8QhGULeMnEPHVsNXhWVYBBqDkcqxS+V/DxpNznCV2a5PWF/mi1HLmSC+zWJEjAw==", + "layer_level": 2 + }, + { + "id": "e0f89cbb-9392-48f7-987d-45771ccb89fc", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "Ctrip平台集成", + "description": "ctrip-integration", + "prompt": "创建Ctrip平台集成的详细文档。重点说明kami_backend如何通过redeem/ctrip包集成Ctrip API,包括Ctrip账户管理、卡密兑换、订单回调等功能的实现机制。详细解释Ctrip客户端的认证方式、API调用模式、异步回调处理和错误处理策略。提供具体的代码示例,展示如何调用Ctrip的账户创建、卡密兑换、订单状态更新等核心功能。文档应包含Ctrip API的配置参数说明、请求/响应数据结构、回调接口设计、状态码含义和性能优化建议。解释集成过程中的技术决策,如为何选择特定的加密方式、回调验证机制和数据一致性保障。提供常见集成问题的故障排除指南,如回调验证失败、账户状态同步延迟、兑换结果不明确等解决方案。", + "parent_id": "d49ad99c-afba-4362-af4e-ff689d5d94cd", + "order": 2, + "progress_status": "completed", + "dependent_files": "utility/integration/redeem/ctrip/api.go,utility/integration/redeem/ctrip/service.go,utility/integration/redeem/ctrip/models.go,internal/logic/card_redeem_account/query.go,internal/controller/card_info_c_trip/card_info_c_trip_v1_submit.go", + "gmt_create": "2025-10-08T18:19:44+08:00", + "gmt_modified": "2025-10-08T18:51:44+08:00", + "raw_data": "WikiEncrypted:UPowAVLR47I9KpaM27BQNY25Tcm9u6r8CQlUx42Oyv9SIsPI+sjq9zcQuAYq4Aj7ZFcqK4G4tONeGwS9wfInT0HqqrC5TLc9yn2T648Jr2XMAcJAFSztYq2GfpdIKgaqAKZJd7Ibv5l0QHPYxLKWD6b/RiKQOPvl1NWejLjqk6eYCh2BIMNn1EAmLMQSRH5NK+lXqUuafTH4mz1+5o1R1cj2GrZrKn4m0UsHuEwOfAbwpMwegFDBf5NxtokIPoJEm04TDmVh81ZS1kv2O4EFdN2SWkS0vMGwv8qd41IRIbkXCagkrPCaVcyRdrDlt9RK44kx3quJbVEYFs7JkwG4ebNg5WVU8H+Uld7emgNxHnfP911t1cv+hdyj2+3LcQe6vENgxrjqjzDUfn5uVH7ewZWuYu689uCA16PorSm2rUgdK3K6dDCwz/gEgYO2P6EErI3QPU3YCbMvCsAb2M2l/mpnCsFXwYJlsdRqbZuOT3sH56M8+aCZ2bpij4hIvGfBpmhBGBwNnsfkDwdCg2g3Zw7HYj++Zoh0/H/0K2y5LSWkpx5quqS45yl+nItz3OOIxxtjHXEDjsYGce+XkStLOHO88p2BDo0BeW1FDEQdtH8pKsfG2lwVFfWlpHEz0uAs8xS4qh8+zKOBbaQvgdxrzoTlcOsSGGlOGZXH6wOkzGUNKBLgenHRrbUC+z00BvJztlFAQaS/qnWgoMudHgz41eHD+3UsuiEB6vvXv/OcBD063rR0DQFjWQwluwtgxDnhf12uEolZoCw5cICUELwvGdqGUc1H3DlRx6YfoBdWDOHCh8zmhb+o5jLh0iduFYGhPXGiu1axWTM6dUQ6KMCTwFw3ej9KyK6amObtogSWVceSBkUHgL8VfsxbbxO113RlhcNQ8yDpJ8dPIzHz1U7+iFGugpjAHnFonBMmvyIrEzHtAOR9DNJL9Cf9lMuZL/GjU6u+rq4bMfTSEyqvOPlKH62kJ7piM/Q7id3t5J531i1IyhM7SkAJ52vm0OyfEOt1DW7R5LmaQgH1k6PALdm0ol6Bk5rRhuEdkid3Q+luOpFlMLHz/dNphKl2HaUazUiVFo9e49hjQB9co77K2v/f+3VW7x8NPNIpMF/3mEVBBV8QtjBzKB3c/rKlhDinvChS++aIzG1n9xBmNpX+QJd2oVxqOCCFx/QmpfKhwtI266i6QO66OkJFRd9zDJuybzmAKsPptIXlKEjXxalWmIAxY8evvpHZ0EnReyuMzjxArkP7gKSWJgc66m9FU+DDR3EPP9R5xJU3ZjYn1kOXPJTgG9SGLaZ8Cp9xnMYmy85oyyi6puprdI7HkLc+/JZs1pyQU4g+0Ho5RWVkXcSS2rDcXGO7LIE0PFRTHxlO22ZyGbWYNGC8xqj1Wy86DnJqzStOLs5ESPa+2qp2VmQ7hCyUvU0vwvtvDCR8sMfftH3WiQB2HbemqRqOvEr6sSLfc+sgGEiu89eDpWBazdQznquG6ZiMAFEtUtilu5CxPwZS1RDkP97rX2DRxOtL+Cw8Lr6yZCSyfp8kZqBQ5KiCeIM4vW344ofIZC4r7T/qTvIsPcThZZuRY421zZ+KKVCP2Ttn/5v9cm2t6HwOTYYzxtq8KVoNaVbMrjkEwG7gED7pw7We/Hm/08jV6xadGySJA0K5XZ+zO7DD79pvYr4VjSRrX4JPsmElCY3/vFRnh99Si31w5MjXHXmN3XEin2Ig7x6Y", + "layer_level": 2 + }, + { + "id": "677ff050-ffe6-4e0c-93e6-5aa4da717ad6", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "Apple卡密历史记录管理", + "description": "apple-history-management", + "prompt": "创建Apple卡密历史记录管理的详细文档。深入阐述Apple卡密账户历史记录和充值历史记录的管理机制,包括历史数据的存储、查询、导出等功能。详细说明历史记录的数据结构设计、索引优化策略和数据归档方案。解释历史记录与审计、对账系统的集成关系。提供具体的代码示例,展示关键业务方法如历史记录查询、数据导出的实现细节。记录历史记录管理中的性能优化策略和数据一致性保障机制。包括大数据量下的查询优化建议和常见问题解决方案。", + "parent_id": "f7bc4c8d-64a0-4c2c-a17e-cd38987a94ef", + "order": 2, + "progress_status": "completed", + "dependent_files": "internal/logic/card_apple_account/history.go,internal/logic/card_apple_order/recharge_history.go,internal/controller/card_info_apple/card_info_apple_v1_card_history_info_list.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_history_list.go,internal/controller/card_info_apple/card_info_apple_v1_recharge_list_download.go", + "gmt_create": "2025-10-08T18:19:46+08:00", + "gmt_modified": "2025-10-08T19:02:08+08:00", + "raw_data": "WikiEncrypted:ngLqLViTt5zzUmJHZ62DoB3OA1rtdKXDOkAhm5sOWqzA3/WA09WLFVJkUHDwV4FMWdJdNF197MEgGU6up5YiGZBWV78aiz6bb/GDIkJYs2Pu0ofn68MM1Mqb0uAGEtzLsF3qvS+hvKv0PuTIvCeA0x/JV+fiNz0Giz0mdwV2l3/qNo6PlALMi1OK7rUowVitawMfPVyVvcKnMYzN5jQhSmqnw1AJgZm+UAdHSZmgawysFiQw9+tzIa+qP/5eXEHMNeuqM003rn2XwXHb+mviK57f7p29cVF70XFlRDaj2xWLOHACh49c7k0DUE3U2fan0s8F33ONXFfgbMyAEp0ZZIudDmF25zN/eREW8lksgg02E9qMTrXLAdqiiD3W2QUCfsynROPM1gje61P7tUkNX6XAX8fFKhEGYGlPc1aXAeH+fU699Jf/oPNsvmFddpE8D3OayJrFlah49ygdlq8gcWyzA8whPM55OCtD2re41YEo3MhoSOnPtw366i3OYSVqa7fwGfvhkRp9O4m5tmfakSg/tGgwrav0DRZPVRU4n2YGVpuKnoKuCQIlxicONfb5rC38GH5pBcL7NJmF4qsbV+CKQtUMcUfqY/4e4STvEkim8FBjLGn+khlvp5A9w48MOkg9R1TiqshykBp7PuMtkBBI98J1Gx/oRFAuQ/cZ0MAEYnNBEGDdEDXlgzbHfK1l8WUfuxVn6dcpETYRaQqwSQgxz+mQzh4EAtoFXf0AiJ9aXtSV8sJ+teI9QH6mjOKaxbI5+x0+HL9Hke6YorWpVzaybslQ2C5K3tvn54l5Sg29A2rK7VT9CpoH0wrezZY1qo7XG6K6IhVEdrf9gRIfKKIIPUe5opGayOEqyBoADMI9R2AE0jZ8PvzYi6F7cC4pCyR+HfmfBHRRE1xgHf8Wv/Xq2sNpzSBxsmyUZd85zTbPsd6EsLJXR9n4WqADET9xM3N9BsaPSdd4sE5vi9LutNoKZv+eY5wVodnm+kcV0QXPC3CfUHznHcBGvfpAWsbGYZnQTlAUhNXHjiDVp9J2oqBFK51Orc2NQLa0HwMZaHqwrkwvRqprjQ4WLbwWZEcd4a93FkWC4od1B15lHx09KGQQEhZgyXAtyFmrD9L80bkyMpbCaOKVb/6ZZUSvgAjdZygPvWyyMcD4/ish4NYBKRU+URklOOT83ZlTSxpE2ZQA1HyqP/rw8iwW4xbIWMz0TM7hFcy3Lp2LhLELuzpeAIV1EpP3uH9RU8C7ZplVsqrdE+lPlOxBRjY6BMPM5dAd2nXqlnu6TKvcBQl5tQmCOG+yu6Kf06MsYYVQHq++FoO+7lxcuv3y3sj/wZsif1PNc5uQkzUCT9hJEHHw5uuBB2HRmb5ZK2HaDKxufHfRP4H4Kpnayrfwfna5AB2hYhDzFD1zceyLISggD1R011K1/F8UrJ88TsG8jM2A6aTQCgFdORo+q0z8WR5m7sWWhId7DNIGmL3SK6u18f+ii5W24QQtOY9i/4wHHDmFr/YX0bGM+4VhygDVSVkfpDMf9aZHJa6GlFJmqESruc+VgwUKVj07wKE0Tt47Q+gEkEAZeibwg7zKPGVPxnQjCjE9Gjy0SAbXV706+wE4UUTSuHnmcg==", + "layer_level": 3 + }, + { + "id": "b86eeb37-caa6-4edb-807b-036800419a82", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "京东卡密分组管理", + "description": "jd-card-group-management", + "prompt": "创建京东卡密分组管理的详细文档。深入阐述账户分组的创建、更新、删除和统计功能,包括分组的数据结构、成员管理规则和统计计算机制。详细说明分组与账户的关联关系,以及分组级别的操作权限控制。解释分组统计信息的计算逻辑和更新策略。提供具体的代码示例,展示关键业务方法如分组创建、成员添加、统计查询的实现细节。记录分组管理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案。", + "parent_id": "d56eb845-7c0e-4be8-bf3a-239e3c0eb5e3", + "order": 2, + "progress_status": "completed", + "dependent_files": "internal/logic/card_redeem_account/group.go,internal/logic/card_redeem_account/group_stats.go,internal/service/card_redeem_account.go,internal/controller/card_info_jd/card_info_jd_v1_jd_account_wallet_list.go", + "gmt_create": "2025-10-08T18:19:49+08:00", + "gmt_modified": "2025-10-08T19:02:13+08:00", + "raw_data": "WikiEncrypted:2Tw4z8NsJjOlKl4tOUQ4rdLCKJ6he4t2YUuBiX+duHKsu0bSY6j5XtmWtlRDFLesp7B9t2FDeCzDhF4tjVQoWGbvNToSiArfvZgRhQhttoLMtONWLHnMjRQenEBAi3gU3uKMbVAVeFljYBll520xQvoXqZ0NtQx/im3wRUib4Li+8S/od1LJN/Z0mq+kG1GYo+Lu4o27Ap4u3GzHiKooY3As4LhjGAKZhtIJMx3NNFhT+ADz7+kJheEtwsTDIiyoneYQWowtLsktNUwONgXs7hEK1S+UT+Y6mJ+Wp4zENLPLuvm8sFO5/AR5+OzUIPhZQFbfAlIRTx25QByM6Wu/VKsvfiI6pZkx+cRRnle3NwKKP6f4h9rsJYL4mmBU1YAjDPiBnHrhKbMvys8sElQ93S+XvWbYDBHuAo8qJoO4s2540VnNWryZQAPUBejfvdoxXEv4qW1+TaNSw1CgAP1xgnwkJ4pjZF/Dzi9Jp0Lr5h9dtedNzyWAcbg92U5BE3awlNd5SLwapVjVCyAEjhW6BRi5KEbVamWkcv8r1lM7K+FxjpH2JwcjIE12ss08VsgcJY63zbbmkb6nzHyqmJopJA/QRCFqgbdNos7S+wmTEB6iFBQHlB6kUdTjLc9AsewksLuq3mSISM99nyCEwyv67e+KycKuwx2Y5dbPlSKCBXMAoewC4/gRTUu52365kvtXC10uSkaQIxviZ3tIQzU+Lp9ToWWiCDu0PyHzVBiNciBP/eEZol/E8ccCxge+8FLQnSOuS/a04xUSuw+eElgAGwETH7LuRG9W9rbn/GEZqNyjk3bGDqpsHg8qTxXGXYtx22CGktjyQeWM6MuSIbxCx/MltO61rs/Zsw6wLbCdwOtlhDkxTUvYeBVGJONk/7WcC18hYYsqbYoaW0VI8fzwHD9Q/ghhYbrWFLJSIVYLpfj0FuFwtZDD0Eo/qipCouBkT7EuIppujAlRk6htn1EXnjfHPxLPQeAboeM+JXLTkPKREgiWh9au9YXfsIfhHYiDDHnrXGtaFXEnGCjntosgeWJJFO2klzMfb1HLy4Lz8anm1zJhhCXR6tP0QOIhSd1jbprd4/ZPEgOaS3emoPD1wGvg5wwg1SFQR52NkRkSfesQL2p/t5DoqhNARduABqIXJNMK5SzMb3K0+80tADmqpcEkpwlossbWevFqR/me0i1HEJptn5x2TjaJvmgCxj0UHt61ChLkOFUeHbMkYZuxtRvVsXj5Mlh0sr5Dr5OhwxDOwdGY6MiLmWooApabtnqiddw74+cz/1pWQY61rKOprsDDKeGBQlbZWWHJeyUFq5xKVCxfv83FzL6yVJzhSthvpiFuRyvr4trnvFlfUqSd9Z8fThOOHV2mUDU8vLMI4WH0Qnp4JYQf1Vo49qf4+62N", + "layer_level": 3 + }, + { + "id": "9267865e-7ecd-4a9f-9bdc-66f3c47cdd00", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "天猫卡密工作空间管理", + "description": "tmall-workspace-management", + "prompt": "创建天猫卡密工作空间管理的详细文档。深入阐述工作空间的数据同步、统计分析、日常订单汇总等核心功能。详细说明工作空间与账户系统、订单系统的数据流转关系。提供具体的代码示例,展示关键业务方法如数据同步、统计计算的实现细节。记录工作空间管理中的异常处理策略和数据一致性保障机制。包括性能优化建议和常见问题解决方案,如数据同步延迟、统计结果不准确等。", + "parent_id": "8137c301-f13b-4054-992f-c556767d7c45", + "order": 2, + "progress_status": "completed", + "dependent_files": "internal/logic/card_t_mall_order/workspace.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_data_sync.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_stats.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_daily_order_summary.go", + "gmt_create": "2025-10-08T18:19:56+08:00", + "gmt_modified": "2025-10-08T19:03:01+08:00", + "raw_data": "WikiEncrypted:pmN7H1JF4+HQF9n9w8KwReDTM6Mx2U4SoX+wR3uMBnmUaLdaRPubDduH+iqcINL2F1uVz5fih8PpiymWyOsPjzO3Qey8yIXLoDGg/WTheetMHYoKhIvyZu6pbbaNAyK61SCxJNNwF/EHyoZFQPylLOta3kgaHFuEH7RGJE835QK8BRaPwrSAAzB+ZiFMTk04e8iWcaKdykmjCtO+9EdIARCuLs+JEVcc/GCxm5irW39IU9Sq9o21tO3Gc9lE8pXm5S7QQmQJlNeHsJUvwKT/rcb36wYlQA4H294Y2fKMcYWPnY19lKjJOlS54A5YpkwIDVrBf2JAnvHy3dKfCmCltaweNs5W1nPhB99CID0yC6RRwKclk599rzEPP9uQcMho+ncsqATPxffkpDN0ZSRz6xYJeoNBkP0i+h027xzaM1LTNShoiL6rjaZKyhmGlwvB+p4NqZthrp4zSR9vzdf9E1Z1lQfJ+1kDHKaBNyk8N7YbphhcsK1T4YGoOZ8kUj7JTTDlhNOK/ulyhDY/6RfKqXyYOKfDyJxDoTFM6PHl27fqCuaQDefSjzVOcK34HOi917aWeTxrLhCKUOHI2o/RiOtcMeSDHLDrrs+FK1ZgABoIR+Ba//CmGoZIuBo3WyrpunFHTDMw5QiMlc1GwbmwFz1bu1ST66DuvuFhnqy6TH97FEW5llBk5OkMjOO7359IKCkqXCchGhXFFVGAhatkBD6If6cXhJnux5uF5xD/yiGt9JdSV9FZkLpF+8OUWxrlE2rdiM/vF18w4PrGqRENA+XZQDyuxTIEXCuHfermrLGleSD2cLNANrx/6IOfIgjSiD7Hgz9uzPYvHeqQDM9TGjPItqR5e63PZKxIXaGfkkIj8hZSOR0IvlljXIdKULszbxi33SVWUMSyqMo0di5toQDQVI9+HKTYkS55Bj4OA9iIerZvVKl9/x2DdJkXksNL5LocFKFeAuGhmigZj1Jqpjaf3OiZSPXi3B/qoor3Ea3woUmI9b7OW3RmJQxYjShTEIy2Gh7KfAXc/afdHm6sD1Mskv1AUWlDwR6pGtzWwY809btuYtkA4XxaU+fDLtLYuUbc7glBGylDcndTjgRXxcS9kNWC4NaxQqK/nXjG7qxLiRyBL/aALnch5eb+TI1tjd48lbUQnWX085G90STcsymVAS9See5WUxEIWawYlgAhbHVBjGaTuVEBTEDXv65DipF9LCzobfTRsu+iyh4YL3xl+NipnjZSKiqCL++PtLK7cTpEg+sGO/sxMoiN3xpnYW+a+d1crOwLBIAIqZSSaJrRra0p4NKxFwKYiYhvl0fxKU4Ms7rElsigkjVy0K2v+iO21FBG2InZvMAPpC449SbG9nBEem7L5U8oKJGEYkNlbRlzZeQRXsedB5eoQlyhjZK0Ugtql/Pf8euHHPa+RkiuBR/YR264eXgsA2C8x5KBdnKv/m5adEZC6AEZ2WdXHXUqs+SVr9BUJ11V2x5gxA==", + "layer_level": 3 + }, + { + "id": "4de9e641-e754-4df4-be5c-96bd78e98da8", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "IP限制策略", + "description": "ip-restriction-strategy", + "prompt": "创建kami_backend IP限制策略的详细文档。深入阐述IP限制策略的配置机制,包括黑白名单的定义、封禁时长设置、例外规则配置等。详细说明策略的生效流程和优先级规则,如何与其他安全策略(如地域限制)协同工作。解释动态策略调整的实现方式,如何根据系统负载或安全事件自动调整IP限制策略。提供不同业务场景下的策略配置示例和最佳实践指南。", + "parent_id": "6810876b-78f1-4c9d-a2e4-a82d03615272", + "order": 2, + "progress_status": "completed", + "dependent_files": "internal/consts/restriction.go,internal/logic/restriction/restriction.go,internal/controller/restriction/restriction_v1_check_ip_allowed.go", + "gmt_create": "2025-10-08T18:19:56+08:00", + "gmt_modified": "2025-10-08T19:03:06+08:00", + "raw_data": "WikiEncrypted:6hVxnL7axMQmHgJLo0JNgXroZS4XfIcI9txs//qPFg+UgB1QVZpinkI/9oxfW9tPotJf/5BTyF8XCfAyLA7+o10wprGeKJwF1KwCWge7URyS6iBsJc1lQYVLzkprQ1jUE8cO5rpOjgyC1AA20f6UT11yA1zxFozgy/g0LWVZqwOTRcGh+5yXvLGbTIxDRKp8p7pt/JuDSzO5qTu5ypX7rWkkH/Ups0tZBzzh8KCM7WGq88jgY1gbBfHMqDQyCgAqZNcIcUwmlLKjk4PgKB0qkQ9cmZIfkS+fHSj6RMDGc03sD1qanuKGk9ESxwY21oWzpc/3wI+n/p+cdeMFNTalWE8KhkaGlEid4ydyq6Q3KBCtTFLn2chxi6nNbNbhR/oFhb6UBipCLFW0jjQKQ/jUYHiYU3tx2uj7sLliYtY19p18ER6Q0eeBzTY9x6nJ5BHpy/cDqFEPbiO9W5r+DPrP6vYT5cEPKpIowqt4W5NGOjvKSzqfvwE8nIWzMdP4bsrSwJtJwfsSEHBZdExKEtWcW/tbdT2dRxkYWfQmhI7cY/K1wKL764SlWVFpDVN+LSHez15/UO730AgIR2e6oqt2ubbB0A71eBp6Qu1o7smfperkg7P67OyP6tINwOIIAIT/xNd+7CrePcaWmIzDfUWMrQxspxyNaWctU0QgSR/sPFkIhxzsg7LIShBmrEH8tfw15U5yDFSTvuMUgYw31xprPAGUtKSR0uXZhTwuMmfaKTu6u3Frny5Ci+SIa+CQ7eLxurjMgXLzc1ZZkzt0xg4POwjzU9cbPVRqDBYeI51W/Jd60XoQOpn3PaYJH+5URyIzfWw119cEIMboj5KPdyxdd9RbkyB8rcUn8jIb0aiGVpcpbXpFMap7ZvfLCNKd/75/0k1IoUeZ4MQxILjkca8+WBgoq9iAkOcm33IneMzc7ySgTBgxAlw+q0ecVEmBEU2N8pVhCnBwtT/ubPGSftmicQOKOw0Y2f32sVWMOx927CIe8Ia+lc/UDbep8rsQTvc05NQYljd6ImHHvXErpYqND6Rn/VIbHHLmN3pdHLvgfX6BmeTBIAJTuADvXyxsroxWyc9xMTd8URXX7qi32k3LtA==", + "layer_level": 3 + }, + { + "id": "1072ba9e-1fcc-4ea4-9598-564f965be8fd", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "设备ID匹配算法", + "description": "device-id-matching", + "prompt": "创建kami_backend设备ID匹配算法的详细文档。深入阐述设备ID匹配的实现逻辑,包括精确匹配、模糊匹配和相似度计算等算法。详细说明匹配过程中的性能优化策略,如布隆过滤器、哈希索引等技术的应用。解释匹配结果的判定规则和置信度评估机制。提供匹配失败的处理流程和异常情况的应对策略。包含算法准确率和误判率的评估方法。", + "parent_id": "e130f1c6-f0c7-4f2b-8467-d00341dffec6", + "order": 2, + "progress_status": "completed", + "dependent_files": "internal/logic/restriction/device_id_record.go,internal/consts/restriction.go", + "gmt_create": "2025-10-08T18:20:00+08:00", + "gmt_modified": "2025-10-08T19:02:59+08:00", + "raw_data": "WikiEncrypted:W4RZ6LTz4rg+RteR0TdbvGbxql1VxGvXj8wXXJoD2jUkzw2IGr4vc8v4wXpMfAxM2i8Pu8fZQDbDACIjUvIa2PVuqqdtSsLu4AJ9u0PM176QBtkhz5xzzYCLIycke55A/EUOP2wz2ZNWE/Bho5s1esCxg86joQ+AEbPAnr9y4UUwrK5FmZpNj+5GIwqmWtRjK35+74RSPESBv1ntHb/v2a2wcfXK251Ny6Dp7MPayMWlDG9yeyKHWz+gvgg83t0mNRySmYr+wYO7EOi5jEUt5xOpBXzx163xE7VSEVoLhMc8lwsJ2znxTW9Ol5h3jHAQHyDf3PAwJHBvY7VTIonMDSRTcTtHoN/ZQ/vHjZcKvGxzN5NWQzci9mKua3WKZxVZrzeXbLs2uP7EjHKBCKdSn+klV6TqxAbX9IupDuZZnlTIG7uOpMmBFxrNYucDVnE3E1DI5K/pgGpCovf9M1KvV1S88adX34wxLsK9cVPO3H5vGBQvx7wI2iH6iQwtkhHGGEQcUC3m4f6M+IH0iqiLhYc+zS3jSdXy+/BGTg0wV+KX9Kygmetric0/m/F7hMm51IjieiNNc1axMYaij3qP3bgmWwj/6ktVEE0PpDUs2GGZo6r8vDnhobdxZRBzSddT7YPfnCF5ddjO/F3cP3fLrAT3Rtd6Mg3tyCdAT/aDqAx3L9DwuVuw1tS0HnsqVvMftCwo802muaLJgn/FC+hiUl0Umk2nwNzL2AWXUYxGof5X1fHBYcg/zwnkUD8dJegR7x9y2el9apjSKOScDn5eIL0qF8eu5XasmUbk2oCnZxefc1BHrCudzZbO3DAZw2HM1/Wo3vXNZS8hnvPAquMJu8ehFcPVakBQEDC9/pM4sdhD15dX1jl1K/KT3Cdr5tF/mYSlJSHSi3Z6i2nLiV03DGx8L5rt6QQjlUEXIHY3jvDFgIwqg09zDDSZUZrucbEpXbmt4t84YgDNLAMSKZBsyVhzkleMWbVLt6K6WSlKDE8CrUFYDQV2wKmy+T0lnUpu", + "layer_level": 3 + }, + { + "id": "282f094b-3780-49d1-b057-75345b1de3c1", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "会话管理", + "description": "session-management", + "prompt": "创建kami_backend会话管理的详细文档。详细说明用户身份验证令牌(JWT或自定义token)的生成、签发、验证和刷新机制。描述用户登出功能的实现,包括令牌失效处理和会话清理。解释认证中间件如何拦截请求、验证令牌有效性并提取用户信息。阐述令牌的安全存储策略、过期时间设置和防止令牌劫持的防护措施。提供会话管理相关的性能优化建议和安全加固方案。", + "parent_id": "0e1b4f85-8e7d-463d-b8db-4ee330d61a7f", + "order": 2, + "progress_status": "completed", + "dependent_files": "internal/controller/sysUser/sysUser_v1_user_login_out.go,utility/token/user_token.go,internal/logic/sys_user/sys_user.go,internal/middleware/auth.go", + "gmt_create": "2025-10-08T18:20:06+08:00", + "gmt_modified": "2025-10-08T19:03:57+08:00", + "raw_data": "WikiEncrypted:0Uk4p/ZIoJw1paXZ+Fb51ur9+BiJ0NP0cT7pD4QVBe+7MMhlz5M7a/p3drxSwSHvY8dFGDqDL1NRl4IgWhD1zXBn1GX2bUFf+oTxEhJhkYDUEYNU4nAACLzPI6gYMpw5QuZ1FZd5Bfv9+JPo8JUI4/Wsnw12tivlRmPEWuUj2hS/gIdfFzjw33l92TOweftqv2Or+uu92XSaClg+hTtpkPfRQ63ISdketIPowsTblGDxkEJW9DQoG01H810yoQkh97osF7oShLX7rTAqICvr393BB2UQO9dczlsDlAONcq9XmHogAGNsXSc6ee5PXC4RedEYh2856MODoJZdInm2s/IPVcAxgetGlgi7JwOCSuyGfDoisLCkTrycX7msEXgR6G1Ya/cFKC64K9k7b9c+hZKvWQLqDEm1LtVtUdng7zKto7hDWCexiw7A62sSPiJCMM4AjsTj+d/6qUCNOPIpMJeHiTzUumQGyjuX13AX7KVx8X7jU5gzlLv8OxgyBstD91uvBqMkfrY4LTJrSMdXwObD0CyWGCa5dXWtLx2tWvBd7lbCjZtvKzDOK9UaOg8/xCORlP0hX4sRMwNjUMAH1jFyEUxO12zItHHTYuqU4bJyCsYj0Yxrbh8xg/oKxLH67+JkwTqKnXOG1JXHpavpa9iMp6IM1SM8PMYaYIucJ8+FeJP+I0od6rjxON8kaZ6Nto1dA6oQl3JVHSCUhVPriTHXURowCQsAVK0zHULWLVRzwBjFj2bM2CuunGe8q/wzVflGRZzu6mmD7aW6pB7y1+XVyx31rdwZ0vznb/YlgpS+/eCh55SCgUynS/chV0HlZBfhoISANahRO7FJW0ei9/Jov7tdIIt1K86McWKL0QDBGmMqjLLtRuqYdxK3H5tmyBWuB2k+BR6VVJvTUsfElTXCpzsqWIGrvpPRvutDudUGla9WwmG+hzOe4zFEW+y/6yY6qzurPLhfxcuvt7Q/MAV+wyQ/UPVTlmKJlXxn0N699jJrNZTLNWjqlgOILkpNlBMG3Ic8iKMNCRujrINna7YGVF5yHCPXMy2zZA+Rg2kc9PwDJRSRiOMhp7aHalBcM8w1Jq6fAIx29mUAqkVhrSu43W2H+UF60gQHvVwAb7cSlL9JIhIMm+FLRQ30H9E818+NAlUrdM4h9jOZY9G1Fe075L8z9cVHAzmqSnnrItr/U6ULv3pAMm/cP2oxeCAV", + "layer_level": 3 + }, + { + "id": "0406e349-1ce0-4ec4-9c86-6c842ad5b1d2", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "权限策略管理", + "description": "permission-policy-management", + "prompt": "创建kami_backend权限策略管理的详细文档。深入阐述权限策略的动态管理机制,包括策略的加载、更新和同步流程。详细说明权限策略的查询接口实现,包括分页查询、条件过滤和结果排序功能。解释权限策略的持久化存储方案和分布式环境下的策略一致性保障。提供权限策略的备份恢复方案和迁移指南,以及权限策略变更的审计日志记录方法。包含权限策略性能监控指标和异常告警配置建议。", + "parent_id": "b5d20329-a5b6-4db0-8325-2b83ee9a2c52", + "order": 2, + "progress_status": "completed", + "dependent_files": "internal/service/sys_casbin.go,internal/logic/sys_casbin/sysCasbin.go,internal/controller/sys_auth_rule/sys_auth_rule_v1_rule_search.go,internal/controller/sys_auth_rule/sys_auth_rule_v1_rule_info.go", + "gmt_create": "2025-10-08T18:20:07+08:00", + "gmt_modified": "2025-10-08T19:03:58+08:00", + "raw_data": "WikiEncrypted:arCjhUL6OOP3tq0tMlrtoLDUXcFN5JXkHFkoIAmNJ1/s1y5qg9P3LBm2T8ID5ZgmWBKUZ3Dbc60bKc98HGzCgFy3CL6WPzz+X5mP2XoNn8E846x/EhAJdQZ02CvSPcKWPjLrj9WB8eoyVAuvgRl8qvRfFLq1eqvUPCEblXl7axcaXWZj0WVsktrtxjeP/8QhdCub63OC8xdv5YBIqFSFE0oLTHE5odO61XXDE3a+d3HsN53R9hJ+10EH/5OdJhONztMy8eQQaZfon0pv1NWLPRZnis8kO+9Z9WH1i6QrY2zlOkpNdkdFeCle0QOSVdh9sGbtL5aL92/dC8NlHB1ObwAUA8FXzrtEoUSOfuDMKZBr9vKSMJKjOtv3BkSDfVryd1MScwzyjMLbWW2LJSOTsFwnUPs6gU5Oi1YWEkIfJw4jNvAtLwjPSYIcy/FLIwjc4HYzUTMo/7SEue6uUy2nDRL6KKcv9ct7EghLzVG0vkdGSZOIHjhw+7+yGiWt+W2nJX5hqcTUhN5+Ts0vQKmgDI722zqHvkU8EugwGYrYtXVx721cK2w4UnJUu4EhaojW4NCIjr2EUsOYHQufzp2o2PH6xB56dIfdT55XaRGx9LkNO4wwDfy+82V+8xZpk/jkuTb3TGmiXJutwYEp9GKfv8iR1GvwGL6gD/GWgCFGmL2QrbD7pUAMye+/xftFOYjEWIA+U4Jsz41MGPcaqDUz5H4R4vMvPmqmNPN4oa+1SgSKTPox4GxqWLVB7zpYFECaTCYa7jDT93G++8fj+ylqpmowUhayRFsamEpavdXx85/5MTQ+rC+BhHRWd/N40oojTXddOFBSKH4Y3V2+jrDTxrzy869oxTgbkOHWzNsCM6ogDa3eFzH1oyVBAG27NWT38UsHvnsTDOO87YgjDXblTftC2lgQrc4JrcG77dHDTDp+symmhHngwOpzmCTwkkcUVCo8aoCNWHSBxxwtEWx6tYhZqR2N5JHuJHuBaLU1ipUc4OhJsxvZ8bRdU/UqA11Yly3oVljYGG5C4fzweb3yB0/Z4RqWP/jeQu3Q8NS5CcYttqraoI956pNJzJPnkk7TGBG6pbhYSfLP+86O3pRo9XIpqTxPYPbxTiBp1B4iCcWbZ5PpPeUurauBX9B0scUjl4Ct3C0W/arnRx5JKF9Lp1l8QajNBGdXXmWMm4V9m4k5qNJxVAv799478EZFGRN6UB/aKkW8rr7emXxhCreCL0HbB/UPg14brYONlQ3CHPhZ3Ix1nPJ+zeKVGWhn2GHxCuk/hGvb4sI0IFpRyQYTbSaE4zRaDYzMR0mxPeT+qOlyX1eGZfjLwsZKtkl6F9WcR8EoepjX6l/vvh2R0Wid7Q==", + "layer_level": 3 + }, + { + "id": "6d3c9aea-cd8a-4031-b3a4-7491202249b6", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "Apple卡密配置管理", + "description": "api-card-info-apple-config", + "prompt": "创建Apple卡密配置管理API的详细文档。详细说明配置获取、设置等端点的HTTP方法、URL模式、请求/响应模式和认证机制。涵盖Apple卡密服务的各项可配置参数,包括充值超时时间、回调重试策略、防刷单规则阈值等。提供实际使用示例,包括获取当前配置、更新服务参数等场景。解释配置项的数据结构和有效值范围,提供配置变更的生效机制和验证方法。文档应包含最佳实践建议、安全考虑和故障排查指南,特别关注配置变更对现有服务的影响评估。", + "parent_id": "04d0a6d4-e8a9-4e8c-a8f2-bee9fd409e56", + "order": 2, + "progress_status": "completed", + "dependent_files": "api/card_info_apple/v1/config.go,internal/controller/card_info_apple/card_info_apple_v1_config_get.go,internal/controller/card_info_apple/card_info_apple_v1_config_set.go,internal/consts/card_apple.go,utility/config/models.go", + "gmt_create": "2025-10-08T18:20:13+08:00", + "gmt_modified": "2025-10-08T19:04:12+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBuUbm3n/HylwaNIVUMKnhGi/Hgcopm/oQ4lcWfRCIkkHsiiTeu/ue9QAKwdbXpDBVY/P3Qigua05nKAQFPAwVn3WVT6n8PyrbxbmWxlX/Dr9E8oxhzTn5RaBjXjsaww+IOXyA37lEwC4a5tWnw59MOF2aurMPzaSawPSQ34tIgQmu6Qn8ETjIv1cwEItfDy7Ibtlk/RELXp791EI0CwKOC5X7yQcy/Qgwcm5Nr18sS3bULKQ/1RM1j5/Q6iPNSTKWyEAHUgcC+hnoha/jhBaiiBFLTW31hjoUkzVARhihUKc8bjyzsobI2sDWbda7c+fh3gK6rUfQevMI98h/QP43OZl7Ve8M7Cu+Jlj0vxZgA1WeGa69Rsv4nAcbWfTor8uO1utjzDpJauE5fRbsS4/FlayjbskXg/O+QtyiBEqB9equauoZoQ+ZhoxvaujE1dZOJgB0N7hleHBoPYV3LNI57UtJs7BBHTtdU4F/DgWAYMf6AP86/SGiGRIoaSBAiuXF4D+MuNmfIDZjvIL7N7tboGmG4HN6ngBGx0kfwGOKeKq1ZEoOKgLlZXQ51o0O+K873agX0cfYx6P2sXT55QpyKyv/EoPF30/aM0z7crEtLJrs4tBHLKQIuiKfjA2Z13sChBPIFHKYCsO9M9ly/Eiezx9jmuntNp47cSCZM0f6uRGaaI1/aYeftBkRAV5/hhCAfq5fUiE7aDNHLx0fpwpi+qMkpl6gqwLIcL4ZMPN8yPPL6RL/mdDxq3I72ZsDGUYMOfRlDFZKExEHZDRy7Ic89Wk+mEjZhTnZec/hEsoMan6t+8CIpBHoRk5axvE2mgzY68TEDb+UykPBvKFbNdCAi5+buFYqIR/So7EEbRfJiZY4crBbwR5YmbmWMvK8KIPYsC1cXhhMNKP9LTFDi9kmdvQWq3woH0ZFxMNM/WG+071k2ZKFVVwzTzR/TRNNAFEqwJyA56J0cQ17TwzZp7VKxeGBLI6+esXEhJScPryxNVN8hl79PFX3pj4uD/a1Mze05MVVYU2K+a8qCd4h1ZpaJJR9RomPHIhXxi1XUupB6xur+PugZWExABg91LfdnS2CoCERGkHpDjSlBJMc3o4Fz2J7iyH3O/HjdqBDXhnY7o7GvYBFzBfr1UOLcyH6l9VQ6JHLlI7OA+yAbyB/TtX3LDqesUMzusgP/8tMhcoOrnQ1F5Xc8Z8sDKcs10PNvZeuWCkyxASCirD+bBHG9wWdxod8BKgkWhFwO3I7IOzpuGIFLmOCGOkt2YA8BrJ0KxCi4RQmgR35kPYVQlHIv58VVFFjrhPN4KESeTWyOq+ZgghpDU/ZBW7CVifbND8fzZguEpprUzAognHKAX4uV8z+4We2CYI5M3jfAWm5U4OAgE2hBFAcoNsP+YdC8f7Il8PgulhjJCUtgodbkbJWqEwCG4=", + "layer_level": 3 + }, + { + "id": "45710fa8-25aa-4217-ae14-a73410f49c30", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "京东卡密数据汇总", + "description": "api-card-info-jd-summary", + "prompt": "创建京东卡密数据汇总API的详细文档。详细说明订单汇总、账户统计、交易分析等接口的HTTP方法、URL模式、请求/响应模式和认证机制。重点描述数据汇总的计算逻辑、时间范围选择和数据精度控制。提供实际使用示例,如日/月交易量统计、账户余额汇总、充值成功率分析等场景。解释数据缓存策略、查询性能优化和大数据量处理机制。文档应包含数据一致性保证、错误处理策略和性能优化建议,特别关注高并发查询场景下的响应时间优化。", + "parent_id": "288b9b5a-64ba-4e93-885d-499412ad90fc", + "order": 2, + "progress_status": "completed", + "dependent_files": "api/card_info_jd/v1/order_summary.go,internal/controller/card_info_jd/card_info_jd_v1_order_summary_list.go,internal/logic/card_redeem_order/summary.go,internal/model/entity/v_1_card_redeem_account_summary.go", + "gmt_create": "2025-10-08T18:20:18+08:00", + "gmt_modified": "2025-10-08T19:04:46+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBqF/AgjQv6sM0ab/eWm9Zc2i7CrUWQErn5CVnJDUSAmvbhzvUotPoOifzRMm9owTgiZzFXf8qg/H7WNy+vMKY21byd2lSmn06NgdDtFEAjS3aLRCCk8nGUvX0YWM5O+3y0Jwn9eDcKvfVG1xTNvbumyL67Azpb1QcAI8x8ReYD3s4A205HtSKca8tiqyCsl/ceYDq6Xg4nSvm0ZT21L4vjiYz2RsI6zQf1WkOQtKqEFSoeqKNcNxP/Pmht9nPJkbUtb6OguOmXiRwz8CP7BR7HUjcUKXPUujoT/Fba2zEWZMa/q2Odh/tDg+JUiWSXdZTZPwpURaAjsO4d+yn7JWxeJtGpvl5Y1+oQr3+pxgvYExfD7Pktk/0uLIXbUL29o+h5ui6SzhyNDIfNrvyy+IKj9F8IfYCq9+hJtpzO2tmTz2hS46eqoX66HxcC081e08XNsrjLF09CdmHXEwSUjZZ9gvLocabptJ/DhoKo5vFfAM7tV9T1CgDpD3K2gAusHRUOg5GLVBCjcRVippewoSb6q6JyF0Qr9aV+ktSvuiEhVc8MR27ywdDm92JG00+A4AJItDSFPYfJM2J1knKG+Vj2Jqbhlm1z0IDJ7oEy+b0y1EkpMnG2y3/+DSggZSiZbIQvO/uYG/Cab/zFkbELifNrSVrdOr4Z25EJz55VOhYjcq9fxEC0hFGLowZmWUQZV6q7yGFcj5qQcBPKz/UVyFQFTAhNIpxL0sDR+ClaiHFGwotrSeqUyPF+TtoN8UyXQTSjbdDfA904H/il3JIqltti3+FI4On7WWHgNNuWL4+GrMrqVZuR5ore24S0OcJz8OaZkAnl6ISaC1LZ/0S+Ng3lqTOxvVlzOvs+TMuWK80FBcY6ixKthxI3BzeOx6KuBhdjI6PS0gpqtxEzvXxWff2NUB9YuWymP0o3NMFlXBvJZRR7Lds9P9WfTxe5SK12GEVdWuYoWWX3HxVfOvJRIv4nsl10xQru1mMxf8f8UnT/idBs1cNJ0v4f3eiEUvrwspVYzYjbsDza7h40I9QIItp2EUVVyChbWb+wXkNF1LvS6SdAU5V9UD+sYu/GSjhxNAHNpmAKXmgbEAjDJyEH+4/WBv9KCvpujORaZcdTQoNq0U39t864GLh+4pW9SVMehu5nNNMoOJ0iG9TiwueE+kqJm2Kk9P+A1pOyGlmbPIA1BJoKKhxLe12AnelH9hPoUj5ZzQwR5mYjqsghmq428peD75K78JtJKIXtMN/Y75i1w10UusM5jOQfQ8gc72zC7MC8CmkER8HCT9017AdwDZWnRdl1Pa2g1hgaDZ+pVe1nRwcoZB3ev7N+XmRnJhAlbt2SudhELdmp9mq1/8f2A/JtkEJTMdybogDqanF1yg1S6FHRUvbjjslN/dQXeqw0LeUA==", + "layer_level": 3 + }, + { + "id": "1bb36bef-7cd2-4cfe-895a-726588a9a89b", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "天猫卡密店铺管理", + "description": "api-card-info-tmall-shop", + "prompt": "创建天猫卡密店铺管理API的详细文档,涵盖商品查询、订单同步、库存管理等接口。详细说明商品列表获取、订单详情查询、库存同步等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括店铺商品同步、订单获取、库存状态更新等场景。解释天猫店铺与卡密系统的数据同步机制,提供错误处理策略和安全考虑。文档应包含客户端实现指南和性能优化建议,特别关注数据同步的实时性和一致性保证。", + "parent_id": "c32a3e21-0961-4618-a256-ee1396eca8c2", + "order": 2, + "progress_status": "completed", + "dependent_files": "api/card_info_t_mall_game/v1/shop.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_shop_order_list.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_shop_order_get_one.go,internal/logic/card_t_mall_order/shop.go", + "gmt_create": "2025-10-08T18:20:23+08:00", + "gmt_modified": "2025-10-08T19:05:04+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBtDWVCx1PqAct37L9oLDN6sZVjNa9Ch3OShCJn/kzhZeficIBnIrtnenIuXfUtVRu54GfaWNfbXdZe6evvtyGUfLvBB9ZYagGxmI0e7fGNTwVebDYlI3vfj2gZZT+8AlmtTVcgmrN1XVtiBaxzwhpwmuOalDR0NLwHMiyHwbWWetbQf5t6OWMtxhbw8uR5sdShhBQ69i8kMs7gasHO3L9ef8JiQuzmZab4jt2/xrfjl4dZ0a33GiWO3s3sRpWIvHNJRIOrV6hf5IffMdcZ+R7hrSNZZScyPUg65QcCziiCn0h1g+lw9ryli/75CUEtdbQOfsVaDyth80KMQE5da5xEO5cCTXJMWgpOUz2FphlHtIWaRc4KLjTeDDHJEcsT3KcTB+HLPmJ9Bffm6bu9KYEZOiYE54St8xhGgQ5aFx3DuxS47eI5mm2c5dl70QwWPN7feFwV8k699umCHjkpBK9VJyP9Nx9y79++Lfib9iA7DeaelrZrsy5A94TSKWBeyRHyIUy//kyJR0yTxXJMl2PzYCmzhe1y6kVeZBj4CEnsou77ZBf6Wv5QiomP7c3NEtjyWLFhj6DNu0aHK7UT5xwpuTlIrquQkJKImYvh/iwUbhs2+D9R1TjMpMw5YVCJQ5q+rLJfT95TApJ0NtQ/gK23lM2fHt/tolP9xWLnZDlSWYSV6iFsNWRKoAqf9BHDgJ9le3vZ1FPEl9EgjncBN3bbnJDq9mcz5yz68bnS1Jll6eqr93nSxeRfsT2THN+ocDILhi2/m/iQ3eiE64QQD9sdieF20QrUhBPas/aA+9yyaLtKOioBS2R/6QPfXfHzrZxEFiXBgFwsq/bLVcuTePzmiJkWAQNlshCdn08Gpl6ofPGXLcaV3vjJpAzxmysSPJxfN/9ubB7na7J+oZsrX1qknTBfOmSJR5kZVH7IMJ0xvrvvjt1BHLjbLI3AVVCRFLrcA72WPH1h7pwhBLZMk3p2mL1wcOjUJbnEPniayx+ShuePbZ+pPKcF5PNMLRmoi4beEULlRKyfD9izQo73oKV33Lhn1wmk/Cie5kwEUxD3VS6F4iaXoi+GluVFSmgFF2drwnDjMqCLRfzUWAp1pnrJjRiv6TjdEfzWl8hpMkfaRrkKtAcZTN7KylwN39fXVoFc8N6mvNTPmoQSdFV7eXp0ervzriGjtKZI+kuCXrzl2ZizKg7iir7yyK96aM/gVWH9FdYboTNOtqshAL1Huz2zB+NiQn6Rs/haQcNkTjF2wimOwOXKWLFHWUPnv3KMpLZDS5eXL/T3sNHKkkwqj1ZTQN71hh7utbZNZESsx66lxlah5v6nJCuPRXBaFw5Mr7PRN2A/mN/fXNv+K2m8nSvRUZzG32wf46zNfQOM8lMSfhh5fucX+IPUbJgoZ0jy/nLoTCVmbnlI3gfTZawah36s9OLG1zOW8nU1+9wvKzzfpB", + "layer_level": 3 + }, + { + "id": "25942f43-183a-4e00-be2e-c61ae84373a3", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "沃尔玛卡密分组管理", + "description": "api-card-info-walmart-group", + "prompt": "创建沃尔玛卡密分组管理API的详细文档,涵盖分组创建、列表查询、统计分析等接口。详细说明各端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括创建账户分组、查询分组列表、获取分组统计信息等场景。解释沃尔玛卡密分组特有的统计功能,包括分组内账户状态分布、订单成功率统计和性能指标监控。文档应包含客户端实现指南和性能优化建议,特别关注大规模分组查询的分页策略和统计计算的性能优化。", + "parent_id": "7171317b-83f6-4146-8818-b00d88d2b2b2", + "order": 2, + "progress_status": "completed", + "dependent_files": "api/card_info_walmart/v1/group.go,internal/controller/card_info_walmart/card_info_walmart_v1_group_add.go,internal/controller/card_info_walmart/card_info_walmart_v1_group_list.go,internal/controller/card_info_walmart/card_info_walmart_v1_group_stat.go,internal/logic/card_redeem_account/group.go,internal/logic/card_redeem_account/group_stats.go", + "gmt_create": "2025-10-08T18:20:24+08:00", + "gmt_modified": "2025-10-08T19:05:31+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBl7AFS+0V9EBoppO4IsIlgmsc7A0SALqjbDeilIpHRL6DsPwTdRjUHYClnmKJSuNfACUdp3TkWYbmYMcAGm9QFylogt4mb2yDTK0EN/YLlt/RBQR5SZ5V/KHZILmc/y1KU6XVB6sUYTM82cUmNQnYJGXhawqUhz9I9sjWCuKFxN92r6Ts+uEomIRqNu/nLp1DP/fXR/mOoM/aL/nRdvof1psvVPnHuOq3PwEE0c0Hl0GJz5ZjOE1tuhqSyLAbG5/z2gx3mdUK1vPHi2QuksMlMBPg/06zzpUyFvktulAD2TJpcvz49m6i6FPJti6DITE/BvLQkCwmynKNFHOlZwhdmK7peCkOww6N9EbHudcCRtU/FFyiqSV7pudlOxijj7dyrPR0WaptsYxGjWxXYg70vzVBWXg4baAVjJOv7cO9T5WNxxDhRhnd7/VHAyAcxadzPC/kpSV0f5HZzQbjuiCCG4igGvWZnvD/DXSZDQVz/fXO4DLHglL0OiIqBsp63nrnxLcIl0cTYFEByRa0MWtRBTHqAumz9SkyMtqCZCHtEduLIvSCEKn7tdDNyt0eSpjQjkdflGkrzxmBEQPlZUfmVUJ2leNHBhkTHKOT8yDQzMEdxuFPInwNF+Jl7eLrZjAZPqhfEm/t4WEWxqOsqPa/E1/kiJ5Pk7YrmdqE9+mWG87PWLlh9ex0u0lKQ655K2BOzxxvnrSiMeT8pdZRtI7hK0SxAvC3ARDNt+eFmV9sH5hFs6KNNKmeU21CxBOja+DiP7gkwaFHRJJuTPYBWogRYgUzm180wMZq1N2/UvoPNu3Fu1Kyqpr0vsPi0BdEaclfsJuru6qg6bV16dOiYW41Fy5HO64a+GwP69rp+vdj44Q1TZO7e9JhPhTNH3T6o5fORtAqUlC2Zs4rBQOlhYbhl5fooN+4HfqjQBPYnU4lMQrbR3dbhX+mm2c8pjcOWODEF9nNmovrmY8sLff7qYbdHpgsBkWZ9D7LKlPEANGF0psXr6ouYyHA/+a3HceDZCJ6yXv2XKSgfni5u9x99WpRFCth/GcKvlzJou4D8ukkFuR0lFo5W738+St2i+O3SXhiGn5FagE/jO6SMOy8g8QnxJpxRrku66rc2kbCu4I3RSW1dXWk1L+Bexw2BUqUhsMjWjFkLVIl72YEac2I2n77kuEa+sUa+OscA2Uih6FeWBvnH/CkPR9cMPk1g/EW50Tll683aCYkQEqeyW6XgHf6EW3s/bCLbnFX9Zdzn3wfuRdomyBLf/sNKrWMHW4+KJNeYPvhhlXK4S5Lz8aGlfgGxrsuh2Vhy5bC367+Lvk695IsAYLi1b5PVIk+UTBVEsGflVvZfaNIvLDZns4z+i22NR6V4AXyry57N0EGLATzIKiiIbKUHtr2pwj06mnJoCJ8y+8DtdT2VZN9by5vIfsmkiOF1Z7irKQgVA4Y56qa1nuKZhMlKFY3IEXNhUIzFo83qfMw6w+3dzuELr5iXCHZOB7Hq4y9t1oKmw/UIGOw2qXtxKAJonahaTg40BEdOGB/ghKpe3uvjVtoGtCTjlgYP276fVmezwd7jeAQOHteUPQDcilw51riNjd9VUdCaD01w==", + "layer_level": 3 + }, + { + "id": "f9c16741-f716-4147-9f51-cd748e8960a5", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "缓存配置", + "description": "docker_compose_cache", + "prompt": "创建Redis缓存服务的Docker Compose配置文档。详细说明docker-compose.yml中redis服务的配置,包括镜像版本、端口映射、数据持久化策略、内存限制等。解释Redis在kami_backend中的使用场景,如会话存储、限流器、缓存数据等。说明Redis配置的优化建议,包括最大内存设置、淘汰策略、持久化模式选择。提供Redis集群模式的Docker Compose部署方案,以及监控和维护的最佳实践。", + "parent_id": "58118687-a7d8-4b0d-b788-36481cba182d", + "order": 2, + "progress_status": "completed", + "dependent_files": "manifest/docker/docker-compose.yml,utility/config/database.go", + "gmt_create": "2025-10-08T18:20:37+08:00", + "gmt_modified": "2025-10-08T19:05:35+08:00", + "raw_data": "WikiEncrypted:h7ADvj4WLJHyulzCl+z7kAZDiR5uyhkNoy9DDL9YABhaEGF21FDK2lTOHOfPDhj7T/FDn1Ku8tga0alrgEkw/RnLRX29SXM2cScpouF3wTSEeO65NpPQ3qqRkvoVmI7/Eeg0bM/cK2Jd8E6G+CfBMqrXmpBoSlfnKbzufPSADPQZvbEn9P/riWA9fe9D7wnl7nDDdOyAETPdiUlfUJm0zdfQTXnm9zI+xF+HDJLOPRbiCrOtd3kCj0kpsHPy1dyDK0LhX53PpQrvYy7mVOznIiAMdEi0sxVdvdoX/hJ2mG8QALG9fBdajYUdDJJofEnYoEn+pBMge8BFflGFtG+8KDidpc+Z5MbIcyZ35zpuG/L6+UnzjQqYYmL0hY8Ii+zFjMDtyqWBW4QQBWME7ad1l2KdOSYL9T39EG/6ETY7nKYnrToEXLMH8diq8/LiZ8wLQ+DzXv6eTXG+kmCbkgICkwSRrJ/bPyeOe79Rz9MUJSUA7VflvcUO8U+LlJxpWGMQGGSSkqTs0yFP1zBHKLLJZQEJLrwPnacqmqi6JipdZRnDub9T/812Wb3XrCrmTaya1QcyE6gxdHBdL3c7it5mfTFia24pNkk6uot8k2m5242PnN4Fqdp0YtnhZResM4sFUc7qlNTfjzfUxafk5AJgP6lzaFJsnJf2I71o7DbODP6h5yhF0V5h5euEKDwfCic9MGwS2uVK251XZrmCLrZveGK6yKr/yZMKPOfF2xj0Ybp2FaLOlFw/ufSP8i/eNEvSs+p1uLteKwhCuM1ka3iRjtq+BboN+u/1EthGBUXo9c96Rh838yBDN9cxDVWypm4OazaaN0+SPOzlW6Fe2+7tOxj3fylS3oyDM0KC2YkRchVp8ouMtW0P3dXAXWNFx+dEel7qOuLgfcRdOdkrQhfAsbwSUcjOuksYygd1j4gPTTxYmV/Coj4nzMfaOKq0seHLa9x4VDssXqM4XspnrDeaUVYziL0OeyBOfdlWTA7T9aR8+aCSAnHbBkQpqj26MU/V4A7qmIX6I8hjA6yAtuZS3GvtdbIM6Pr2+6b9N71D40Y=", + "layer_level": 3 + }, + { + "id": "b8ba5dc4-8d15-4b61-86e8-07a963bd3fa8", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "数据模型与ORM映射", + "description": "data-model", + "prompt": "创建kami_backend数据模型的全面文档。详细说明所有实体关系、字段定义和数据类型,包括v_1_account_info、v_1_order_info、v_1_card_apple_recharge_info等核心数据表。解释主键/外键、索引和约束的定义。阐述数据验证规则和业务规则。提供数据库模式图和示例数据。记录数据访问模式、缓存策略和性能考虑因素。说明数据生命周期、保留策略和归档规则。包括数据迁移路径和版本管理策略。详细描述GoFrame ORM框架如何将这些数据模型映射到Go结构体,以及DAO层如何实现数据访问操作。", + "order": 3, + "progress_status": "completed", + "dependent_files": "internal/model/,internal/dao/", + "gmt_create": "2025-10-08T18:17:58+08:00", + "gmt_modified": "2025-10-18T22:08:05.6535034+08:00", + "raw_data": "WikiEncrypted:Zb5TNaG1u/mRrgPr+sDyCrIPJ1Zxavjbt9nmnu5AenzUzYPN5uc5C6wzIS8/PeNcv6LLiygnuF5xUDWa8XqJE7IjIV6eXd69l/JtvP6o1P1jy+3cnXGgKfnOxR4u4Q1TA3D/7OQWsDjnaDKwT716Jt0VRpxvRuCniy/osjCX/ffnYvfk9AAIeI7UGuqdi/a/Q0ZNu1ehBfpjlzXvUksWttBcvkkogdMbgQM+B43YQPtYWBrjQ3pwYVOsigQGO4N4gyWkvlt2wL2okMZNmY7VOjMavyD60JAJ/ZKp+VwsJ1qEdZcOqWZRrpeZ2wQKv1saav1NxwksIJpuCEtUQJYLDelN0JnDXA3SBXf7v7weR09c0STFwo2g23KEApdXKD/PRFJepZ72hdodaaVfJCuRdnjC4sGCpX1re073+5Vrkyw3Xom/qjbKTAN3qbH34xa9LnE8/iCyqvJaqZDwuX9tMjlRMhPrQPB+ouFqkb/MzKN9QNbEvTkmEwcWFupDNtIGPRxUoXN4tnwrvfljbgLk6y53vb/a/K+uXmb0u/boOg2Bj7bOb4lzKppPvHOyfuSpPVb3FO8sPJqBd3Tj/Lty0azBKxr/wnC4Dx5suaOY6QrA63paR2w5oEKyxmilj4gu9D37dIez1SA7yVdWcFoRP+JIwIGqiGbAFJl00aOaMPelGtOdwYBlVDp3fTUf2Nw15essR1LYfzzmoS0v9+gJsw/vqR4Fu96KwBr69F4q+4ut2b/gEdMtyGK5nuYTKPKmo3zcjudH/jr7dSyTaC32/Hze8omvIei4x+zrCZHvqUgkgMwD4MtGeC8uMU52QxNoyNs74Xi+flRNtOXAnLJMyP1cZG1Cj9NTnL2jtufAuvPxQK0n1Y+C+jT+l8npdzsFmuI0ScA1PxwuKEbTTTTXih9+pWvY4f/dRtzHEiLKmKEqNjho4x9Eb59qaK4cXiDaalTAZqVh4Dhp7Mj2L6UhsZEDW5njhNwA3f0oWolJ6kChm49sIwpWcOZsh19LRSYe42TuHcQUa0tRr2ueRqlBercZSw4CF/5VXd3LkOziPF8aCmtNIyYTbGpIG8Qi1SN1KQdDpGBFOLe77qCuRe1cDay3STIZhUDzGX/J3YraqBu1EAxAHbnjBJtPyPsJ7Wpt8H7OqqWEkFcK+dWqP29W9etK1hnqDuLCIwJjGiKerIDItCmJb6IWwuaj07jWyKgNpKVYoLPfw+8ouy5op44yeqEACM0hftf4+jpviiOqtoPCOE2mYjCr1CoPwvteOWj95x80op60xi7UPRjRqsCWeg==" + }, + { + "id": "93bada60-b20a-4977-b82c-eca224ca34f6", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "风控限制逻辑", + "description": "restriction-logic", + "prompt": "创建kami_backend风控限制业务逻辑的详细文档。深入阐述IP访问限制、地域限制和设备ID限制的实现机制。详细说明限制规则的配置、查询和生效流程。解释限制记录的存储结构和查询优化策略。描述限制检查的性能优化方案,包括缓存机制和快速查询算法。提供限制规则配置的最佳实践和常见使用场景示例。包含限制逻辑与其他安全机制的集成方式。", + "parent_id": "201b5004-c469-41f6-a407-c98892822b49", + "order": 3, + "progress_status": "completed", + "dependent_files": "internal/logic/restriction/,internal/service/restriction.go,internal/consts/restriction.go", + "gmt_create": "2025-10-08T18:18:19+08:00", + "gmt_modified": "2025-10-08T18:33:33+08:00", + "raw_data": "WikiEncrypted:rmn9+OO+cFYNLeMVIfracfb63BkhhjJRyqXSuaq50u8NkbHHDfDUH3Ca5Nzi7BICsqkkjM6/JbGxGiDJum6puODFwc0XVrFGf1U+T3ppY+/l7ubsf7Cq0hWzVGfofjO8CwBujarPvK9ExMiTDu025Rwb7jUN83Lb/JtpO102m/RriiKTWdi9aNMMkkp3W1AiSykNwum7Y0nIkZrCVumEqNV/igPyvwAD93jEa4oNpXCarHJ8DcdrJwfPvG1U3r65KvfI6jQostXVwoJJylWNL+CJOyoYXBZqwbZZ4UomSfq0cn02py2oooaRW0XhIus1SDN2j65f333RgJCZjNPkF2JNAMF4diAzD6A3QZHj9M245QSoYy0/jB5M/CWJ/bvbf20OMhNV8ksFDKZqZ8vNXERLVA1Ji6qNFmyoBuojPd+ojKjfbXkFmHvKRYQSEsK1CrJ/o03kvEDiCyCWjWqGg1B5/kSYC+eUhE9akwTemjnQPmiPwDPyBhW9GVqAgZpk7/W3gEJz8sIba4wStaHry9+Wcvq4oZGOcxL3eccP6Cw6xTpstRyPkn7bQuS/B1+CghM9X5qDMhZcsFLAVmXBmkMnUckcRmK6BFd6AZADu3Pn9lqRed2eOoOkjCT87iJCw47E58Rm5AJh9+zo6JSiCHhS/C3C13ZX9LGMgTyrisHtz+73RbcV30J61OtJbpAu4GtbyWNDhSc1k4uanUxHKDQvgligLfogEbLuOB4nJB6ziKC6Ho+xkMdnsk5xDHr5+RWwDLHGQ3NLvIKl3eBRjKOM0zu9DYtTytEQVHLkAwDQUlaRz1w9FZR732JXjtbwR1x7DZGiSUNNiltyTZNlpvBQ2iCPqbTZ2hOAdetVTrlCqYfOBPpeOQ2W62vYDXNzO5dn+RvQU8N4Ullm2QwmoAA+0GnWE2JrnmMXwmjcHCvQCWRFuPtD6FAl05M6Bj4+4HTrCsgpDtULVpdsgilGafLN+ARsqMvPjZRZnEc0fJM5jOhW4w23RWJLz0r84z9x0m4Q/ko1yBSoLphHozReNnKcjztw+ayMsmwD9pUW+AIzVxamjFjXV2B9cGKmIo/h", + "layer_level": 1 + }, + { + "id": "f5173a3f-1bbf-4ffd-aefb-fedf3a92a65e", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "账户数据模型", + "description": "account-data-model", + "prompt": "创建kami_backend账户数据模型的全面文档。详细说明v_1_account_info实体的所有字段定义、数据类型和业务含义,包括账户标识、平台类型、状态、余额等关键属性。解释主键id、唯一索引account_id+platform_type复合索引的定义,以及与用户、订单等实体的外键关系。阐述账户数据的验证规则和业务规则,如账户状态管理、余额变更规则等。提供账户数据表的模式图和示例数据。记录账户数据的访问模式、缓存策略(如账户余额缓存)和性能考虑因素。说明账户数据生命周期、从创建到注销的完整流程、保留策略和归档规则。详细描述GoFrame ORM框架如何将账户数据模型映射到Go结构体,以及DAO层如何实现账户数据的并发安全操作。", + "parent_id": "b8ba5dc4-8d15-4b61-86e8-07a963bd3fa8", + "order": 3, + "progress_status": "completed", + "dependent_files": "internal/model/entity/v_1_account_info.go,internal/model/do/v_1_account_info.go,internal/dao/v_1_account_info.go,internal/model/card_apple_account.go,internal/model/entity/v_1_account_history_info.go", + "gmt_create": "2025-10-08T18:18:21+08:00", + "gmt_modified": "2025-10-08T18:33:34+08:00", + "raw_data": "WikiEncrypted:3dIsHCE5EGeVKP2C6D6lOCkvNeCOXjZSxEjRTy1S7+/QWb+uLuqEj23E3Do63zz/VSQitRzz21hs9T6IKnBpbmFXXMfSvZCOf+XeR2xuRYb1wH/WgEYG1zwq6ZO9CTp5cMDe6P1T/h6F0mbTsnvCrSvEKO1R4fPO1j5lneD1/OwacDkV0fCoAoDz+bX0fIwhOjm/TH6hjDIgEJxqPJX+FgDC/cj748gYlAdIVVehBDfiZ2A0qRNeJ7QLMjxkgtpMDnB2iX4uTRow/hXyREEEK/kCS3G95VWuqp71XOAZ1Ez6C63OQ3cIF8KqI5pxvkeO/Xv0KaIrRRsj7AE+MB2EYoh55cH1jek5Iwn7tP6HRyYfnHa/nnO1xK/+17wlcLkf29pTGgu5PLrzj0+uJirjORrc3SJflFtiR4BSzSrSEdT7PNVcMhc3fViku3v3GUuD+56BPacBo7+KZLI6nJV+0qHbPv4ENuxHLu3TxQCqgjwJtscQ0GjsZFx4wm5+jOx20DHHQaOFsUymNgjT03Si9OtMZPnSIJSz5L0ypcgifxGHSh5D4PuO0cxVgWA+xSyOLnx2WRIIHEFgXRdGmwzvx3gE5/4EVh1ezImJ+4JhY0/lOuvWaIWFANAQvxBbcUAPiPnzlwcMWHEk1kPqmQ/LEIJRBQY1N8JxaqtCxaAUK+Bp1a1Ufr4cDO1lMI4Jjk0Q6bP6gpuSkETykx0rxYSvhzQg4ZwdG536wrJqFg0GaMMMfXJlSIeBh0r53JKdO6+6/km6NM1JYA8jFgychcjGcay6DvFDDgNCfSTJClp3sZybNIbWNT692xtrfAL/tLvkmM+WPGdIHIaLLD0OU5jacGmK0GKQwUetfgUG0KHrQkLe5OjN7j71O+VP0EokXMXnF7UkvBFEuXvjFT2ceyGAmuG7NSdtryzFM+oJxhzvS8ybJd8MA/cyDsij0uHnD4dLoQvc4E7Ree3BW5QEAIj0zfp2+dZSpkG1ynDuLVc70jV+eJX3znkvFeTx1nAzEFzeyiKaD3CsU0LZihc2TxaPMKtslWoGKelrGN1cPJsfwpuxRemP2rVcLyldPD8PH0XCT62SmfejaULlVU+zpO2za4huGsByfK8xYeU+tKUJ03leKqFSC0ql/ggakUhbQ+gaID+PI3Smt1AkdzBD/rRQHaNGS1XSAeXLOo4xclv0Bg+6VFm0EStFrMc4K9uSlfje37HPvFh1IOZK6y2vsZE0kr1FgcFl7F1F4WKJeOm6LsfaPWfjvwpcxt+Kd1JoFy+c1ixuqNFpT9K+4fsxp48ww3R7+FSY/7n/vVJFByuMerlKpU0S3Ad3DcoRg8SUs61sHHrIiyCd2LOZjvw4cTQwm00dYZW/M+1BNHluKGWH7bH9tMOmV2EZbRGkdB4kMfRAiZqgR7+E/fa1IWyBA+UROUr2Py4e4ao6WMhqJMwG+s3mMH4FkDfCuckeqje5zrUAlB81rWBIA7rlXui9i2eAIe/jQRlse1kP7mCieLhwFHXD4tGmzjXMdL3TaFP6a/ZlJw3rS70yZnloNcsJx5ABM2vD3qKVomGE6SJ9405a93VNO+tSxIQE0VwP5baf8Vv+9WzExpT4NhHCYs3htDB+2RtiPJXFL8GuS6UhD8Df3D7fzUYcVVU2vjc6avg+ekXV9k15VzJRY4fkOwo16GBMhz18wToI2o4TQ0HMlFOBU/6UBCh2D+2bxy4F9YqYSZvDNE5jhg7gA8yngafc90aA7w==", + "layer_level": 1 + }, + { + "id": "c423075a-af3a-4aa8-aeb1-eca97be6acbf", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "商户管理API", + "description": "api-merchant", + "prompt": "创建商户管理API的详细文档,涵盖商户配置、部署管理和盗单处理等功能。详细说明每个端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括商户配置管理、部署信息、盗单规则等接口,提供实际使用示例、错误处理策略和安全考虑。解释商户多租户架构的实现细节,包括商户隔离、配置继承和权限控制策略。提供客户端实现指南和性能优化建议,确保文档与代码库中的实际实现完全一致。", + "parent_id": "693df6d5-abb1-4b0e-b0ee-fa0cfcf10ec3", + "order": 3, + "progress_status": "completed", + "dependent_files": "api/merchant/,internal/controller/merchant/", + "gmt_create": "2025-10-08T18:18:22+08:00", + "gmt_modified": "2025-10-08T18:34:16+08:00", + "raw_data": "WikiEncrypted:BG3lFnKLVTvBR2vGYwCPybGcuuvxRs2CfAl0PFcG7KpCNLgP8WOvFGabZLnsy2GsEox7gQAXhOjRTiMKQFzbYy/K9GotmGX2DI90LPZsAe9sSXhANcWDT9nqO0uGP02OTRTaU91z8NAKkJzcQCy8lC1wHEYEHYcWf2Lx8YWDaX7dmfJr9Py6QmhKrP7IiXXndM58ObteVahcfVS9RkUFhR2ip7tsNTVUDpwvtYtKD1jquWDRzjcmvWx3hCMXwiHOKKnvVJKzJ57Eiv5h6yBL6MA1AVQ8cz4wASjv8ELaAah8GB2VFp7+UuNl0h1Om0WF1CkUQDZ+C1+4LU6Mv5Hj7rRrGCz0Zopyo8fAF+VJBGLijJ+uszi1hpN92Sbtam8Qd5uzNQalK55BPCCDCb281/lA73rAZVZZQbe7RlLv4Zi4xEw+OgQjuu2I1SzSq0+vu5JOZfep9xjXL9ULwBdna1tswOf3w1mpQo19IRcjaROAJHtbKF+hbDSCi7vS038aD100gLwN+uG7ZQfgMRVr1QFURn9cVHuyb26Z9NLxTwGHUHj4tDhqXPa6uUDZBbTMGF9R+Um8Hj5ARPqearUCzBD3vJig5KF1yeLYcrGh+WBpXpyGD2wlqNWsxcppyRjKz88diapNRnTa21zs9oQpSSOsTfAGUTQLpQvsSaV3kLIDV07sCC4k4fKapYgoCCMeJmpNqAPP/6M7D0raWnNf2DOKMQdyWzbfn/upcYP+lX9+X5uEzBZv6YzEBQYfsK1Ah9FjHGValRvXCKHFFSgmxjcfUEHF8vxOHPG4ODKAcjLz0VHQo3Ec/EJE67BXpVP1rEz306Io1vwGLsQc3YF1qdDimMKJCcxgUSnYjJyhtHOHNG17PNQfNwOOf6lLJsEXjn2jR0mO1/3hgpgxXMlv3tQHcv8aFQ5lyjjuXFjies/ZQOnLQ5OWGOYUN2WtrxyMf0OA35tMf9WUgzkIY4uYeqNskZqV7jQcaqB9OTOUmVPO979hfZZemNaew+jBfMu9Ib3NsGds5XeAp+ep4qMyU+NErQiZShZaLfokmfng9Pb/OYBWHCwMOwvb1TVpcoZKxBQKCNSo/8y2YUOQiUrlng==", + "layer_level": 1 + }, + { + "id": "f6a6925e-fe4d-4480-858a-b25ee0c9c478", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "双因素认证", + "description": "mfa", + "prompt": "创建kami_backend双因素认证(MFA)系统的详细文档。全面解释TOTP(基于时间的一次性密码)的实现机制,包括密钥生成、二维码展示和验证码验证流程。描述MFA的启用、禁用和重置功能的实现细节。说明MFA与用户登录流程的集成方式,以及如何在关键操作中强制要求二次验证。提供MFA配置选项和安全策略,包括时间窗口、尝试次数限制和恢复机制。为开发者提供MFA集成指南和用户体验优化建议。", + "parent_id": "ad94de09-b7fe-48cd-9a8a-bcfa78565c2a", + "order": 3, + "progress_status": "completed", + "dependent_files": "utility/mfa/mfa.go,internal/controller/sysUser/sysUser_v1_totp_set.go,internal/controller/sysUser/sysUser_v1_totp_image_get.go,internal/logic/sys_user/totp.go", + "gmt_create": "2025-10-08T18:18:35+08:00", + "gmt_modified": "2025-10-08T18:34:59+08:00", + "raw_data": "WikiEncrypted:1mQkBhU7zMZB1o4VXQ0tIfCPNGelihAe1OHsrdClRIeqyrooM3s/X6t2e/65cFvRA3wivlmlEYtSHLhr6beRpNTaPYgjZfzEefiNa064drVQuuctg/mfwIsGR35APO/VDcX9ZFkziinBYT5GRdGH5ocOSmcRtk4JQHpWdkRRlQrMDfe7USm4d6Oy1bKF+J5efS6sSNrAkUe893l9uLmJNJNDuX8NQhkyhtfomjEQPi9Tq2PcSrOcevwppvH6NtuSalX5ypD1YIkUl7ZaEU/1zObuuUwph64pUX1VrHBDvkoVgczCFtDgixQzLQFkh/XRJfx8ifGiRBITvz03ll9cPtj4NlDkM/IAiuYfHRgnRQ248qf9Z/zug9sf8V/9kxC5a2c0uDkwN5ZEz9hBXultyzCfA/PLYJioazACT+wyP3ijM01HLzgMCnj7tORPOujRUXAtsibTde5zPgI4Oy3+oHYfDt2DvdaiaYXnnX9yTTFjKiI57aPg/ib/mTwwclY8DJAwdLBeyYDMceMfL8lm+jNCEGmKZ9CIckBZtPvoe6kBU7NwRYKWs7g+u9s8eBXs7AP9tG5j4RzOAWlrCHlKdfGxmluqwa64nimel0aXHugmUxB0Ge7ZclnFH0eP7+8p2tm+kmoMeRTeSJKeipKT2+Hxgjax3jvErOcMx8nV7srzcSx1hEyOVaJdzmiKetumFY7oJmRlw3d7iMbAX5ucyYDBLaKt37QwdApq5oN29uQqZk0j03vcas/2T2gV2G1Ob2jEU+U3MgQhM0ZjcESR6TfqVO5FjNVF10M+EGHnIsbiMD75Vl5inoVYX8CdrQL5r2Tj43GB4IfYDl9xD4dC7AvdBocGwVGsNe/N7DKKbNAiqb2DBsy8fVoqBBR0GfiPID3yImKzC/4ojNba7ZDhr188T7grgn6L0Wq5UF0OWcE3jZliEtTXueK0BaoSomqRtELn4g2fivTK5YW/cJf7OyfQTG5FwHXSIbeUrQlAjkwVcIg3JQ1+kdSylLxeYK6r5TALd0O+JvdCBPqyRIbQ+d6db5NS3SjCVlQJPnqrx5g08XCdGkU4pDyMtxAcCGAXpMG+5zmqMOMTdqJQ3S0myMT9yM3z6eG8PMg9FVk/jA1OcL4EEcHrU+sdjY8TrRM79veEkppNqBl7WquDxxhnybGGchFvshdWwZQjHVlZOvDxCQkBww0RzyvWA5HI/jCd", + "layer_level": 1 + }, + { + "id": "e7731430-b57c-48b6-b326-56a4297fa5b6", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "Kustomize配置管理", + "description": "kustomize", + "prompt": "创建kami_backend使用Kustomize进行配置管理的详细文档。深入解析base目录下的基础配置文件,包括kustomization.yaml、deployment.yaml和service.yaml的结构和内容。解释overlays/develop目录下开发环境特定配置的定制化方法。详细说明Kustomize的资源合并、补丁应用和变量替换机制。提供基于Kustomize的多环境(开发、测试、生产)配置管理最佳实践。包含Kustomize与其他部署工具的集成方案。", + "parent_id": "519aff94-32db-4783-85f1-071d6c314ff3", + "order": 3, + "progress_status": "completed", + "dependent_files": "manifest/deploy\\kustomize/base/kustomization.yaml,manifest/deploy\\kustomize/overlays\\develop/kustomization.yaml,manifest/deploy\\kustomize/base/deployment.yaml,manifest/deploy\\kustomize/base/service.yaml", + "gmt_create": "2025-10-08T18:18:36+08:00", + "gmt_modified": "2025-10-08T18:34:17+08:00", + "raw_data": "WikiEncrypted:WN+mr5UPYRkQAIvPkaSGEMgGA/r6qHO++eNCqp1GOm5Famwo2gREIdrRZbFYAcnVfzuhWGEYNkfqjO12Wdtn6OVY8JsLHupd9bhIih9tudckvDpIpZj4Ki88PM2Oi9v72mz4Hdd04K+K1QMYq4IH9xDjfo8RW242uY5KblUHeNf44iajTypg96u4nFfW7x4bKOUcMWVXoDEDC7J3vi6mGwl5XP1ojo5qwTFE+q/LU4euWP/RJuYV3y7VXwgXNWLnS7DyzXbbgmWexxK1a0cO49xAF+IgBzPUSRwJQDm1x/p2IaVPaKkVxEe7bgdLGaLrjO/d2UAmGlQXxJzTZafLJljR72QxsZvQPDpuTDgtPEClhtk55C76kYSlCtBZO04L5ciAnhrlH7Du0N88puX1lGxLJ4THQP5l8sQt4hvEcMQnbnfC9j9kGpCJKdcoyzPlJ+nbHvge1aEXA1UR/kkti8qNaYRau90WS5hn2y/bMqBKoww0+uG81JNWK3QSHXf8nZ9TOtkial1F6sqRgNNa08N4YuUtrf1Ktjyqb7kyQBzi/dQMasCJsb5lYySDv4eXApg/Kwhpal9B1omiTGg2GVo8lhpxGmUl8BnlWZDBVu0OnjjY0Jh6mlpqomtXjDlRfX49va7iImq4tmiZ12r7EWgsV8W6Pd8aLL0nC3jZOS/5hIcZ+vCU9ihoiQor074hyDtzDUFPRmHzXg1Oht8DYmiaWH5MCHj/kmpJDZrFw66nLe4IU3//RdL+HP3+1UUx2AkW24TKb1iPzflOWY9pvdIpA37B6IjcFJE8Gv+90T20Htw1nkFFQlG0QsNClNVbmhK+Ra9EPzOl3giD2IAzvx+S4oHbefenQqz3KSBNsV8IVoRbi6af9sQKjSjXOuqrmMefgdKvg7F9LJGWIvhxre7RilxpYZR5WGAwAKoa2G4qy1DUwj4OzkD8eH0r5TvowvEuCHHcYUC7gc8Vf0rqX8ZbFO6bUy3pjzRsgeX4YboNgQ/83LYdF/+YQ0Kpno6C6od0MbxPWfWz3pswD1Y8cSOuDHGDkx3pTdA02QFKnupx1wUtTzwTjy4n6B+/kpKURZSdaZf3N3YL9vLaiXkJWC21spdhL0UQyo1qnNih+AkOsbQmT0n3VkQtxOekCvPPAUkvmvi0J9ES87PKNzsU0GQKPyjv6SO2Q8Mgr+6KAeoim/7T7OH+x+1qLz9+T99A04ltlDvuEdmlMIABxVmhTPZXvbQOxruqW838L6JrHQZVE6i2iBOd2BXuFiSoSxNN", + "layer_level": 1 + }, + { + "id": "7171317b-83f6-4146-8818-b00d88d2b2b2", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "沃尔玛卡密管理API", + "description": "api-card-info-walmart", + "prompt": "创建沃尔玛卡密管理API的详细文档,涵盖账户管理、订单处理、分组管理等接口。详细说明账户创建、状态检测、订单提交、分组管理等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括沃尔玛账户Cookie批量验证、订单状态重置、账户分组管理等场景。解释沃尔玛卡密特有的账户状态检测机制和分组统计功能,提供错误处理策略和安全考虑。文档应包含客户端实现指南和性能优化建议,特别关注沃尔玛平台的账户状态同步频率和API调用限制。", + "parent_id": "0d28da6e-d972-4227-9fc4-ecf26d5c6b2d", + "order": 3, + "progress_status": "completed", + "dependent_files": "api/card_info_walmart/v1/account.go,api/card_info_walmart/v1/order.go,api/card_info_walmart/v1/group.go,internal/controller/card_info_walmart/card_info_walmart_v1_account_create.go,internal/controller/card_info_walmart/card_info_walmart_v1_submit.go,internal/controller/card_info_walmart/card_info_walmart_v1_order_callback.go,internal/logic/card_redeem_account/operation.go,internal/logic/card_redeem_order/process.go", + "gmt_create": "2025-10-08T18:19:17+08:00", + "gmt_modified": "2025-10-08T18:52:33+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBp9VMQPniJjC7MmBrb6ZdbLGBmfEuxNN9Ju89NloKGS7u9sYWjyr3dXMhm3kDUSOZPZC9/KLRjcFlQhIuYfLO7R3L1hFLamXrba3/G+Nzuj/bA/n0ZCcGJ9Dvu+Nuxym5NVi5sleNwjnsroBcq0g0gN7jqYlqXUpRU78rBE12fWrFZ1r1SGkcQ5G3XsL2baLn0N28+pjVfzwy+BupbPPYcsQJiZ4WhRuSzumI2qBhiQuJwD158bGgEdHMOXShVwCItaG3UMtNncIIQ2xZfu4QBG5haVlAYHLXLodz2eXh2KTAH+LDtNmL+lnjDSC+PcuOs4m0eNaH40XLWCr8wm/2xoHW8syTo8k71o9BL5tjPbkAWBdEqGUX+MSvYAqSImwkr8zV+bwlZB3Nn8u34UNS2r7G9nWjj0PAJDbIFdI75aDMbE7PL4k9rbqrUMnYsE+Zkv3t5kw4SgVl7kpaBujJTYYMAPSDwxci+a5k+bOzCBigKeT6/833XPzDZUhubutA+gAzsbuzfe0Bp717p/RGgii242yhpRT7FP9KBT55tplJfmyjrA36i2xNCzHUhmmJ7YrjcW+8X1Xub8JqcOtwch7kUcBA+lcela+Lp2fvDYA8C5OtkULqkus+CLNSvQiOmPuwb/FoxBv9zNyqoM/1hUAmKArkIGgcApFbz9NXzgpztrL8N3/vqTfZUCBIPXc+xNcKfucg5073b2evauSihZKEYGedMWHOplNMgmA6HU/ft01XhjNFzf/PDpj5rZBlSHF0eLx+QtVif7X0NuMVUpZlBm/Sc7z4eAM6s3LMQHu7plPbUmPvo/32b3UJwYbmE4dbfO1lDrfcHub8DtESVk7Hhcf3faojPEucgecblz3VioJ5WZJUE4qMNmKn3zIDTZ46pg985NGUdnntnViNlkLBz6ygGygmeKaevxHa2Oa4/85hNG913mc4XOv1RdZ2AcmqUy8DXYPv80lSkaYr6BjFW+VBDH5xqmUI77J12dlCHzfHYq0kDDUj/JXk5CKaUg2bvQGs2Dz+26gCfJb/4i7Ypi8lM1MScG0Fwezl99C/DaxBJ4zZ/xxTn5giHLPHJdqqs64z5gnRs1rGd9d8KDE2GYy5Rymp7U6khgtMMdspybPgYuSu9aU3nPBFpk0WFm/V+6UOWdxyBqncJvDQGvJ0SoKZo0FcV6lvtsrMfF/FuiGEYor4goIcRNvFgBiOcW6z4dhjdUYfrOrDWA/GV+uhvca+HPt7kOg4kWyHlgPDfxLqotFw1cImhvx2+yfYg7c8WiQ7UXMA/3zQuTvWgM0su3coR5fVgIQ/nLjbMO1htzBmHY5bB+3qCo7cfXmQeG4VKLx9nS1x6FEn9cd3vF1fYkftJ1yDINMXmFYM6hcXTo3F74IcLBnZ4RSUrYHIus31uTllKogCJuHbm3vBsJqXxYmc9qQSWxgojRPXyY1HOh4vcM2KyvBPM7cIPXxuM+peTUEFxq4kSCDM6fz0s91MLxiRy9O0jnVhHe09SQ6ZA1T0pl0m45y8bx8FHJWBG8XHsi3LgE3aojHYr4yOfFjLUCbogu3SrQwuQB3ec1+2lRtFrjXKZR+KJDHFbtSg8z0ZeMzLY8HIXtvDLETZeN+n7LU6tuRkCoSgVSoaDsWzBxg4cRcsesVzLbUVZ3mOCO6LKk5UHN9VwA4NuPM0GMImGM0JbzDddtEIp5AWn82LWho1gNrTmRb5j4VdNb++5JXh2fs4dHPY4VifkewjiM=", + "layer_level": 2 + }, + { + "id": "6c7962c8-8824-47d8-b89c-e12e2ab0e54c", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "沃尔玛平台集成", + "description": "walmart-integration", + "prompt": "创建沃尔玛平台集成的详细文档。重点说明kami_backend如何通过redeem/walmart包集成沃尔玛API,包括沃尔玛账户管理、卡密兑换、订单处理等功能的实现机制。详细解释沃尔玛客户端的认证方式、API调用模式、分组管理策略和错误处理机制。提供具体的代码示例,展示如何调用沃尔玛的账户创建、卡密兑换、订单查询等核心功能。文档应包含沃尔玛API的配置参数说明、请求/响应数据结构、分组管理接口、状态码含义和性能优化建议。解释集成过程中的技术决策,如为何采用分组策略、批量处理机制和状态轮询方案。提供常见集成问题的故障排除指南,如分组管理冲突、账户状态不一致、兑换速率限制等解决方案。", + "parent_id": "d49ad99c-afba-4362-af4e-ff689d5d94cd", + "order": 3, + "progress_status": "completed", + "dependent_files": "utility/integration/redeem/walmart/api.go,utility/integration/redeem/walmart/service.go,utility/integration/redeem/walmart/models.go,internal/logic/card_redeem_account/strategy.go,internal/controller/card_info_walmart/card_info_walmart_v1_submit.go", + "gmt_create": "2025-10-08T18:19:44+08:00", + "gmt_modified": "2025-10-08T18:52:19+08:00", + "raw_data": "WikiEncrypted:OzcNx2L0Mri06+ni3EZYPtfJLNsyrYI82HyHl2Uze3V6HVRrHnrR/zAu9X4/MF8+wiRjtDmvfbBQUsMyVrZLoVe07Fw2ndFvLNrct2Aj6eGECUBCYp7R61S3B4Y+hvV9Q4JWZJ9VXmj7S7AzIdGyDwtgTPN12QeXWddNScmrLGJR+i4xUkmJYb0gH1tqkMMgIJOkBgS0kp4W35of8tYiqPg1AEsY7UQtWisafG/Tcf3nKIksjzWfa8IFwbzk7ONbiFYEsuL2DuEdi6Qb8Dj6elJkBs8UohFPMZ6P6GhL/xD6qPXAjKccW5g6PGPbGuAQeDUk/KDWsreIMp517iRJ6KwG9uWo4w9Pv1JQAbXz1VO61jK7xLF1g0yuqwfGKNSXgu7RspOz/GzOJJJyim3elcYnwPxeEalrwg7MHpLI9axAT0Rpw3ucJGe162x49x8UpXh3dMwbv5onPNGZMJGSlkA1r0Zxt0squJVI1DcRvThVo8LqWfb/DpT/cnMS9o5etN2aGljW4pcst8YmHMz26NixB4J1qCcujBX5zq3gO3j4LdVwUft/TY0UUgk8+GWPT7ScRIscW2fQ4ZqkPD7b+8scY3Jyj8zj5cwxsuPj+CoApFOM7E+2vMEqJMgk5FOiR3ifpe1Wi5tUY9Oxi5gO8BZkY2kBDf4Wsi+O0LO8FMwRYX+mRC+vurUDehJS/ZE9oF0D9LN7EbFP1DT3H9meuOfxLgweGLEyEAvl1YOP+Wmx0bI3tS03IG00iub+slBIkaIw/icokP8iscEhH8R7yJIypFs6JABPer7FyFe5ReA+NgjpOMO4i9uU0ikaHPTnrx3hweE9+73c+fEMNYtmAWXQTnVtKoD3GNFIbFbrTEasYnt7LHcUTeQ8+pE3nNcLpnYgtAKF2GPMZxji121Otiuo3NNhn0xuPYl0exIBH0/BHf9SrM/Fl1K1MvjWefGpuG+u+kwYx8Ln4tJGFjlovXNBue04DRpSSSweVDkyRZ09evR1UdPNbw0eUXqMBE6WR1LR+xI7AdjMhQNlEIfsGUQkTAKIl7OdqiXWko+aOzb0NwMXmZWW45HrNvKqKCqAD9vf1rGQCR62IgIlRXHNv8hJvYELm5qMX0dQgNe/QMhPAE9eRF27Vf2rgFRXeF/lrWrU4/uCUQnWCWxot2ByhBqsbzkGDCtU8mbw6ZJafAgaUvTjJO9PlWtRMwmbQvDCrMdu0zfX3Jstvo7M5qQh5szfZHOmWYdhfBLhCgt+ES9SM8KCT+W38tpypaFDsyvVYGb+kW5Chaka+quKwil7m9+U/Vm3hd7IrZ6zSFk36cCDg1h9i1QXf1RVWZoI5ou4Uqc4NJUy9I+EknWCnKtwc/qZonk59yISaTk5RWZx/PMu2RgllCz6dpufR4Wd154rdJiCw0aKbSdvG6o2gpnFaL4RF2YiEZChOg9NLuFgImpiYt0c7ND4vj8MxGflwX09pWKJnVHxNX7eCbdkC9rUX82bD90fgosEcQ+lEYtUY2/QVbGyDpNHAFUPUT2RYVjWysoqM8BKAawuBKw44ADOeZMgQ7SbsUKPzMet0Anyai0PUBDKB0JfXPnAxjIaQN6CDIc8Cg/ZHQySooABrL5cf8O35gqIdYMvBd9q4dgmSBwITyTOxQyrin2MVbfSKYSrerIPUP+PtOBz4uk7ccLtZcwAyhsJPqvMNVW4z0Dpy2t6idwrzuY+4+wKe+iLAaJ4OM3yubgDwvO2CT7+33DAzKqCrRQY8HsA00Qmdu3bM6k=", + "layer_level": 2 + }, + { + "id": "f7e484b5-92f1-43b5-8bf5-9cd33a035658", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "设备ID隐私保护", + "description": "device-id-privacy", + "prompt": "创建kami_backend设备ID隐私保护的详细文档。深入阐述设备ID的加密存储方案,包括AES-ECB、MD5等加密算法的应用场景和实现方式。详细说明设备ID的脱敏处理、匿名化技术和数据最小化原则的实施方法。解释隐私数据的访问控制策略和审计日志机制。提供符合GDPR等隐私法规的合规性实现方案。包含数据泄露的应急响应预案。", + "parent_id": "e130f1c6-f0c7-4f2b-8467-d00341dffec6", + "order": 3, + "progress_status": "completed", + "dependent_files": "internal/logic/restriction/device_id_record.go,utility/verify/aes_ecb.go,utility/verify/md5.go", + "gmt_create": "2025-10-08T18:20:00+08:00", + "gmt_modified": "2025-10-08T19:05:48+08:00", + "raw_data": "WikiEncrypted:W4RZ6LTz4rg+RteR0TdbvI31XMJ25/L+57ZIBwtcM5REl4fdp7GotkDn/eZBYuqu0ocnWyJMPttEZL2wffxtzrGN4Ui+cCTKiBWUAo/YRtlwF0BHrV178pSyDk02tHmtG5z0OE3VwCYiJAdRPQan4N5o+RFMluEyZnSqhiMHlih/kRM+hUbdobEMOB8KEMOuGBsv1+stUGRqQp/R+OuGBcQ6wh0+z+YLolv1UKhmH6UC3FEZhPTSTvLxcpYf6/vCfUJS0zOrHyITk4yG07g/Y3QV6o+STvgQTbZ/4zfY3fQbayuef67C4oGqkMILUajosDtVQmhIM9zAaG5H7BVxzBKU8EVyco3rHWCjrHJhCGAqVuz0eu/PIrTAwib9TMNCzC6WAsIZ83KJancA5x1IL3mpFzYPs14z8bghK+/yXtTc4jVGUTsmUvRgt/Yy49S+PjswW2fOlG9BsQV6ztPfjhifouB3UQkAwx6efk3f425Rv8cntFg6hJ9DyVXcYEbQVixu8LBhSoqvm0DCJPPffQ7ZDVbA9jAtVYbvgUUP3SvX4nVW4KfZeLG9YZ7Zd8IYYGYL1FxlTYFSA6m1377dSYaNf0aQA6fziWmKxi8r3iAAEg61ULS3H1pURSRFOBwyDfEvLG16/ztt3NqiMxJwgBv0POoSVRSQ4M0kUivWxi9Jq0VHWdQ/ZKqwev4OcVPqFnDL6O8i01Phw3IqdbK5q1LnCsi5Qgxm+t9H/wmEi6TcUJcXx7r8lP6KY5LLA7qeq2jb351tTLZ3vdwNOauB0hobuExwq0nlPfrSlZxWwl5rhX4iRD+kFFZK4iYXK+Sdqi2wUxIZDDrtbK1HEau3mmrvVrso1VXwZIe+w0Xj1y1iPqAr1Xq/8v6/WejcGriMp7ciotcoeHcOy3ffTSoV6lnAlTlZQ8EGETczBAGi96ReFFLjbsaxqqvtOmuYR1WV2ohPO6DkUKh3GhGUNNpuIqUpN09dkl32ETskx1sUbTF9VkP0fvDido0h1Me/EgC2", + "layer_level": 3 + }, + { + "id": "e5c8c7c7-0135-416c-a55a-80655940b9c4", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "天猫卡密回调机制", + "description": "api-card-info-tmall-callback", + "prompt": "创建天猫卡密回调机制的详细文档,涵盖Agiso回调、订单状态回调等接口。详细说明回调接收、验证、处理等端点的HTTP方法、URL模式、请求/响应模式和安全机制。提供实际使用示例,包括Agiso回调处理、订单状态更新、错误重试等场景。解释天猫平台特有的Agiso回调协议和安全验证机制,提供错误处理策略和安全考虑。文档应包含服务端实现指南和性能优化建议,特别关注回调的幂等性处理和安全性验证。", + "parent_id": "c32a3e21-0961-4618-a256-ee1396eca8c2", + "order": 3, + "progress_status": "completed", + "dependent_files": "internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_agiso_callback.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_call_back_order_manual.go,internal/logic/card_t_mall_order/callback.go", + "gmt_create": "2025-10-08T18:20:23+08:00", + "gmt_modified": "2025-10-08T19:06:43+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBoebvwpaHfPwY96ZsYHNOSB7YbW4lEnnUYmwTTOYlPJ4vFdOgmYHRlja5WAsIIMSiChhgejNqh98FydD01AfqU7fcD4S8JSlDh3f2l6XDHMsJkUVy1hXRwgZQCn0Ezt9vkeKjs/e6IC3CYyZvT02aI21wgkPUt83TpGKLP187ArVUlAK/TznGcJjC4y7KFkDTVLOGxzn5fvyuCOQecg8p3kMIUh/K5A/GFm+jA+bb6+jwwUhHWS5JnpXJypGX2mX2+YEhLShHZ+qSgJTL++AkYqlCO7jAqme0get6lTfiYjoGBTpCAF26VECJDm0bdEVpHHk2zaeUoIUKBAWL9r0zq0B3tv9iWLODIzmCL4Ewosw+ZhpaZgDNpXxD5/vlbOTtBMz3d8Cdz26chtvCpU+X4Cl4FPDhiJ/t8zHDKjsoWGQd6yWmTAujUeQT2VHEGO0CLznXRmj6phog/bLztxYbcwoknZzQ7YRe1BXgU977CAMyaLJoyYYniWcI889Ml4GWFIwmPvDPSnSU13PRpHgJ6nYWr6LEbFRMzR4N36PLzyTIEbSOLhLXhB6DTi1f5oC6bWAFp+S7bXi4EzOePVFaa1sF3xwhEDpbl3LCUoXb3eYJrfFEmw9ON8TQrRfO0dD0pMCsJslU4/kymto9cNk3wF1AnlZKVdPhgKjA5nISWn4y3qEd0QYqHlkn9x3Tj9p3gQw1T5eK3cjxz73UkeKzhaA7rm47nu5162jt63UFPieRudaKG6Ru74Slq8kWgiOhZeNlkdbJiMcjXRc2sZmDgzerXou+3Obqykaka2KjnItdiGnhETAK+R7XYjpgNZs4xh8JG4buz4qA3o33fFpkJ4X21y22PfMdINjUWhM7lKlDHNGWGTKN2Fo11R6gBqmNKHuV2dwb29TQvh7rM1MbVaCQfRUx4kCXIagpJuumDlgQJD3Q0Qjrja8QDN37QrwzFObq/UkW2YRIJQvgN0CVJQziPS9kkK1qZ/wKy89VuCrrZ7vOb8Cu9P+vXdXkZHbWCmpEDxNj8/6H5LMKhjjbs6rfF/sI7wQpscsl58UgmG6dNNd0z9JClD/IK7T1tnQYcI0AxI+TiUiA5omRw2OAxAiT9vVATsG/o7mh1tRzHFX+mve+Eaubn12x4txqcvHN8fTp5qf7dUlhox9Fu+9C1d/Y+7ua7/KC8xdSRT1WLy1JCBXEDrCeNt7QcKc/V99jFxEmybhld5sQrweYYjqNBqGNuFW1KMzjLSzkCvs7qunv5akWJgCnq5vRPqVo9YXdPH8Olxatyx3T+IR4SHo2QHov7891HAm9HqPoPQIeCmPJLkaWQAK1LrAHKeV6DrsTccJatqOd479X+bmA3H0lf4=", + "layer_level": 3 + }, + { + "id": "f72acdfa-67dd-4c2f-8c3f-17f119b4be62", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "部署自动化", + "description": "docker_compose_deployment_automation", + "prompt": "创建Docker Compose部署自动化脚本文档。深入分析install.sh、install-test.sh和install-one.sh脚本的功能和执行流程。解释这些脚本如何自动化执行docker-compose up命令,处理前置条件检查、环境准备、服务启动和状态验证。对比不同安装脚本的适用场景,包括完整部署、测试环境部署和单节点部署。提供脚本参数说明、错误处理机制和日志输出格式。展示如何扩展这些脚本以支持自定义部署需求。", + "parent_id": "58118687-a7d8-4b0d-b788-36481cba182d", + "order": 3, + "progress_status": "completed", + "dependent_files": "manifest/docker/install.sh,manifest/docker/install-test.sh,manifest/docker/install-one.sh", + "gmt_create": "2025-10-08T18:20:37+08:00", + "gmt_modified": "2025-10-08T19:06:32+08:00", + "raw_data": "WikiEncrypted:h7ADvj4WLJHyulzCl+z7kJNHi1rj8bPlcMDc2oqYiBBB9d9qOfkyH8LrF6EG2Q+eM1G861Cke2aeXMWBKIHmIfk8qnnXIkNGF44BMoK2xo8tqhB2Q3qwmlBoetUgkgwa2T78PgfgYO/dn1F/QxZfSL6FtNPIV3kx00w1lLb8+ZJL7vsA4eLT2ieTW/24xeDu805exuttMjC7Yw6NbHRb/Yj5XmzzXj5utTiAt1HG5pZszLt4xGVf6C6H6T6gXZ/9gpTCrrqOWsc+GsQFZnb1yAb7xXQPbLZf+uGGBOO3NLzB9uhH7uce9XgxyYawq2zqct6U4uNmE1fvKT8a/tvt/mllajWpBJ8Kum3N94MSOq7kNwzorrV+uUC21z4LFx4Dy8KPQPJU70I3IxfnXBX5Z4/0XpDkmU7+GjswBDAb0nDk5mveoEDxbJGWH8A24htH7LnKqRBGuX+0pVWDGQd5kP7TC2dIJ86FgVI6HI2PzrWPSg3OiW7XbV7wCVGxxXr7jgK3i/BSZZCU7B86R+eBemj+GkGqBBirtEslxAchSPxOlLCMmZfKn3xpMyPRGk+qyvqBYuteJKtgsMbn6vISowhit3nU8hRVbpfmBAaaOIewKafx5OOEr450ugNwsizm2IGHshwcf3UDHN8DlBkz4rBjHWifKKKHzwejgZaLIEdWJJMMSWB6FNeorJ1Uc43uwvthBQOiOzAyqdtVs9OJMydzNMDXCyQr2fEtrJttKfXRM4scFCvf4ph78vqqzZ7zsLq+ZSwi9pcudBdRTpJToQRHDOqVq06TBNHJ47wYvo89b1vcWoGSLtwgomkrT3QuYlwpaSRU0mQ//N5E01Lq/AI5MKJMgEhcY4A7mpOaT1Zob60pyt62uYewFQZzmSjptDaOjZplIb37U7FQbHDSzLSqwfV+4PZ0CTq+yzraNK/CBfr4zDdSYxbRUAtOhoHPFRPeZE1qKrPrn/Dn4D+1aAUODb4ov+GlHyHLjnfH5V6Kj0StrTEbu6fIqXO7U8zJvtxpjo5vv7B/IfS3Yy6G46CLLtq5wTCA673BvZNc3fgbs8olWBDFQkWS7TZgjy2gz132pzOB/SpvY1pJq5RMon/iRS7G84tDq7nSwtrSuyFMMjYohF+4CyvFj1AQCwLo1bbore1aDHq51xbJqAG0EX/1ybieglEHKrOho6z9VQo=", + "layer_level": 3 + }, + { + "id": "201b5004-c469-41f6-a407-c98892822b49", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "业务逻辑层架构", + "description": "business-logic", + "prompt": "创建kami_backend业务逻辑层的架构文档。描述高阶设计、架构模式和系统边界。详细说明controller、service和logic各层的职责划分和交互模式。解释核心业务流程,如卡密充值流程、订单处理流程和账户管理流程。记录组件间的交互、数据流和集成模式。阐述关键的技术决策、权衡取舍和约束条件。包括基础设施要求、可扩展性考虑和部署拓扑。提供系统上下文图和组件分解图。解决安全性、监控和灾难恢复等横切关注点。详细说明技术栈、第三方依赖及其版本兼容性。", + "order": 4, + "progress_status": "completed", + "dependent_files": "internal/logic/,internal/service/", + "gmt_create": "2025-10-08T18:17:58+08:00", + "gmt_modified": "2025-10-18T22:05:30.5250935+08:00", + "raw_data": "WikiEncrypted:nTJcmZGR4n7nsIYUWzxCEBy0i487lDHI27zzkO8s4GsVEQVKXcBFabpKr2XQ6XJKtlHqbrE9PVqIMhgcfiOvMabk8TbZAsCaWeJzv2ccsAsgyCftb/dB0tmYzG+Xik0ZhR3UW+81zieL8Swo8dtHFHP/c9V/DChKEHqlNLt/LR+LdHQVeMJt8/4tYX7Iko0b2FfNPdbFFEDYQMdQ0vqLHb4uA6e5pDDVP/pbzgI7v4vovEwZVCBhgJwUhQNqhzrKC713fo+znzpLhb0QOOU+J6KBBVBHdePw5GXI4Glzq0YMFNDk0/s9wM7hOrtqrm0NAAWfXUBwxUBhSEMV6PGimLxIkDpIHcwWR7VIdiWxU2TUdPt+tMYL5Qw+ko0xAWAvsaWJG/clR3TJuaNaxMPMaJjVkyTsWdJF3Uf44Br8oAmuaOUtHrFXFNTHnCFVnhLjX52H48ibArhi11KOqoMywYi0Um1gSvxkRkyRfskLrif2l+C6XzmPgGCONPIBhnoMenfw4JEkcUCPK4V8MzAs6kHdEPjhXO0eP7NTViSG2iLZjmxvySpPhXUnXo5sNgosJv7jjZHrN6ZSRcESQlbAR/lVpZdARFMnJeqGSZ6/BX+dwok6Ys+Ac+E8PVVgBJ6EBLHL/i/8LmhYYfgQebhhrQUTbWb5LpQ6IVHVvL9uPVfO3hq1iUqvZJamUbr1zwky/9gOtOKXEn0uQia6fPE6Dt3Vf/oeECSJgJGtBL3vovteGRYsVpL0gD1HzN1ONJ6+kOmb/3xP8QPIX2xqLNWWDznrjiFMfEzrYtwGir+o9YtwnrHAyrJcLWnD7az7h8rqzeKjNkA4f+8NykxjDPBfoJExkS8VBhcLdSaayXqTzY/H9fp2zSc0Xm3wOMgTezgq+0TRkNGw66dr3zlEzYvcITtn/eTfqBI+PtHsUTPKgBT1uoEE4p3thhe8YY0Ip0WXduO/Aa5HSeM65Lj4jBV0GWwUgMHW10C/FsXZH8NKkOBiEdiyGeA23AiqtBSzAxZBPrD+CPYoH7wuzHuTQL8BjhTsz1pgHQA877ThZ9Sdcras/xe9VywZEdJcihcSeWFXCRQvdJjdO9V2ZAOAiu+jsvI3F6yiASgTYm8Q1riiEHCIisg96Ex+YV4Iw13sHLmgcuWi4fNpQxBVhg5uCV0zstSpB8oEgaTlLyzS3LynZyBV8O399OT0NyXUVz5pl6OS/fUlYY2BUIeBGbW/eRetlPdDxGf365lVgQIY5qTHGetY8bpSVzHcBYg44JuR5u6c" + }, + { + "id": "495d1fcb-e69f-41b5-b893-4efb8ffae28c", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "系统认证逻辑", + "description": "system-auth-logic", + "prompt": "创建kami_backend系统认证业务逻辑的详细文档。全面描述基于Casbin的RBAC权限控制系统的实现。详细说明用户角色、权限规则和菜单权限的管理流程。阐述TOTP双因素认证的集成方式和安全机制。解释用户登录、登出和会话管理的实现细节。提供权限验证中间件的工作原理和使用方法。包含权限配置的最佳实践和安全审计建议。", + "parent_id": "201b5004-c469-41f6-a407-c98892822b49", + "order": 4, + "progress_status": "completed", + "dependent_files": "internal/logic/sys_auth/,internal/logic/sys_user/,internal/service/sys_auth.go,internal/service/sys_user.go", + "gmt_create": "2025-10-08T18:18:19+08:00", + "gmt_modified": "2025-10-08T18:35:57+08:00", + "raw_data": "WikiEncrypted:gWB8HBj+8+/15rQhXgtMjJxill0Dm7pr1ti6WpojZlBntM5mCZ3svI9SgZ2utFjCFZC5Z+FEI6aOz5Gj4A3aFbuhD2XPZL1bwaqLneqa1L4WLh4KTENL19+xdVNs4RhZjD6ZJ7n1M9pktzRYdEXoPx+WtK62h4BKAZ0CxmcKe+iDWgkzPAQdKVBpjhDesmHLcMHBH7+qeVJ7Z2lQF9Tg9AnP2CTNteWT27HOIOr0I3SaYM6k65n3Z0vySmltobX5INahUuaU18V7hzjdbCpc9e5UHoC79ydglrCuB6262LMQvfH/HvilWFq4jVC5YJbDO8PJk1Gfq54roM0WSjUbhYxrGp/UbDq6+C5hqExt5Y061mJXxmclsJBxX6zoO1P8x1PcEQiNH5J9mCgXblQrg3YrhaFIyyjoVfVVRHz+uT2SeSswzwmEIOZ86/OdiSf5Ng+xT7V/fkPevbgJVr3RkKckk2n5GJwGVJ2uBXK6ZMZor8iMBjD7CDIrTCGT4m/YSesNCfTYm/qJSandEHXkNe5yNg70qSJ2+S5+V4yIIxQPG2D5dIt6cKC0ppsF0YpybkQ3ONoINWaT4cov9e/FZssbGYOztwGx2gb0RNdxoMWQx2d6tt8NEgRvP+bidzO/SDBouGelKXOmdJM1cQ84ofFHTLPNxb4HbzIgPPLAOlNQyG7wXIrR+qRJWn8+b3laIVEpguIhUuWU7jM+tD3vuePgZnnuJV+d/zI4U0Ot3Z6Qa7t8993FQxzdKPU33UYh5JLxnLI7JwzMkncaT8Y4yLk2QLb3GqxdlUfxuk4byEiRjK8QdgorcuF99pGDvJ/VCV7m3Yc51cF87OMVYx3/fpuwfTPdnTOKP7hAdcvghET4DdWsBchrPEE+3FNLBfpemPgvq6xcqnVujyE8zRwP9JFlEuBg7aZggJMXhGx4HI4xlKTKIMStOyBJa3O9u1VsMRFpdsj0ubLd3wJx4cgxon8lCNOZeQ5YTQGBbkl9/AfzC7Y6b4mOf3P7otMfSeyaDLBHqJJGNHZ63/k3NmTSk0YPvPM+bFukpsWqU1417uUFwYSb20epfNpwYYt6O+svxIDRurYoRkjNu9OsbUIP6Q==", + "layer_level": 1 + }, + { + "id": "c31af7ce-10ef-44f2-9bb6-b8772f1bc957", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "系统配置数据模型", + "description": "system-data-model", + "prompt": "创建kami_backend系统配置数据模型的全面文档。详细说明v_1_sys_config_dict实体的所有字段定义、数据类型和业务含义,包括配置键、值、类型、描述等关键属性。解释主键id、唯一索引config_key的定义。阐述系统配置数据的验证规则和业务规则,如配置项分类、权限控制等。提供系统配置数据表的模式图和典型配置示例。记录系统配置数据的访问模式、缓存策略(如全量配置缓存)和性能考虑因素。说明配置数据生命周期、动态更新机制、保留策略和版本管理。详细描述GoFrame ORM框架如何将系统配置数据模型映射到Go结构体,以及DAO层如何实现配置数据的高效读取和原子更新操作。同时涵盖权限规则、角色等系统管理相关数据模型。", + "parent_id": "b8ba5dc4-8d15-4b61-86e8-07a963bd3fa8", + "order": 4, + "progress_status": "completed", + "dependent_files": "internal/model/entity/v_1_sys_config_dict.go,internal/model/do/v_1_sys_config_dict.go,internal/dao/v_1_sys_config_dict.go,internal/model/entity/v_1_sys_auth_rule.go,internal/model/entity/v_1_sys_role.go,internal/model/sys_config_dict.go,internal/model/sys_auth_rule.go,internal/model/sys_role.go", + "gmt_create": "2025-10-08T18:18:21+08:00", + "gmt_modified": "2025-10-08T18:35:37+08:00", + "raw_data": "WikiEncrypted:gWB8HBj+8+/15rQhXgtMjHo3Cfllvrq9dj+VS2LjLU+XipU5iS8bjftNtXgNkjAUuhoBjsDPl9BjrKUtcrFkS+Ysf07QELqCRkUaE9W1TE2R7c8Pd1omOAa/LrhdmLcUIIP96HDPywGNUVLCkClEpXPVZjr5yV4lRUGn6Vd4AT2Kz1qx9Z60YINVebiHZjal1ZSSIEFUhg9ahC91CkdhbkfPsFPYo7zMmbdYpPuVWMr6ap0pycHPC2HK/qMDmiRrncLGuHUk1wvb1uo+ICF2w4nK1LEbdLGMdBnwT4IJT1/VKtcxo2/pYRnXc03fs9K/Ygz4/XEi/NkXdxC/VqdAyv4d1CfzIzJSvNlEQ7q29GzcswCh1BY0PcFBwO8cpevtwMseZAGbVXoYQm4DvJWiuPzb08JC731Ube7hPRcijJDUEI6FzXVqcu7qngW0DX7qWoZkFKtveIpW9OxNAeMloxr/k1e3Q2+eIsAF5AUw2OGwbpBtaGsu3uOQreqGvzlwo++/8n8bml/QCk5HQT2Y5qhWAOEY2IvCK1OMB1ckrWn32rwWkPhSQn0+oWqtWFkj1D+Y2FNRZcZCijgId6mwgVLXOClH97C7v4Hm/CWvUvxwcreNuYjJKSlQ0GFwWBBvXhrlRSHF5zBKqux7NwYZsipPHjNF08UAhCOLm18HxVfpYB+awS2Axa3d3fK79m/oZfPUfyNc82Y8bPFwNUP5/hMSr/4qU+EqzK6RHaQ8tbdTzzfDXEwUCUK/BwE4Mjl9vdTP1mfkfjvfb3SokJ+zqi63WemXEQnH7NGSRFNxNdGMFRNKzDmmrApwYZXjztqqdDxgssTXGg/rhy1dSGYaS6H+ToTGp8c9/MH6lKhx8ZNdTBMTdbG8CibYcK9suxALPynvOq1UqP6oqOXPpfxfgOce1FzA4Rrzq9nTHIQMnw4QCdV9/126aBKVxCPa3jLY8mBAIOH0B4YZhqyBo83RfL/4vY8G3VkWs5Zo2NJu20B/7M5Qdyw2ZtirWKJHPE8v0rDmPA6/9DKI4Lv3enLKeIhMIAqZebPwwk4Zh2wA6oHlk2esnHqVw2Z/5BadsNJFgBakyMMnkrUxaesU/frMcRJ1jLsN8YHKOATLE4F/RDg0ZwxOSu6zy1LLm2k6wpQWgegMovr8kg0Riq+YHAdz5ge2gTtD2DOGpTfbHWVQlwXDER72hgcmSJSy81lE/TLcsT4ONAPXTLkDAXTTJOv3gVnQeYvISQ8Cvg/eqncCsIKeDVWC0QSg6cUAK0GzhCSXJw5GVzKMgyzelmKtqiI/jX/Q7V3CVMGP5V56R4wC4eVlP4Au2POc5fEZ7FY0l0x6nrL0H80Sk4o2reootBU5tBzcE+u5f7MhAfetwZjOAzh36C9gdNBv/Ifrz4QMZRDaVmNunuMpHmL1QXPGLjflQ3YHGIWlc19NJ+isI17zfse6YSGGbkSmo7ZZjYkvhWzpUIqTxaqRNav/ebsmWVlxtpJZiplO2HMkHY6acUOBnYJY6HbyUv0FGySPMvwY4nPGH07tRkC1AZV3qw8LLsbJn8DVFeJrKAwJctcsn5xqfaET5PF/NPt72tuGx/6k/RrpkxcR4lelfXNeV9htOdisaPesSw4Pr7lvTDzSMpA0ed6iRgFptBW51AhCUXUP+bK9e+gHK+a48LCXouUt4FBb8gMCDgozFYPIcEQto55NRVPlyQg64fORyVH190r4M8KpnxUqe4GDrywDZsH+6MkikYbcwibrb04bdsPHvRd6xSN0OZuGzEo1TA9sL7Se0hxVHB6yvpgFJmFisuwHEqIvZkoKgCgNlAkkYri0hOJVS3DyuQ2PKQV/hIHswEOBdcoCwbrq4wjJqa0LN3BrqrSB/9Yutb/OS2vIuHtpzhQxowpYZTlb9L5YATj9+RTo21L5H/qdRyYYhWd2Zk0WStnU8b1MUKbLHRG8qxd9PMi21Ro=", + "layer_level": 1 + }, + { + "id": "71487087-d57a-431c-af0f-f9ce8536c80b", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "风控限制API", + "description": "api-restriction", + "prompt": "创建风控限制API的详细文档,涵盖IP限制、地域限制和用户信息收集等功能。详细说明每个端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括IP访问控制、省份查询、用户信息收集等接口,提供实际使用示例、错误处理策略和安全考虑。解释风控规则引擎的实现细节,包括规则匹配算法、缓存策略和性能优化方案。提供客户端实现指南和性能优化建议,确保文档与代码库中的实际实现完全一致。", + "parent_id": "693df6d5-abb1-4b0e-b0ee-fa0cfcf10ec3", + "order": 4, + "progress_status": "completed", + "dependent_files": "api/restriction/,internal/controller/restriction/", + "gmt_create": "2025-10-08T18:18:22+08:00", + "gmt_modified": "2025-10-08T18:35:55+08:00", + "raw_data": "WikiEncrypted:C34GewOyK1SlumqKiPsSg/Aj/+xQhog6A4luCmyduH9mLQCMR1txLqnqXtH07QvTvFpjblyIOlgLn8a8ai3D7Ewm7QQOAJqH2lPNcwyVaNI0R5AYYnLv/ppJRFtq4rzXS7bs6R9WuJre+34kpQbKpXoIpVWgwRPZYMpoRIFHyVDRhlKppZX2lYuhs5kJJ8K16v1qjWj9EPaec6JuobLvqnJqXTaspOxb6DYL6t/m3ee8njSnivlA5TBb37QHmL++obh/Kk5h+4xIJSe21L4nnMWNpRdMi7z9OddGgJdQ7cqjcP7zr5ABy4IHsnW3EFVdvfC4nm4/R+qMzBqawYOBP36gHMj/TSuwnGCS8ksNGcXZEP8EyUKFQlgl+jB+M3GefG6k7XcYpWqRoluloNsAXEVElsPfuwmTgyYh5u9u8bX3tLoQ34dZsr+GxKBIlEJ+63G0NlMMECxLCro1+wlTlTWYgRk3mTd6Q/IpJs/8ulLW5Wp37GDVOTkmUAOcljgtKaPqx9SaC3n20GBxh4ADqnjaElyzJQDD0fotl50FyTouwJhWwA7R/eIRnGvLV2TcfAzUFza6PHYAf93AqvaZ42N1PVZ8xCqnUrKUMm0nSk1kszj0ZOdIDaTB2K5Oqdft+dEKlNql3mqK5Me3nm2U9LT1LiR0/nYzGTyPc5i0+rAQH8IuTDjCweeT/XzOOos5gzbbNI2cNK5+zPr5FFweiGme/ZpOI5xUrO6GaApl+nLg1RNWcO/9CLtQ5MhinBOcPcs5EtOSUEf7B46NuVQVA0Ng3iG6lgMtZ/iVfcyuMJrScMVv2LLyTdeKGRtlCn5Nh434nWxxoWacpf0Lp/+ohXJzuadHvVjKZWmqJt6TlrP/AlI3qMbKvISLZKY8b3UCdwJmfGCB1eCKS1rQCLNGKIeRuEhYqXm+8ENWPskUauLGtiafNJrxP3/OUVrYJ+ZnpCC/CmxXAjYKn2517/REXJbpMv49iNGGkvnOfo6tN7DcJVykM1JV4vwRALkz/d3c86mJq4sRWuACN/FXwolQ/jzh/NEYtylpIQFu6vihdAyH4nmm78l9BMlWQqqJ7dPRvqlHFA9pmbti/d7oWwTJHcehGaRHk2wcBAQoibim2Zw=", + "layer_level": 1 + }, + { + "id": "4a2f1ccb-e858-46e2-b051-4b553c1e2f48", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "Ctrip卡密管理API", + "description": "api-card-info-ctrip", + "prompt": "创建Ctrip卡密管理API的详细文档,涵盖账户管理、订单处理等接口。详细说明账户创建、充值配置、订单提交等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括Ctrip账户Cookie管理、充值订单提交、订单历史查询等场景。解释Ctrip卡密特有的兑换配置机制和回调处理,提供错误处理策略和安全考虑。文档应包含客户端实现指南和性能优化建议,特别关注Ctrip平台的API调用频率限制和数据加密要求。", + "parent_id": "0d28da6e-d972-4227-9fc4-ecf26d5c6b2d", + "order": 4, + "progress_status": "completed", + "dependent_files": "api/card_info_c_trip/v1/account.go,api/card_info_c_trip/v1/order.go,internal/controller/card_info_c_trip/card_info_c_trip_v1_account_create.go,internal/controller/card_info_c_trip/card_info_c_trip_v1_submit.go,internal/controller/card_info_c_trip/card_info_c_trip_v1_order_callback.go,internal/logic/card_redeem_account/query.go,internal/logic/card_redeem_order/order.go", + "gmt_create": "2025-10-08T18:19:17+08:00", + "gmt_modified": "2025-10-08T18:52:54+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBsi+sn5XqP8JBkcaC5gJFHJK50Ht+k6VsfsVf9W/46ar2nyfG9aPfFuj3OqAvsQ2zOP7QpzVJoUCtwLglIP1GqQDfx2qCBmv9YLB3RMP78a9O9+gzXuyc6BxhwnZvmIessag0UDmHRNFDHWh/c+FW5GBTkZyHeFnwgXxp51yK06aXkjMzyn5eA4CvzR4McCvvmNyaoVacg1P7xKnbquq9Ia9uZgXZeU3u/ggK6JRkZkCVh1Zumh1AkkQGrdlfCed38c0P9WvhTtkOtaTUUgqVgV4kPOHQE7eMtvhRDXeWefnUTHsLeLBkhUnsPQh57JVtL9penKtwtZMS3ZdxKC7mBE3nQcCUFLJYE/e35/lJQB9x5nfbWUa7jPIsOajHYZdkiCN21fYL0V/Q6EPksqkB4+mB69hkPbaNChKgjBxEXViBKw0mCVrIPIm6A/3XUaOmVerm9BMmuw3TjuBiNmedKD7KGcoTVWpcKr3JD4Re10b1RuYSXVFtF3QNJf42tGl4STBHVWLQxdDzzUSzZ9a5V6O8L2nlcWzwNo8t5ea8aypotVTvuXGPCGdOfAj0oMWRzyv3UkWfkvVdqjQGiq/Awvpzm1ehEGWAdHK7Ybq2QiH9KFjzZE/zHCQblXhwJIeHrIxd42fJnxmgtzKtKkKKNLwubmC0ACReXOzkEeq5yqyl+k4DFST4612/ohoShJdbmS515Ktd/p872+kvMkvRdFL1nZyX90FSeEW+NHE2msG57PUE35eBr2HDzOeZ0aKZG8hN1kM5bx216br0hSytYUwrBk1+zBfBAxtFpFOwo9mCX5lR9ZIm3wEDL3IXMIThBbX/zEgayD4CyED7uNP7HETLzga7E2YIbK613r7V+Oo54uFxQeMZY59omb87gcgVD24gyqVYjuQdHbkY3PyT7FWdCZJgHNetaXc441gHpJadv/HvApPekkTG1aALw+qVPjAxTw0WkWMAtkqHmzCchMN6pr2UxFzp0CutbgFkzckVkztczx/MtG62+q82XL5gCUx27bTj2k/pXL7ptnIvS09Kvo4u2HGl2yTmwOX/mk3z74LDJrli3RhwLbTLZLt+9oLIyKYFJGSYgUTt4PZPAfbOt31mm2iaC9zx4TivF45d7eBwjwAxXRGJDA/0FabI+UODLt2C6Yq6FMYgT/PiDqyGnByH1VFg2sflHRsjcBjn1bEhQN8BuPrQczskgR7TIVEfyKuvuJ8D5A77vM0jeNN4ItGIwpekB/dEYYCz3ImYgXEpjtckpM8q9eCIXdL+/sNzWUMVwYXZBRYRly/8cs1ikZzbpYJT/174qCZJz/wVZTCXo1WXL+WdLu4wbkwMe0xX5kysB3MglJt2NEXqQ9PDSXap41Br/jR6Qx/2WX2+yXerLvNXS8uz6duY4F6EgJlTzzzJ0MatuhpTNRKWushr7zk55Lhuk0GQ9V+hIoTgnmGHMfVJr3sMv8H1ugeKslOpRJkKU08CEUoi4C91/YLLqEodWJ0uu2U4CG0qf6xofEmBZFmte09BxNSghJqqhCoITeAbctcbJajy4hgq24=", + "layer_level": 2 + }, + { + "id": "fd83f8e3-9940-400c-9e6d-de5f5af056a4", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "天猫卡密工作区管理", + "description": "api-card-info-tmall-workspace", + "prompt": "创建天猫卡密工作区管理API的详细文档,涵盖数据同步、配置管理、状态监控等接口。详细说明工作区创建、数据同步、状态查询等端点的HTTP方法、URL模式、请求/响应模式和认证机制。提供实际使用示例,包括工作区数据同步、配置更新、状态监控等场景。解释天猫卡密工作区的架构设计和数据隔离机制,提供错误处理策略和安全考虑。文档应包含管理端实现指南和性能优化建议,特别关注大规模数据同步的效率和可靠性。", + "parent_id": "c32a3e21-0961-4618-a256-ee1396eca8c2", + "order": 4, + "progress_status": "completed", + "dependent_files": "api/card_info_t_mall_game/v1/workspace.go,internal/controller/card_info_t_mall_game/card_info_t_mall_game_v1_t_mall_game_data_sync.go,internal/logic/card_t_mall_order/workspace.go", + "gmt_create": "2025-10-08T18:20:23+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00", + "raw_data": "WikiEncrypted:ba9bhCMVYOW3qcsCaDrTBsdm8AkKOxMEeYHksr3yo/imcaxTypW54rkWuc8ok+kKMbSlF2H953r2+WhakNMZcjsjyyB7rKnqmSG2mxBDLCJWe9iaXwfbHFUvq9GbhvS4IjS4kTKCcbQ+sCUikK+7FfwbN1kjwSJYZyajiuvyySsnUbdPIeDE1F3uAgmGyh2uecVNUaDzxxoZQQCTVYlsQu3uXE9x6nf3mJm7bRTUzODojt4smYpecVIV23Xo530zZC4lJoFvu3VihPgS1mBaAyeC0wUq19w2gQv6Yl+IRv0BewRn2X0XuXoQAA/bEQkxyvI/ZnEq7Z3Ht1XjYaVwMYfnrqx3zDJngO9dGCIvutLPeWc26nTjlF9AHVe9CstGMfDsbYz2EYxAgd4TpcoxRbY94++BUXFFXjvkJVwOe4LUP1/dFcNQdJeO4+n04TlG4kCOXbKE9zdsoPSEitnEnB/ZZDfT8EDeJXv76RwkZfFLIPJKLLjbAygECbOMUx388ePp7KJlA9S2mvSAYo3fDT3UMJG4jvW9UObR+sQ0xVOvlYsc1klhStSELVLxScBsf3bT/a4J1aQu+0r7ADJBd0LJF+KDYyddEbPVOq8asO5MCI2xKVFQTSvitDVgEE0j2fUm4VYuzkx+dtP0STq5UsqNoZWJgH9QCcOWMD8OH3e8EZ401QbDJ8DQ4aXuANeMw1FSrJfj1kfo3MSfn+NlO6sq6G2Y25BdnK+4OHQCjGi9l1vEA8sb5coNTeMZMnV255/WW5jxJALdfWfT4cw50URsj1dji1e8B5YKS5tiNF8xsXSMqA1nFFPvaRs853/38eTxl3Bbb2k+wIL0uAegEpzLYl/MIFwWZYD9fv1AaAzvKWLGXoWoiTPlpdvImM5NwgHaGiP8lEt+mTkJ3TRjRInKp22n2TQcx1Mmo5R1ZaD4XEyCJqbQmy0/3Hwa3o1wshqcNGwaeaQVwHZVkij1DzaCIk3gRcxtfka0AJQvPZWEycGiLVBBNQd0ipwSLh/QeQU5Q/GEen5grBuQ9mJzDoPrNqozcgxHSW4NSCeIhkV9ZsykURjNvAnTdgq/4g914hp7dJ3gANT+uBjblNLhqJEhEBT5cmIUSHG9wA9d12q9CUdVLM6KKSs6OCmIr7uJEMtFqt7S/LyYZ3kDmcY70Z1ooUjaXBWPnjpHMMH6jPUl9Rm2ET+HD2jYR2+qCEkZYi+mIkXmagYULy9jBW3toNuMoZu8NCiwo9FwDDom9HYBHWY+WBxPd+c7QCAAHuy1siswdIkMes1uZXen9UsL4ve5wv4IuEY4ExInxqiQCcJ6r9wLjgfv+ZA5D2MqV/rtdKT5gs3J7qSM38Tb1X/s4w==", + "layer_level": 3 + }, + { + "id": "e71856cb-fd63-47f5-8f0b-2dd3d29fba10", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "中间件与拦截器", + "description": "middleware", + "prompt": "创建kami_backend中间件和拦截器的详细文档。描述认证中间件(auth.go)如何实现用户身份验证和授权检查,以及错误处理中间件(error_handler.go)如何统一处理和格式化API响应。解释这些中间件在整个请求处理流程中的位置和作用。详细说明中间件的实现细节、配置选项和使用模式。提供实际代码示例,展示中间件如何与控制器层集成。解释中间件如何影响系统安全性和可靠性。为开发者提供创建自定义中间件的指南和最佳实践。", + "order": 5, + "progress_status": "completed", + "dependent_files": "internal/middleware/auth.go,internal/middleware/error_handler.go,internal/controller/", + "gmt_create": "2025-10-08T18:17:58+08:00", + "gmt_modified": "2025-10-18T22:05:40.6616718+08:00", + "raw_data": "WikiEncrypted:AqpSPShNE36Xgo6VuqdMl5aF+VgV8aILolR6tO6geQOv4rIik8VRwkyDUsnMruLqtWT2tLSI/ajurej/9aj1sBkNS0BQYdSIE30Piw6rw6EVyMRGtX0LS4U/g7sUZEJ0LUxms93QTwszPabEL85pQnWEkV9dobHUpmkwNdecI63kSSncdIdLjByZ/fGShR44SyDBdhI3Od/uInGR8eDkqB0x+jUKVaOqNzKOBnSG9U6dcEuC+k4ImYV1zLCcDu+BT8QIViHujr1Yv8t31woNkKhqDSfW71jYe4zEIc6GoP1p/wIhUtXRHGklEe0rUln7DnB6uIC7vWx3dbxtLat96jV6WdhhtG4J7WrYvdY8KDXNLmR6+apdp58sz2k7pobYXU4Z3K71AcAEEB3sFXu09lDbNDD9AqcCqAtbaCBlfMtxQp3qSTkne+HFzKvuBSu9SoryUHSdRNcxpf9RgVhICQhxcClfeKyrwHv6Tra9UTD9ICSsV67UNBa7GtowO9ggtQFr3NckIKBDrDrJQkxMnHRGt+EytXt682wzMLLAaWBuJRpF49XyLbpNGyAMBewSNTFnbvaoDkdEO3xYyyqBGs1SxQdvTF/uqHDwQTqplVOZSl3ZEm7A2BnwOl/s5fpPykdy2yllDvjckxI3QCY2cDZGoLv4+pcAb5qq46Rp/Q17ja8msX3bucmtjP8xpK6MakQeUU+HxzdCfZLjMZKUquBjEx4vlJsxQFf9MrtNoPHeAKKUM2jb058WRpc2Djm8JPSo4DUqSpG43b5XWQPNwAPQVSSJ6f/ozjuCFjZoW6y6oXA1w7bSoxdQ+olL6pymruYakChFtivBdpom3lmVC0n0nNsNOMOk6YJtbZJUSS/3Z8/AYig/O2OujPVzCqIRsV7qZpT3QmZJuCHsKnQwl9V+EKR/k9q2ndmn5fwH3wRT7MwXGrFSJqOCsm9WlNhRZwV2d6BoOnAV7MioIsYpb2PpT/nEqPueKEsBc2KX643vuMaLCTkqD7kdtz4aAoRuyNbMeKCS1hArb8WTVRbBMMSMeIGSogxm9p4Ey5HAHYVSTCFgwdkAH3jQi+b6lJzRlH0x7/oIUhS570RCBmdROsIbhJtzKt9kNPbAbibfQhcx+ReAOS3Osr4gqD8sHtjVTHcjyqptb3EIuOFeIzcDew0wFcvYt526+LLQUqS3HGM=" + }, + { + "id": "d7caf3d0-b00a-4bf4-8045-ea54b457c2a2", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "系统监控API", + "description": "api-monitor", + "prompt": "创建系统监控API的详细文档,涵盖健康检查和系统状态监控等功能。详细说明每个端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括健康检查接口,提供实际使用示例、错误处理策略和安全考虑。解释系统监控的实现细节,包括健康检查指标、响应时间监控和故障检测机制。提供客户端实现指南和性能优化建议,确保文档与代码库中的实际实现完全一致。", + "parent_id": "693df6d5-abb1-4b0e-b0ee-fa0cfcf10ec3", + "order": 5, + "progress_status": "completed", + "dependent_files": "api/monitor/,internal/controller/monitor/", + "gmt_create": "2025-10-08T18:18:22+08:00", + "gmt_modified": "2025-10-08T18:36:45+08:00", + "raw_data": "WikiEncrypted:/pxnfuZ7db/sgP748CYPEnnajIZ9eAOE7G8r6j42pVkNAjXGu0NMqCu4ydfGAfQ4GCItYufWEEmQ59/IYRNbh4TeLwCIq0wIYZR+tuutkroBmNLFE5voLalJsBHhYaFnQaIIcLYC0slAZsS9oHRLvxN81DhPdygvrXE/yMXvqwipS2laucJTknMAy6yPY72cC2uNaeLCUccXQ3+7TZiCyurymQFvMJUHg8rSJXfJoIQFZYpFpU3y/Wc0h1ncH+gv2NmpFz78Z+3zMmwDouKYevCRVsVcsYKlXyMsfuzm8QPyt6042xhOVfpXWsvcNPXcKAzofi2NhJLVNH4gyXY9dOMCyz0CHeSCdHZVJoHXKQx3r5gcEptf489enTsk3rhQIsv8aNO6Mf7YbqBik7Z+TipJEsfI/66sMRt4PeLANnfc6+A0bdAR3YTSIYXSf+EYmzy0UjkNy8u3X0Wa0z1ySvPq0dHmFhm8ZMM+zYSees1DL3E5EeOOW0tNbwLlf4VLPqsDSYdqhiF1sxUVTknZSQB4ENiBo6tN73myIn6Y5/Uce2xyeMbu7HxqGCXNtmtvGaQgT1JX1C+wE6j9UzZVFxCvtxa//B1R2r8XnccZrYESFrZ+I5/t4NNolLDcBtp+Ti2SpW5KMMbhl5ubN8n9diodZSJNprv1UPJHilQQqFiYvt8zQG0vqN4MWJPF8s4xuMTpyq01/rQ3AKddpKiYTsqG13TxIYLmzGzO14Nl7v1rd0fvJ3e0QCOUyUITbeGEVofJ0AsRKyxs7SzsaMHmnLa+MjOuG9dWlU92ibQsNfTs9pCvHQhcEq7oRkzH9bm1VPCDNUlxxRcPrNeL42ETGlrzl/3gfK6JiyPsYpspcC04xNu+AfT8lPmMKXNIuUKGIS/yd2ghbla/zUIYhEiOmQC2EM6CUv7YCOa5jSVT4/f/HbkHVOwcMz+rrCh72QDmLrMFnejLqMZ3NVp5/3OisLhAp5eEP+79XK2/iRn+H6Y0a1hsoe0p00fiqzmsCLI+", + "layer_level": 1 + }, + { + "id": "050aabef-4c8c-4892-849c-74a2e3feb22b", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "外部集成", + "description": "external-integration", + "prompt": "创建kami_backend外部集成的全面文档。详细说明如何通过integration包集成第三方服务,包括京东、天猫、Ctrip和沃尔玛等电商平台的API集成。解释OpenTelemetry集成的实现方式,包括追踪、指标和日志的收集与导出。描述Casbin权限系统的集成和RBAC模型配置。为每个集成点提供实施细节、配置选项和使用模式。包括实际代码示例,展示集成的实现方式。解释集成的技术决策、权衡取舍和约束条件。提供故障排除指南和常见问题解决方案。", + "order": 6, + "progress_status": "completed", + "dependent_files": "utility/integration/,utility/otel/,resource/casbin/rbac_model.conf", + "gmt_create": "2025-10-08T18:17:58+08:00", + "gmt_modified": "2025-10-18T22:04:37.4657332+08:00", + "raw_data": "WikiEncrypted:6V5sbJNGDAyDYhOBZelaU1rOxrf0dOOzAFdTG/qUxgWgnhYSEslMfkL1CRLZ3CQgEd93QD8haush522llnu67Doh76s5Ca+S41WwnEUyjrWkASiLiIoPvV1u9Tr5MJ8CbF84fStM1LCuyPWlPs/mlFNUTr24LC9t++Zu3Ik83S/sRYZu5Anrldz8wW8HccvYj9Rn20vd6tmEZliHCEV08zHOt86iCSIOrMiTn3nOoMbWtj74US6SnxRTIiAe0dSpWl5EUXR31FT/6dDmipJ2YFay1qoavAYP/UI4jtl2HDQtzbgWt8XIeqGtiUD1OXkwvdMhfnxiz+5clANNAbdXNngBv0jyDyUgSA9AoYTTEl9w41yu5vhE7F4cl0TeyL8LTuCgyZCS7XSwh3QLhuyD3zSZdwOWs9L/SqYpPsBVN5WrgIqpnqoHaXRqj6bAzpEvOx0cq5p3fgjQBhnGa1m42Zel3U9snM1riGCPy0zkuCcUW++pBwIoqkd1S3D2Oy6iVMV4dE6NKtDjYOXbUS1UnEVVTPH1LwTTG6CYwpx+U0NAXMbfEiF8k9UghE5GfLBvN/fhUbAzxt+HDEwSEVzJllfYXSasLi6ObdHeqm2wGnlMWsXcqE0P2ZjaQeF8KiEFm31p3vIPsvj4FVziPgkYK9QPT1pFAJJgDsrb3PpvJimsenaXhodnFODVOxoas6Qnk4A5W01t7n5qhzeb30qazovqIRMCVukoZnPDmKjWUxk43YyyZLeD43BkZ3pYiiRGjFIo3HX3wx99iA/MFheSEchJa8AWgWO3M6T2VdBDAl70B1Z2cgJrt9/ONw6ITr5LGb0J4twEwfxPZOAXS9FJNKbezsfTDWTR01YN9cemazmggbV0FiMr/httwX01Z2H5Nx+2po6zExOQdREJRSDXK9+Bcd5Ub3lKXGEAwtU5JDEihamP5bNx4DYkd2m0t2dCdAxTUJp/sDS7XZnB12PSeqnSf9EGC1mTHn1X5SoZbZ3eR2dbwxF0tyRs7rL2k8nHsjg6iXNNAn5DcbVik91lhrpLbY969BE0J3LsFJ9bQVSqJ+Zind7Rw1jU89i9lGjaGVfkHsad3NQWM3QF6yFQX2LuS+qeD6uCFpGb/kl/cPaT3+qrGM/vB7USeBgspgQksjgq39blrrRR7g/1bx4A4GN+S/EmOC/oJVQPIF+YfyWzor2o4iEZiervnUHnorgNjJJ07WRZb//KgtlGhzGKhmkNL73Hsp0WxOecTkIZFrKtt4Cv2RopxRvI66mJ9SRt" + }, + { + "id": "b24f3c8c-5f2c-435c-99e6-6ee42c47a46d", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "资金管理API", + "description": "api-fund", + "prompt": "创建资金管理API的详细文档,涵盖钱包管理和资金流水等功能。详细说明每个端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括钱包创建、更新、查询和资金流水记录等接口,提供实际使用示例、错误处理策略和安全考虑。解释资金管理的实现细节,包括余额计算、事务处理和对账机制。提供客户端实现指南和性能优化建议,确保文档与代码库中的实际实现完全一致。", + "parent_id": "693df6d5-abb1-4b0e-b0ee-fa0cfcf10ec3", + "order": 6, + "progress_status": "completed", + "dependent_files": "api/fund/,internal/controller/fund/", + "gmt_create": "2025-10-08T18:18:22+08:00", + "gmt_modified": "2025-10-08T18:37:11+08:00", + "raw_data": "WikiEncrypted:gLdwQ0KTVfy2nZNoG+5bdYizgJv16EHz36uF4KpBUPfyYMj4B2ukzPWea1pyWCEUGSSgvWMYpbGE/0eXLXpahXj+nH+hAZ1T5Uqw7u/veqBEMSd4ZN7RlGn3vv+9NmDgmZapIP+6vYH/S8FvnohYJDgPfroVhJsbTNWdc1r+OYfmMZXDkw4Jvi7EcW3p27E8UxGvqCpcW6V29NgKjhDHhujat8O0d/dG3yCMgFrKlXmYD/sAna9JiXICSNZtLhKAzQjQejQFVNebLsV6hDSvj8vWJpev4t3C+5MnzV/vyME3m8vPse/JGNVtfWlZblxEkyHM9EHKkl+y9lSwinSmrwBYqNjMhccJXHxBYeKEhXxsMf7UVNNhTvRyAPCllxzdsrFsI1PSrUJbjkLuBPtIQ5KWGZXO5ZklIoCP/MxvcrujKsi8ynEpCQ71VYFkV79LlyKKiP1Z2NznMXVrjFt2j9WJci28BcKND8fPSzZ1cVOGDBpxa08RAtE5D2qjOJ9L8BpEDo0TFtv9RuupBJDmBuSGWRxYRBa9c+8QbUSg269A1zt5mytOIlHm3CBHza7MKw1rh28mCwGi3B9XOEq+fJBpjqGDI0CaiMRc331/7foVEqTo+gAVYvRdTGzgcN5sVI+qy6GqKdvyFKDlJGmLgeby15Org+vgyff6iO6z7Ympy8xZepxmie7rEJrVoBjJaSCtXM9THYYSuw2CdW2BJbTHDfSdGsNL1+AwmOqVIbU9QLKC/9FF42HwnHgWAtZ6q9+pV8HUmaEmhcrxzlGiKCtoBtu7CMYTcXwvN1ZeH4fwcwuCFoaPzrJabjIurTs05pIKP/tlzP1kG1dD2e73NKcnx5KeHH8zdGTq5csTIUvezoWg0TshToj4yd2Ce6fIuy5dOEDxbc6JQYy/WNVAqnV2oFH4DtDKJGQNSjzMlDqPzs1VIFTw8JHLozliPH6PFqzilC9fLI1bp9d9fpwGnSrPjjZldPtYKbpMwJjW41KYKt4BXZnjpp3XiVZnBh2ACAyRKfdLeznjk6c/YhLEKg==", + "layer_level": 1 + }, + { + "id": "56f928f7-77bb-40cd-b1ba-80079defed47", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "日志与监控", + "description": "monitoring", + "prompt": "创建kami_backend日志与监控系统的详细文档。描述系统如何通过OpenTelemetry实现分布式追踪、指标收集和日志聚合。解释monitor.go中实现的监控功能和cmd.go中的命令行监控选项。详细说明日志级别、格式和存储策略。记录关键性能指标(KPI)和系统健康检查机制。提供监控数据的可视化和告警配置指南。包括系统性能监控、错误率跟踪和请求延迟分析的最佳实践。为运维人员提供系统健康状况评估和问题诊断的实用指南。", + "order": 7, + "progress_status": "completed", + "dependent_files": "utility/monitor/monitor.go,internal/cmd/cmd.go,utility/otel/", + "gmt_create": "2025-10-08T18:17:58+08:00", + "gmt_modified": "2025-10-18T22:05:41.4965326+08:00", + "raw_data": "WikiEncrypted:fO6ZyTV/+zFGGiGBj2YmQFZZh2B/tCl8VpzMyKHwoVG2Igcp9ko+l59aB87pRBKmPklfl7BSGuvixmNrfwMmWQxMzVwUymNIandfPCI58hlbQlqRgIi+ICKMQENuEKEjR2ions3uCUq+qhKarJTToHVOXp0nVAS7juzle/+W9nwF4i3U5NGByOXHzYUuevprmr9bxS7i34AZJvFVOKhlXuO+73P1N/dmmcX1dxZWaLyaN8jVFmOJXbH9BXydVPxvKBodJucsjbTDXfg4pQa6cESHukFR98S1csG57kcGSkscV9ykKWRF9ggYTyXhIoqF0RWirI+cLlab2WJHgM1WPBzqnhew0OV1IbRM6AE2yThwUxCdyiuG1HITVzftfn8khF4yGN0b4IcHZULP/+mXssMACE8xF5GxreYjrvSYd16wUbdUn7m5MiQnIxbfU+pmw8P+RYRHNynBdJMP67qIk1Fgd77rHmdlaWeTepcng36Ed5y2oE9PQ3JWD3+PCk4QrP5j9boLfUw6Dyn7w8gfF/cSksocnCuKZ6GCOq0CUqWc89UJHmMZD4za7f4Pr/6TDq90fOfuzZwu3Bh9gsev4fPGz459XO2bMxZn+5ZT4IgnEiRkQlHZvxMIx6NtunvKPU0WZZQB6SA3tPMcnezD7f7cE4Ez2Gwk9MbtoXxRmAEeTyQYh6u2gSq81FE/u/giUC0TTJfchjFNz/rSf3KNlMmLLLrGtCsVFgZzo8RHnzIJ/rnol/eqs+K8vBS/ZHcD1GHVxj916N4mq69Xw3ImDRk5S6W1wPzpG3GgEw1bwmYcj6IVQolRBF6VOEf0iGlQHjrvL2YdcuNQ20fksmhOBWbYmXl7W4h0oBc/KiKTKag44ttfl02IZy4t1jUthgoAFfIDXgEikUJgaZj00PfTRfMwXbAfJYWiVn9hEjEf5WBO6FjabSGR8P/jx+ZHZ32k/bcoRofPswULCXBQzqVJQxHCZsI66mig1Q8LJIPjJfSORL1/NvUl/tzxjfB2e4+rmsH8Zhs8R8W7tLBZEqjMkqZNNHsMdHOe/SGQxQNaZIepV/YRvoXjZGeNZTVaAfIzjC9hELFZb/wUNaDSlF4vgdtB3ia1lmrcTbKcHccGd+o=" + }, + { + "id": "5309a75d-a6b1-41af-83ab-5dcaa399435f", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "渠道管理API", + "description": "api-channel", + "prompt": "创建渠道管理API的详细文档,涵盖入口管理和渠道配置等功能。详细说明每个端点的HTTP方法、URL模式、请求/响应模式和认证机制。文档应包括入口创建、更新、删除和查询等接口,提供实际使用示例、错误处理策略和安全考虑。解释渠道管理的实现细节,包括渠道路由、流量分配和性能监控机制。提供客户端实现指南和性能优化建议,确保文档与代码库中的实际实现完全一致。", + "parent_id": "693df6d5-abb1-4b0e-b0ee-fa0cfcf10ec3", + "order": 7, + "progress_status": "completed", + "dependent_files": "api/channel/,internal/controller/channel/", + "gmt_create": "2025-10-08T18:18:22+08:00", + "gmt_modified": "2025-10-08T18:37:07+08:00", + "raw_data": "WikiEncrypted:iIHnz7p+SPRw5X8B3MUgFa3SWR2/Ac9jwMRHn97q5TAg/jMwINtcbL5tYBTv90hQTNAlft0onNagd77WQYgFAUbr/hurYRZ+mt/lb3o1rOqpBK12mmTfxKl2ybT5ohYhbercVyHXiabficTisH8KWoyrZ566Ui1H9pqtQF/GrrtIi+Td4U8o0gtHAdEZCfaPNmO7CrqJgSjnDgjRbziLAtZ0EmCF6fqGQS0izR81eUDwq59erHoiKZ7u7VAVGSBS67EUL2KHYHgcApNpFCWBLPOI5UCp+Iiwnp9iUlxZv/E8E6X73U2BJk4SI9y4vzh3Ttn07qyu8hKusTgTgyXSYyn6L+PrdPwPsnWR+zcRttRRAeKkPzNaZxkTmcR3w2aIb/lbQ9jGcfXPO+C4n6MNW00ROPColagBltNS2+YthHqmXHlzMxDHZKwQ44RXfgyM5SpvkQWRdYLNgqtokMd4LJ3iS11Gbo3Bf68UPu5UBcpJsri++zY1OTRgIM4j0JI4fVLwqMHieHVZ7RInKj3EKm/W4TI1SZbKSUxA7yAqw0nM3z4sLmQXCXzWEDVzFfgZaofr6DzZlfJ8LOBxJ7AGuz7+agPVtR0DMvmeqiS5f/liW+5TninqNXkLBTGZGhdm75y5syHJucfgCS9DsZXMJW0XKL8bPZZS/ji1Rda4BjQZtmJ5Z+aPGt6YkCmo27N1t+wzAE1+t37Euom91RpXDFxtKv83XKgym9d7m0yvAIn3dUp+QM8FV414mAOppnUG+8J1H90QPv24YVIF12YMnhoZR93pUSYidhAZhxSrEcZvLH/d16z+AgVlTdUH3svOmwikAh6cZbqYfOzfG+uwWxlzCZ1CDmq9XYLntOR42UsvOivTwQWg7+sUaFbCO5CAV7mF5XiDmNJ4L8YMTvziX7RrGD3FWX32UKCL0VYEhK8w2YQf800Qw9IK/NSekK678tB/FLKNQXH9KTFL3I5dxPpc43UL4thkeVlcnSAvGVeyh54KklcwIR/SkVNT73El", + "layer_level": 1 + }, + { + "id": "ad94de09-b7fe-48cd-9a8a-bcfa78565c2a", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "安全考虑", + "description": "security", + "prompt": "创建kami_backend安全架构的全面文档。详细说明系统的多层安全机制,包括基于JWT的认证、基于Casbin的RBAC授权、TOTP双因素认证(MFA)和数据加密(verify包中的AES ECB和MD5)。解释每个安全组件的实现细节、配置选项和使用模式。描述身份验证流程、权限检查机制和会话管理。提供安全最佳实践指南,包括密码策略、令牌管理和安全头配置。记录常见的安全威胁和相应的缓解措施。为开发者提供安全编码实践和漏洞防范指南。", + "order": 8, + "progress_status": "completed", + "dependent_files": "utility/verify/,utility/mfa/,internal/middleware/auth.go,resource/casbin/rbac_model.conf", + "gmt_create": "2025-10-08T18:17:58+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00", + "raw_data": "WikiEncrypted:6g8iffgXzed698CsRven+TxLJxsKi89Zg4cHxSgvhEzr/4bcgtkHOokh3q1+kVqE1tnaxONz31UFJtXDgUZL+vdV+t+IhM/TRGE1OlPebhRkyHA+yPymEcTKks0vO/fj2fQLtFRk00DPWThrLdA8vUwRH77Q32mgd7eyHBog20mYf1lRn8KKFeWdqwWZPEdRMkGMmgHUA96Im9yLeyuGqrdya5JJEeiLyLj9rUFhkQZoxl+sR6NIPeauGuYWoh3MshU8jdmI9vT1WOHPjjdWggrf6SJc6KPKy6kIUrPujJYq48yOinbDA8mCKOghP3tgraLBN2/rm7uOoYPavRuwXYjfuS4Bu2RuHPHuVJ+soIPrb1J9X13DW8irgPPZcjjukzL1cqVpmZ5mzEnN/DY2/wCMQ3L5AgH8R3B7G/bcv5ji31sZjxLyyMF6xoqNVAl9E9XXzHWM3bPCcJxXRVmw37qJZyR2BN8gEoFc471qQueIdf95b4JT9EwJEDW6uRKG2/qfrlU/qVwBCg3wCVtz7yyQdzeHYPg7MW8doys0/4JYBTCitk8wySH4SRXbLJIc+j7b3cVKwq+ltIUZze8Jei22pClgQRU6A9FT4X6EHZKld7DIqkyAvU0P/1C8eIJ5hTkTO7ck3+W+h6Vf0R5s+0uh/sOcCTavFP/OgZ46O7RBw+YOv/dTEwm5scteo56AdTeSVYvhUDPG/w0HE0p6xt8fhbEQhbXZi21FfTZZrKhac7VTS30km9dLm7ycPvCHxPWo93OkMz7eL72nmQBWtKH7+61Z5Fbl2JQG4+AG8SjWsCGcJufBFYhDiLqk+u7JXMCq8qTDjB3+xhcHXKJhPkDvsin5rL0yTupa2h6tJJAA6IIGLbrYHzpMVoyx6bytf9Hyi5xjwoylMYScUywttZM9qp0oWKY54LHcLuz1RmE+5O7oXjhEeP7B73DLfCzpSVz7gckEkgbAdFtp2QbuYlN8Lcb2f79lDOUcJsvg8Y6BYR0DkXYVVBNbvWCBcvU+kPyO9/KZjWJNmoLsOTq8Uyar0nfOYe+dzsJzJkQypSgeOayQVjAKMaISOo1Fu/6NLFkM9+crrDivnAhwkoOT8RzcDegEkI336FxALNQGyHY73GjEvTkUtfn9rTapDUVFLo0ZGPHBxYYfBVKUNByKmry0NFiWjJ/o0YUp3001PQDNDSNf/mIet6apQlXgK7Kd" + }, + { + "id": "519aff94-32db-4783-85f1-071d6c314ff3", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "部署配置", + "description": "deployment", + "prompt": "创建kami_backend部署配置的详细文档。解释如何使用manifest目录下的配置文件进行系统配置,包括config.yaml中的各项参数含义和配置方法。描述Docker容器化部署的实现,包括Dockerfile的构建过程和docker-compose.yml的编排配置。提供基于Makefile的自动化部署脚本使用指南。详细说明不同环境(开发、测试、生产)的配置差异和部署流程。包括Kustomize配置管理的使用方法。为运维人员提供完整的部署检查清单和最佳实践。", + "order": 9, + "progress_status": "completed", + "dependent_files": "manifest/config/config.yaml,manifest/docker/,docker-compose.yml,Makefile", + "gmt_create": "2025-10-08T18:17:58+08:00", + "gmt_modified": "2025-10-18T22:04:18.5414624+08:00", + "raw_data": "WikiEncrypted:XJiAh4Py4zdOGBbpygpFvNM5YJoFCwLwhMBuV/C58fOZOPUaHJKo94aolWSN1qNGMLxoon4t+emUd9D/p7gwzvwJ/vluqP9Sp8eGHboCI3LEJz6ISr3JAXRSRsIB38jMipXGleUHXpvneh7Dexhh5G6wPFr+pJBIK1yptWrPI+5nX+N6cthMlivGNb/bkD/ENhls+X3raWhzLlghho8cBf5b9Cp4sLtgs41hEaoHShLHGB3K+ZBFDTaRYea4IYLaevBYUmvh7N5BWtZd8IiOmmNPIhX+phk8GrnHPghYSxo6FoezuPyRzqXx1Mz6X+JWIFl24DUHMReqHFmPzqMoy8lJLapDUJ3YhbzAss+zUx805+7AbMFh2N/ZyoaeH4g4gqxkdJ4iJFlULcFvzPP4Fj3ZETJziR32P9Cx0++Ju0tEsFPpBdexYujrFcKqdVqtmk7CarLxxWFlN8rTm4476jRU2Skjx6SkoAvWlxxE4eCLzoBKjdqxXis7jqd2KUE2cYuBfXG4tNrvIosBNEDaMMExaAe5YGibc7FbQddTx3zFAYwpgp7MyodjHbnySgPv1Z4v7gF4Hzaqgzp7ygutrGTwUnKrVWNNQrQ3CdFfv1UIufMAoih8UTVMyyrNr7CQjir08GtwgYKQPiQ4f570FqBGD/4foRJA/GMKvUokAj2umlI6qhbTCZB8uBZBmFA1YBJdI7QnG9gKxrcB+Yb6JwGNp34XI+fvjiuyfPF7uYbkDc5aS6iemGf/iVurb+RPwca1kXG8u3JpuMZUxy/cBTq4gA20iuVPxTliB9B7/pbct7oxb6gXkAH5TKfw3Gdu9fS1y7XIRVt8zjWOuYvaH7lQwPlQKCH8muApkvPle9Fv6cpWkRt0jFGcb7NlJVwc9hIfh729ZR53EBTSLkfyiC9PD4c2ADkVhtccp/7MBh6FrMLYxkcTw7PF9ezWJxDq3PrnRry1CAlh4P3zfl/n2l89eRffw/aG7W0Q4qblGl4jLDOqyXxtiMvY4Te4PFd1RFVOA80IW6xtjxOcr1cVmjbmTsUhE5aNZcRkB8Dxf49CFS7PS/kYcM2PJLaGU7+pWk6/cTcr/Dg8tDs6sne/WXbfhSyOKFJRfGl7piVyxksvp/srp/Mr0y2oGL9WyKbHxDh3DyYxaukyUCPmXZbN8g==" + }, + { + "id": "6c6c6963-ea94-43ef-8abd-97ab6817a48b", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "测试策略", + "description": "testing", + "prompt": "创建kami_backend测试策略的全面文档。描述项目的整体测试方法论,包括单元测试、集成测试和端到端测试的覆盖范围。解释如何为业务逻辑层、服务层和控制器层编写有效的测试用例。提供使用Go测试框架的实际代码示例。说明测试数据的准备和清理策略。记录代码覆盖率目标和测量方法。包括性能测试和压力测试的指南。为开发者提供测试驱动开发(TDD)的最佳实践和常见测试模式。", + "order": 10, + "progress_status": "completed", + "dependent_files": "internal/logic/,internal/service/,internal/controller/", + "gmt_create": "2025-10-08T18:17:58+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00", + "raw_data": "WikiEncrypted:Xd2Zu8BM8p49theGlFJHkHqkA5ycuMpwkltd7rjxfkZm5u2F/OCOa2rxC3NxLrZDZf5D15q4Vh8tHCK9cPrOS4+Ys3urQt//f060Y4iIHh0l1A28UoBx4zw0WH3M31LfLAxkTXkOcrkF5ptnw52Idh6trbx5eJS2Qv+BcIzGv/Iw3x2pAWTgHakxyzRAqrc1k7BDI4v7XRmjHtE2IpxaQQ1aRofarEJM4MyjQfoDXHYSW8+3BB/rIqmowV+wDhA0o9b5SkR3FDUW6zx/cusIqFWZk/E8ssygQCH92MhSu1TDh7dMd3oLVFHt8qweO2CeDQeBoVaqprQtzFydOqViXVvUbxt3J49Uu/XsYzuy2y9gkwK3BwWK432ZYLCE+TWL6kcU1LvWM5MNSnWuGzOcPYn5QXe0o7M7Jw0uSo6luSgbk0g5PqKn/lvl79JWmtgOZZgyHAL/2hOegzUFr9e5VmFSCTJMrD9W2HXeCpQr1IJuo0bEdoBQVOimVUmnn+dAiarIRzwyeOYNBkLQFRAX8l/FyKQWEE4ApGtZc5ATGdj/1nx0+aQ8IFVjwlqm0n+vM+Osh8OLVPDt9uXwJwrz0I3jphsV4Ml2A+7g2pu8CEw24LB9nnY8bQszP2CCoZNFm4qFdWxelglVd7EsL+ai2vTQtsW0M1FnJHcQoaNzKrBNXZ36aZzUrIkVOUzOPDNGBQqANaVf31s6bnJPy9hbTv88NsQu0FbvNSue+JJlY9wzKRLof/eMacip+HUjo5ETmUhP2ocTHL1IyYpaDEHbn3tfw7h7q7gWngIdXTg/cWpTfnqaYWLuhBdLSpUoUSgbr/mIAASCKNBmH9FvjcV9FADEFcl9P93PTrkoo009k2XSR7sGLDMS6KnwDvoM65t19TQDgLj5s2bKPAwe41GpH6RsJYk6UZ98moX0xtBpsWAKDYiyTxNLLDYYuNoL9UBg0EhXm9uLrMC28S8rd70zT767Mf+MbJEx4/GyUt7uBSJcsWBtNgcuw8aVwd0QTuTj" + }, + { + "id": "35d30eb8-d12a-498a-a19c-c1b6ef95145b", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "快速入门", + "description": "getting-started", + "prompt": "创建kami_backend的快速入门指南。为新开发者提供清晰、逐步的设置说明,包括开发环境配置、依赖安装、数据库初始化和项目启动。使用Makefile中的命令作为主要操作入口,解释每个命令的作用。提供'Hello World'级别的简单示例,展示如何调用一个基本API端点。包括常见问题的故障排除指南。确保指南足够简单明了,让开发者能在15分钟内完成环境搭建并运行第一个请求。", + "order": 11, + "progress_status": "completed", + "dependent_files": "CLAUDE.md,Makefile,README.md,main.go", + "gmt_create": "2025-10-08T18:17:58+08:00", + "gmt_modified": "2025-10-08T18:26:09+08:00", + "raw_data": "WikiEncrypted:qfgbutC7oyxR6nMxrwk1ODnNMBEQ3/sG78fQT1yXWjuiNN7p/9UiziFtG8VxSN3lDZPQFx0/QJ3DnzLYLtDRB4nGAaU70RZkhO+ON1gRN4x+OHmdrMLZxTrt1rT6pGA304dmEU5OCbFwPbamZhWwUiBN85RO9DSQy2tzy/P/lVYlefkzZMkpfKXb9Hr2X9EYwdxWad8uG+wdSo7mYQ6g2cGIh6DXj5RS83lPDobvMdSy2x/+meDkNsdZVrtgqWSPSfZB7kbAgbAwqL66wuPprOWkltTYURGRfQIKB6OhS+r9VX3YXOm+gQXKVeTKrOzf4NXqlD25+zhbtCJ3+4IzXOpl8s5skN6wQcclYhNU2fZ0+dhVr2zUOJv/Swtb2ppsHzKz/H2CZ9U9jz+M19LpXEq65esOK1cJDloyR0A/LEuZREMHX/itrpygGEXG1NhnJdnffjF9snrEFtX4to8GEHJTSUJ7xAbIWr1Eceb93J0pKYLGy9eNXaKuEU2A9HyZHdkI5409eQvTnIABD7JVK8EZlcp12EI0LtM1fFMI6/cvAOk826mSlFvoy6J2JdN0zN2mhqlQ43bWoyVFPq29j8ZmAVA/rf+wSQoXZS7UKmeuGosnjq6MMZOZ/KILspUla3seZ7O5+Os1gd71bHfOuCkQPJUQWWtPeSbhF08+pwWOkmbEM2+yo9JwnDh5GdRaqRT4BMZgREKFdqIUVvo4XY9GCyXJJGce0AKXrI70YRhapEjIV1rF7jRZ52QQcEBvRl6JsFcZEMkKnGyOHEZCVtmvAW4gI1yJ1XmCM7RzER77Q0l9IzJlSNp6SVCHz3Tqy1gDWAlPNHwCCsEn/7GZikekXguvT5jfZBNNtrpFH78RmRIXRV9qCLNZaBnnZmOQbzPjFNBy9v0ZQHFqYW6HPYyMlMFVZtZibhPe1UDOm22OOmnwEzdlDtUQZpU/ZIeftMXuXgPoP64qn7ytqc6gPu59MXlUVl8D3G4+labxbVg=" + } + ], + "wiki_items": [ + { + "catalog_id": "802f0a8e-251b-4bdc-9194-bfdc2122b3bf", + "title": "技术栈与依赖", + "description": "technology-stack", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "2d252858-5e54-46c7-8333-19753b85e57a", + "gmt_create": "2025-10-08T18:21:57+08:00", + "gmt_modified": "2025-10-08T18:21:57+08:00" + }, + { + "catalog_id": "8292f51b-85c1-41d5-a58a-50585ba999d1", + "title": "项目概述", + "description": "project-overview", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "ed77f21d-2b02-47a9-b2cb-1f1d36e06b8d", + "gmt_create": "2025-10-08T18:22:33+08:00", + "gmt_modified": "2025-10-08T18:22:33+08:00" + }, + { + "catalog_id": "e71856cb-fd63-47f5-8f0b-2dd3d29fba10", + "title": "中间件与拦截器", + "description": "middleware", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "6d5ebff3-909f-4c98-92c8-8c0d636415bc", + "gmt_create": "2025-10-08T18:23:25+08:00", + "gmt_modified": "2025-10-18T22:05:40.6632524+08:00" + }, + { + "catalog_id": "b8ba5dc4-8d15-4b61-86e8-07a963bd3fa8", + "title": "数据模型与ORM映射", + "description": "data-model", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "5ff3fb8f-241e-4d7b-a9f7-3f265eda053f", + "gmt_create": "2025-10-08T18:23:37+08:00", + "gmt_modified": "2025-10-18T22:08:05.6545321+08:00" + }, + { + "catalog_id": "201b5004-c469-41f6-a407-c98892822b49", + "title": "业务逻辑层架构", + "description": "business-logic", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "caeb482b-4671-4692-98b5-948f768bcf2d", + "gmt_create": "2025-10-08T18:24:00+08:00", + "gmt_modified": "2025-10-18T22:05:30.5256117+08:00" + }, + { + "catalog_id": "050aabef-4c8c-4892-849c-74a2e3feb22b", + "title": "外部集成", + "description": "external-integration", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "32329179-a4a2-47e2-83dd-1a93c046af96", + "gmt_create": "2025-10-08T18:24:17+08:00", + "gmt_modified": "2025-10-18T22:04:37.4667567+08:00" + }, + { + "catalog_id": "56f928f7-77bb-40cd-b1ba-80079defed47", + "title": "日志与监控", + "description": "monitoring", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "7af63f20-e74f-4c92-af2f-3124616b0dfc", + "gmt_create": "2025-10-08T18:24:50+08:00", + "gmt_modified": "2025-10-18T22:05:41.4987407+08:00" + }, + { + "catalog_id": "ad94de09-b7fe-48cd-9a8a-bcfa78565c2a", + "title": "安全考虑", + "description": "security", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "8987b1d6-99e5-4387-8d3c-60e739a30e20", + "gmt_create": "2025-10-08T18:25:14+08:00", + "gmt_modified": "2025-10-11T17:27:31+08:00" + }, + { + "catalog_id": "519aff94-32db-4783-85f1-071d6c314ff3", + "title": "部署配置", + "description": "deployment", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "056cda49-d96e-49a5-831c-7def9872435e", + "gmt_create": "2025-10-08T18:25:27+08:00", + "gmt_modified": "2025-10-18T22:04:18.5425051+08:00" + }, + { + "catalog_id": "6c6c6963-ea94-43ef-8abd-97ab6817a48b", + "title": "测试策略", + "description": "testing", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "26c0da0b-10e1-46fd-ae3c-e0e7b23135ba", + "gmt_create": "2025-10-08T18:25:41+08:00", + "gmt_modified": "2025-10-11T17:26:03+08:00" + }, + { + "catalog_id": "35d30eb8-d12a-498a-a19c-c1b6ef95145b", + "title": "快速入门", + "description": "getting-started", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "8148be9a-75be-4ed8-acba-f6008757d0e0", + "gmt_create": "2025-10-08T18:26:09+08:00", + "gmt_modified": "2025-10-08T18:26:09+08:00" + }, + { + "catalog_id": "0acd557b-c455-4420-956e-96a4a67cd7e0", + "title": "用户数据模型", + "description": "user-data-model", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "e4fe353d-cefc-4899-9e57-39fc9f112127", + "gmt_create": "2025-10-08T18:26:32+08:00", + "gmt_modified": "2025-10-08T18:26:32+08:00" + }, + { + "catalog_id": "eaa525f4-7640-4d4e-84ae-7624f8b5c790", + "title": "卡密管理逻辑", + "description": "card-management-logic", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "33150d2c-ac78-4784-a31b-e9d342cc880c", + "gmt_create": "2025-10-08T18:26:44+08:00", + "gmt_modified": "2025-10-08T18:26:44+08:00" + }, + { + "catalog_id": "681cb8e8-add7-42cb-8297-72df3436bc74", + "title": "权限管理API", + "description": "api-auth", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "050adf51-c0b8-417b-8e31-5502c8d7ebcc", + "gmt_create": "2025-10-08T18:27:26+08:00", + "gmt_modified": "2025-10-08T18:27:26+08:00" + }, + { + "catalog_id": "d49ad99c-afba-4362-af4e-ff689d5d94cd", + "title": "电商平台集成", + "description": "e-commerce-integration", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "b64a6df1-5797-4877-8b53-29fc0fdad59d", + "gmt_create": "2025-10-08T18:27:39+08:00", + "gmt_modified": "2025-10-11T17:28:30+08:00" + }, + { + "catalog_id": "965a1a48-9a08-4f01-9b4f-1f1a51c82165", + "title": "认证机制", + "description": "authentication", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "bb84a187-9957-4c61-82b0-b8997f3b306a", + "gmt_create": "2025-10-08T18:27:42+08:00", + "gmt_modified": "2025-10-08T18:27:44+08:00" + }, + { + "catalog_id": "dfd2209f-82b2-4b3c-84b4-8fa7f91207e5", + "title": "配置管理", + "description": "config_management", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "d2e0d8f8-6a5a-4d1d-aa94-30a022535241", + "gmt_create": "2025-10-08T18:28:10+08:00", + "gmt_modified": "2025-10-08T18:28:10+08:00" + }, + { + "catalog_id": "5ffd09f4-939b-4b8b-a254-494937471526", + "title": "订单处理逻辑", + "description": "order-processing-logic", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "2ab1acd9-0488-4f69-a292-63359e8a485a", + "gmt_create": "2025-10-08T18:28:45+08:00", + "gmt_modified": "2025-10-11T17:28:54+08:00" + }, + { + "catalog_id": "4bf77667-f501-43ff-8e67-ed1fa1562255", + "title": "订单数据模型", + "description": "order-data-model", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "f42a4fa0-61ee-471d-b8f0-9dfa22159b7c", + "gmt_create": "2025-10-08T18:28:50+08:00", + "gmt_modified": "2025-10-08T18:28:50+08:00" + }, + { + "catalog_id": "e047b856-1a8e-4ead-bda6-66d7c3ab4651", + "title": "授权机制", + "description": "authorization", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "b52b76ee-90db-4464-bb9d-431b10755e6e", + "gmt_create": "2025-10-08T18:29:44+08:00", + "gmt_modified": "2025-10-08T18:29:44+08:00" + }, + { + "catalog_id": "3885dee9-9a55-4da0-8506-1a84306cae21", + "title": "监控系统集成", + "description": "monitoring-integration", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "f071af41-6de4-4751-8a76-5e5d5d0c02df", + "gmt_create": "2025-10-08T18:29:59+08:00", + "gmt_modified": "2025-10-08T18:29:59+08:00" + }, + { + "catalog_id": "3c6ca985-3423-453c-9f11-d9030f798abe", + "title": "容器化部署", + "description": "containerization", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "33c05b7f-e793-4a3f-bb87-9c6ea22d7e63", + "gmt_create": "2025-10-08T18:30:37+08:00", + "gmt_modified": "2025-10-08T18:30:37+08:00" + }, + { + "catalog_id": "aaf3daf4-4a28-4e81-8d88-4453361c2ac6", + "title": "商户管理逻辑", + "description": "merchant-management-logic", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "c46f3f6b-d36e-48a1-84b7-1e14cb598119", + "gmt_create": "2025-10-08T18:31:02+08:00", + "gmt_modified": "2025-10-08T18:31:02+08:00" + }, + { + "catalog_id": "8d18de48-44df-4825-825a-d6d8797a330b", + "title": "卡密数据模型", + "description": "card-data-model", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "06c4893c-d2e9-4b61-a99e-f66a1d2cdfc9", + "gmt_create": "2025-10-08T18:31:25+08:00", + "gmt_modified": "2025-10-08T18:31:25+08:00" + }, + { + "catalog_id": "079920b2-aa64-48aa-a92d-8decf24623b1", + "title": "订单管理API", + "description": "api-order", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "ba1c4880-8600-4564-afa6-175208ea101b", + "gmt_create": "2025-10-08T18:31:48+08:00", + "gmt_modified": "2025-10-11T17:27:33+08:00" + }, + { + "catalog_id": "8b232595-64ae-41b7-95c2-1ae6428857e3", + "title": "数据安全", + "description": "data_security", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "9fed567c-4708-4ae0-88b5-a49c8b5f0a4b", + "gmt_create": "2025-10-08T18:32:10+08:00", + "gmt_modified": "2025-10-11T17:28:55+08:00" + }, + { + "catalog_id": "f5f182bf-a48c-41f1-86f7-12c882b3775a", + "title": "权限系统集成", + "description": "permission-integration", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "d5e98815-ab00-4c12-8402-2fbc852d8dbd", + "gmt_create": "2025-10-08T18:32:32+08:00", + "gmt_modified": "2025-10-08T18:32:32+08:00" + }, + { + "catalog_id": "2b16f9fb-3e48-4abf-a52c-5fcaeb1467f5", + "title": "自动化部署", + "description": "automation", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "c2fef000-7272-4553-b8e9-650afd08aef6", + "gmt_create": "2025-10-08T18:32:49+08:00", + "gmt_modified": "2025-10-08T18:32:49+08:00" + }, + { + "catalog_id": "93bada60-b20a-4977-b82c-eca224ca34f6", + "title": "风控限制逻辑", + "description": "restriction-logic", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "077abc2a-81e5-4e9c-9a72-757f4765021c", + "gmt_create": "2025-10-08T18:33:33+08:00", + "gmt_modified": "2025-10-08T18:33:33+08:00" + }, + { + "catalog_id": "f5173a3f-1bbf-4ffd-aefb-fedf3a92a65e", + "title": "账户数据模型", + "description": "account-data-model", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "399f12e9-6620-446c-9e02-808c39c61bba", + "gmt_create": "2025-10-08T18:33:34+08:00", + "gmt_modified": "2025-10-08T18:33:34+08:00" + }, + { + "catalog_id": "c423075a-af3a-4aa8-aeb1-eca97be6acbf", + "title": "商户管理API", + "description": "api-merchant", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "e55523f2-f9d0-4297-b67d-dc4fcbee269b", + "gmt_create": "2025-10-08T18:34:16+08:00", + "gmt_modified": "2025-10-08T18:34:16+08:00" + }, + { + "catalog_id": "e7731430-b57c-48b6-b326-56a4297fa5b6", + "title": "Kustomize配置管理", + "description": "kustomize", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "4708f37c-6c92-4fa9-aba1-fa843c3863f2", + "gmt_create": "2025-10-08T18:34:17+08:00", + "gmt_modified": "2025-10-08T18:34:17+08:00" + }, + { + "catalog_id": "f6a6925e-fe4d-4480-858a-b25ee0c9c478", + "title": "双因素认证", + "description": "mfa", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "d15e79da-d03f-46a7-9939-d486c82bdd9e", + "gmt_create": "2025-10-08T18:34:59+08:00", + "gmt_modified": "2025-10-08T18:34:59+08:00" + }, + { + "catalog_id": "c31af7ce-10ef-44f2-9bb6-b8772f1bc957", + "title": "系统配置数据模型", + "description": "system-data-model", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "d106423b-19ad-4e22-8a4a-567e2ff27e36", + "gmt_create": "2025-10-08T18:35:37+08:00", + "gmt_modified": "2025-10-08T18:35:37+08:00" + }, + { + "catalog_id": "71487087-d57a-431c-af0f-f9ce8536c80b", + "title": "风控限制API", + "description": "api-restriction", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "e65b9b9b-d210-44c8-8f0c-85e0422070d9", + "gmt_create": "2025-10-08T18:35:55+08:00", + "gmt_modified": "2025-10-08T18:35:55+08:00" + }, + { + "catalog_id": "495d1fcb-e69f-41b5-b893-4efb8ffae28c", + "title": "系统认证逻辑", + "description": "system-auth-logic", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "ab420b44-4f24-4bc3-a44c-bc68b0868ab8", + "gmt_create": "2025-10-08T18:35:57+08:00", + "gmt_modified": "2025-10-08T18:35:57+08:00" + }, + { + "catalog_id": "d7caf3d0-b00a-4bf4-8045-ea54b457c2a2", + "title": "系统监控API", + "description": "api-monitor", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "8e29abbf-237b-418a-b169-69594db3a3e6", + "gmt_create": "2025-10-08T18:36:45+08:00", + "gmt_modified": "2025-10-08T18:36:45+08:00" + }, + { + "catalog_id": "5309a75d-a6b1-41af-83ab-5dcaa399435f", + "title": "渠道管理API", + "description": "api-channel", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "f5a8ad7a-5455-4dda-8fa1-28c34b83dfb0", + "gmt_create": "2025-10-08T18:37:07+08:00", + "gmt_modified": "2025-10-08T18:37:07+08:00" + }, + { + "catalog_id": "b24f3c8c-5f2c-435c-99e6-6ee42c47a46d", + "title": "资金管理API", + "description": "api-fund", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "51819175-b0b6-4391-899e-6d9466cf804b", + "gmt_create": "2025-10-08T18:37:11+08:00", + "gmt_modified": "2025-10-08T18:37:11+08:00" + }, + { + "catalog_id": "f7bc4c8d-64a0-4c2c-a17e-cd38987a94ef", + "title": "Apple卡密管理逻辑", + "description": "apple-card-logic", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "4cc7d7ec-1470-45ec-8b91-d43b0285ff1e", + "gmt_create": "2025-10-08T18:37:52+08:00", + "gmt_modified": "2025-10-08T18:37:52+08:00" + }, + { + "catalog_id": "cae0b323-5cd0-47e9-a902-06ceae30545f", + "title": "Apple订单处理", + "description": "apple-order-processing", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "753b0096-e6c4-42d1-aba0-93c8df17fdc9", + "gmt_create": "2025-10-08T18:38:12+08:00", + "gmt_modified": "2025-10-08T18:38:12+08:00" + }, + { + "catalog_id": "6810876b-78f1-4c9d-a2e4-a82d03615272", + "title": "IP限制机制", + "description": "ip-restriction", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "0f130c1f-7f7b-4517-97a1-2d3646bbd246", + "gmt_create": "2025-10-08T18:38:32+08:00", + "gmt_modified": "2025-10-08T18:38:32+08:00" + }, + { + "catalog_id": "b5d20329-a5b6-4db0-8325-2b83ee9a2c52", + "title": "权限规则管理", + "description": "permission-management", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "8b580d72-5612-4fa0-b850-b3a7d72c1e19", + "gmt_create": "2025-10-08T18:39:14+08:00", + "gmt_modified": "2025-10-08T18:39:14+08:00" + }, + { + "catalog_id": "071ef93d-b914-433a-b69c-a4ec42c36381", + "title": "订单表单管理", + "description": "api-order-form", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "61e64814-3402-4560-ac80-de2897628585", + "gmt_create": "2025-10-08T18:39:17+08:00", + "gmt_modified": "2025-10-08T18:39:17+08:00" + }, + { + "catalog_id": "cc12ac77-8ff2-43e0-b014-8cbffbaa022d", + "title": "菜单管理API", + "description": "api-auth-menu", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "738f052a-42a0-4959-bafb-657eb467d57d", + "gmt_create": "2025-10-08T18:39:22+08:00", + "gmt_modified": "2025-10-08T18:39:22+08:00" + }, + { + "catalog_id": "162500a5-7167-4984-9744-2802fb00bd08", + "title": "钱包管理", + "description": "api-fund-wallet", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "0aafdca3-5383-41f6-95ae-95c4f6eb2f32", + "gmt_create": "2025-10-08T18:40:13+08:00", + "gmt_modified": "2025-10-08T18:40:13+08:00" + }, + { + "catalog_id": "8d814eba-e2eb-46c2-a59f-00ad5b8d5de2", + "title": "商户配置管理", + "description": "api-merchant-config", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "df46fe53-92ca-4da6-826a-b33df0bd242b", + "gmt_create": "2025-10-08T18:40:25+08:00", + "gmt_modified": "2025-10-08T18:40:25+08:00" + }, + { + "catalog_id": "bb872064-72df-45eb-ab34-4003a0fe8e62", + "title": "IP限制API", + "description": "api-restriction-ip", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "2c008ded-8f0f-4fae-a0a5-0cfb74c610ea", + "gmt_create": "2025-10-08T18:41:29+08:00", + "gmt_modified": "2025-10-08T18:41:29+08:00" + }, + { + "catalog_id": "04d0a6d4-e8a9-4e8c-a8f2-bee9fd409e56", + "title": "Apple卡密管理API", + "description": "api-card-info-apple", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "6e73ea9a-6384-4196-b8f0-c31e83783450", + "gmt_create": "2025-10-08T18:41:41+08:00", + "gmt_modified": "2025-10-08T18:41:41+08:00" + }, + { + "catalog_id": "0e3e4dfa-8842-4108-bd6d-6cde149b8707", + "title": "Dockerfile详解", + "description": "dockerfile", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "b2dccb33-ffec-4b07-8759-f7ce71472ecb", + "gmt_create": "2025-10-08T18:41:44+08:00", + "gmt_modified": "2025-10-08T18:41:44+08:00" + }, + { + "catalog_id": "27a44e9c-003b-4f06-9b87-2882cf3c1e08", + "title": "Makefile自动化构建", + "description": "makefile", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "5d780517-9a6d-4c42-ba58-f5b8ec8393ce", + "gmt_create": "2025-10-08T18:42:23+08:00", + "gmt_modified": "2025-10-08T18:42:23+08:00" + }, + { + "catalog_id": "d56eb845-7c0e-4be8-bf3a-239e3c0eb5e3", + "title": "京东卡密管理逻辑", + "description": "jd-card-logic", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "1efc56f9-e901-4ce4-b98e-e1c793ab2bda", + "gmt_create": "2025-10-08T18:43:18+08:00", + "gmt_modified": "2025-10-08T18:43:18+08:00" + }, + { + "catalog_id": "fa42c78e-0f93-45a1-8ee8-9cf8cfac869e", + "title": "地域限制机制", + "description": "geographical-restriction", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "6f8ee399-7380-4fee-a2e4-728f269611b1", + "gmt_create": "2025-10-08T18:43:32+08:00", + "gmt_modified": "2025-10-08T18:43:32+08:00" + }, + { + "catalog_id": "1ee1a6e7-8394-4ff7-88af-afda35cd1775", + "title": "角色管理API", + "description": "api-auth-role", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "f10ee956-3c2d-488f-a83d-d998dc2c2bd1", + "gmt_create": "2025-10-08T18:44:25+08:00", + "gmt_modified": "2025-10-08T18:44:26+08:00" + }, + { + "catalog_id": "0e1b4f85-8e7d-463d-b8db-4ee330d61a7f", + "title": "用户认证管理", + "description": "user-authentication", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "62cc6fce-b7b6-4a5b-8833-1751d5f0ba4e", + "gmt_create": "2025-10-08T18:44:56+08:00", + "gmt_modified": "2025-10-08T18:44:56+08:00" + }, + { + "catalog_id": "91befb50-6592-4b74-82da-7510ab876eff", + "title": "订单日志管理", + "description": "api-order-log", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "353ff7c7-0ce0-4cc3-a0aa-1d724d7c2190", + "gmt_create": "2025-10-08T18:45:08+08:00", + "gmt_modified": "2025-10-08T18:45:08+08:00" + }, + { + "catalog_id": "3738ad5b-aca0-4c87-9e86-9551d689f889", + "title": "商户部署管理", + "description": "api-merchant-deploy", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "c7dcc000-3176-454a-a9df-1ecd2131cc5b", + "gmt_create": "2025-10-08T18:45:48+08:00", + "gmt_modified": "2025-10-08T18:45:48+08:00" + }, + { + "catalog_id": "288b9b5a-64ba-4e93-885d-499412ad90fc", + "title": "京东卡密管理API", + "description": "api-card-info-jd", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "a4cd3134-13ac-4d33-a867-4d225a7f89c3", + "gmt_create": "2025-10-08T18:46:02+08:00", + "gmt_modified": "2025-10-08T18:46:02+08:00" + }, + { + "catalog_id": "3cd0ff7f-89a0-4ba5-89c6-d092ac39981d", + "title": "资金流水", + "description": "api-fund-wallet-log", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "692c0d1b-79e2-466b-bd94-9c041d9bda6b", + "gmt_create": "2025-10-08T18:46:06+08:00", + "gmt_modified": "2025-10-08T18:46:06+08:00" + }, + { + "catalog_id": "58118687-a7d8-4b0d-b788-36481cba182d", + "title": "Docker Compose编排", + "description": "docker_compose", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "99d1a050-0313-4c24-90a9-0db3ac835b2c", + "gmt_create": "2025-10-08T18:46:51+08:00", + "gmt_modified": "2025-10-08T18:46:51+08:00" + }, + { + "catalog_id": "2c2db8d8-8ed8-4ef7-85e5-9d42615aba0a", + "title": "地域限制API", + "description": "api-restriction-region", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "17fd343c-4fd0-4124-a801-902c9ecd72ea", + "gmt_create": "2025-10-08T18:46:54+08:00", + "gmt_modified": "2025-10-08T18:46:54+08:00" + }, + { + "catalog_id": "7fce1289-c2cc-4640-9fe2-2049d025cbb3", + "title": "Shell脚本自动化", + "description": "shell_scripts", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "eb1ee078-c356-49ad-827a-9313420c484d", + "gmt_create": "2025-10-08T18:47:04+08:00", + "gmt_modified": "2025-10-08T18:47:04+08:00" + }, + { + "catalog_id": "4ed6b7ca-ace0-4389-81b1-f1e35781d27c", + "title": "天猫平台集成", + "description": "tmall-integration", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "477c9fd9-139a-43fe-87ae-8d64529bbf2c", + "gmt_create": "2025-10-08T18:47:59+08:00", + "gmt_modified": "2025-10-08T18:47:59+08:00" + }, + { + "catalog_id": "e130f1c6-f0c7-4f2b-8467-d00341dffec6", + "title": "设备ID限制机制", + "description": "device-id-restriction", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "2c270c41-0c72-45b9-be8d-a5605ca16e32", + "gmt_create": "2025-10-08T18:48:47+08:00", + "gmt_modified": "2025-10-08T18:48:47+08:00" + }, + { + "catalog_id": "15255e1e-df14-473a-8e50-b20da5e10eec", + "title": "天猫订单处理", + "description": "tmall-order-processing", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "080fba3c-3cca-40b8-b913-c5cf213a36f9", + "gmt_create": "2025-10-08T18:49:02+08:00", + "gmt_modified": "2025-10-08T18:49:02+08:00" + }, + { + "catalog_id": "8137c301-f13b-4054-992f-c556767d7c45", + "title": "天猫卡密管理逻辑", + "description": "tmall-card-logic", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "1d7ddcb1-d8df-40ae-8bcf-ca2bedc292d3", + "gmt_create": "2025-10-08T18:49:06+08:00", + "gmt_modified": "2025-10-08T18:49:06+08:00" + }, + { + "catalog_id": "ed66dce5-4de8-4993-bc89-a466abb74f43", + "title": "租户管理API", + "description": "api-auth-tenant", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "29857cbd-6dcb-4ee9-b121-6312d5a523c9", + "gmt_create": "2025-10-08T18:49:45+08:00", + "gmt_modified": "2025-10-08T18:49:45+08:00" + }, + { + "catalog_id": "c32a3e21-0961-4618-a256-ee1396eca8c2", + "title": "天猫卡密管理API", + "description": "api-card-info-tmall", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "ae7b131d-110f-4347-a2db-f9ee1bb2568a", + "gmt_create": "2025-10-08T18:50:18+08:00", + "gmt_modified": "2025-10-08T18:50:18+08:00" + }, + { + "catalog_id": "c98a021c-f5a3-4847-b8a2-445d4b79ffe9", + "title": "盗单处理管理", + "description": "api-merchant-steal", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "824c49c6-ab20-4552-b22a-86d1e9351317", + "gmt_create": "2025-10-08T18:50:34+08:00", + "gmt_modified": "2025-10-08T18:50:34+08:00" + }, + { + "catalog_id": "87378996-7b26-4ef7-81e5-3e2c73c13d78", + "title": "用户信息收集API", + "description": "api-restriction-user-info", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "e81e6998-8633-4c13-ae1f-6eb9820aaa79", + "gmt_create": "2025-10-08T18:51:10+08:00", + "gmt_modified": "2025-10-08T18:51:10+08:00" + }, + { + "catalog_id": "1b7f1c36-8377-4ab0-91c2-52017bc8c76d", + "title": "订单汇总统计", + "description": "api-order-summary", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "04861c55-7eb4-4fb8-9367-ea7653e898c2", + "gmt_create": "2025-10-08T18:51:11+08:00", + "gmt_modified": "2025-10-08T18:51:11+08:00" + }, + { + "catalog_id": "e0f89cbb-9392-48f7-987d-45771ccb89fc", + "title": "Ctrip平台集成", + "description": "ctrip-integration", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "4c9682c6-1065-4e84-8b74-f2fdd80c62f4", + "gmt_create": "2025-10-08T18:51:42+08:00", + "gmt_modified": "2025-10-08T18:51:44+08:00" + }, + { + "catalog_id": "6c7962c8-8824-47d8-b89c-e12e2ab0e54c", + "title": "沃尔玛平台集成", + "description": "walmart-integration", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "a6a1a0f2-4a40-46ed-a2fa-abeaf60eea55", + "gmt_create": "2025-10-08T18:52:19+08:00", + "gmt_modified": "2025-10-08T18:52:19+08:00" + }, + { + "catalog_id": "7171317b-83f6-4146-8818-b00d88d2b2b2", + "title": "沃尔玛卡密管理API", + "description": "api-card-info-walmart", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "817fc86a-b662-454b-83ed-09be950b1bdc", + "gmt_create": "2025-10-08T18:52:33+08:00", + "gmt_modified": "2025-10-08T18:52:33+08:00" + }, + { + "catalog_id": "4a2f1ccb-e858-46e2-b051-4b553c1e2f48", + "title": "Ctrip卡密管理API", + "description": "api-card-info-ctrip", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "f8adb15a-410b-4784-bbd6-402691aacab2", + "gmt_create": "2025-10-08T18:52:54+08:00", + "gmt_modified": "2025-10-08T18:52:54+08:00" + }, + { + "catalog_id": "d47fa6fc-1893-43bf-906f-c9ed0db47dd9", + "title": "京东卡密账户管理", + "description": "jd-card-account-management", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "e200c8f1-c37b-41e9-bac1-057445ecb066", + "gmt_create": "2025-10-08T18:53:38+08:00", + "gmt_modified": "2025-10-08T18:53:38+08:00" + }, + { + "catalog_id": "de16dd4b-ba68-49bb-97c7-cc34f0ebba00", + "title": "Apple卡密账户管理", + "description": "apple-account-management", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "5fdf0a72-330a-4ef9-b6f2-56fc3b96a82f", + "gmt_create": "2025-10-08T18:53:45+08:00", + "gmt_modified": "2025-10-08T18:53:45+08:00" + }, + { + "catalog_id": "3ab7071c-90ec-4de1-8d64-d414460e61e3", + "title": "天猫卡密账户管理", + "description": "tmall-account-management", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "fc236117-4117-4af0-8d3d-0c3fbecab71a", + "gmt_create": "2025-10-08T18:54:12+08:00", + "gmt_modified": "2025-10-08T18:54:12+08:00" + }, + { + "catalog_id": "8b0278d7-2786-4c72-ae74-b9dd35efed2c", + "title": "IP记录管理", + "description": "ip-record-management", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "56080685-56e4-4a91-ba5c-6a25de62ccdf", + "gmt_create": "2025-10-08T18:54:37+08:00", + "gmt_modified": "2025-10-08T18:54:37+08:00" + }, + { + "catalog_id": "5624e47a-917e-43a1-bb5f-41c0c061836f", + "title": "设备ID采集机制", + "description": "device-id-collection", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "cfbdb9d5-b4d5-420d-9ee1-c9570f5c31f9", + "gmt_create": "2025-10-08T18:54:43+08:00", + "gmt_modified": "2025-10-08T18:54:43+08:00" + }, + { + "catalog_id": "f54d30d0-d3a6-47ba-bdfd-e7da45674e38", + "title": "登录认证", + "description": "login-authentication", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "0eb7033e-6cb9-4e9c-8641-e80f88d0203c", + "gmt_create": "2025-10-08T18:55:08+08:00", + "gmt_modified": "2025-10-08T18:55:08+08:00" + }, + { + "catalog_id": "60a234ee-1d45-4e80-b8bf-a0ba60aaf7ee", + "title": "Apple卡密账户管理", + "description": "api-card-info-apple-account", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "06a8f4cd-585e-43e5-992a-156951ca77b1", + "gmt_create": "2025-10-08T18:55:43+08:00", + "gmt_modified": "2025-10-08T18:55:43+08:00" + }, + { + "catalog_id": "708d0f68-64e4-4da7-a329-e73234ebb6d3", + "title": "权限规则定义", + "description": "permission-definition", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "f63d9ee2-939e-4112-8422-b76013d0c37b", + "gmt_create": "2025-10-08T18:55:45+08:00", + "gmt_modified": "2025-10-08T18:55:45+08:00" + }, + { + "catalog_id": "5a0f3a66-d169-4a34-95ca-e173a89429e2", + "title": "京东卡密账户管理", + "description": "api-card-info-jd-account", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "0eb68661-00bd-4d95-809e-54d87927a654", + "gmt_create": "2025-10-08T18:56:14+08:00", + "gmt_modified": "2025-10-08T18:56:14+08:00" + }, + { + "catalog_id": "f1ed70ff-aea4-4289-8223-fecd0ffd2cad", + "title": "构建阶段详解", + "description": "dockerfile-build", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "4c36e3bc-fa82-4d1b-a78d-e0832adf415b", + "gmt_create": "2025-10-08T18:56:29+08:00", + "gmt_modified": "2025-10-08T18:56:29+08:00" + }, + { + "catalog_id": "6a7b8a19-18bb-4222-8c43-45f6c25ea130", + "title": "天猫卡密账户管理", + "description": "api-card-info-tmall-account", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "a75ff292-fb3f-42ba-84d8-189105b57626", + "gmt_create": "2025-10-08T18:56:38+08:00", + "gmt_modified": "2025-10-08T18:56:38+08:00" + }, + { + "catalog_id": "9b95c229-e3f1-4960-a0be-1b88f001b0bd", + "title": "主服务配置", + "description": "docker_compose_main_service", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "3aade0ca-f25c-404f-a8ac-3b3d5d3619c1", + "gmt_create": "2025-10-08T18:57:12+08:00", + "gmt_modified": "2025-10-08T18:57:12+08:00" + }, + { + "catalog_id": "18a1847d-4be2-4c61-af2e-3f527f5f3d1c", + "title": "沃尔玛卡密账户管理", + "description": "api-card-info-walmart-account", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "d7798344-7bd7-4d4b-b7af-12e478898534", + "gmt_create": "2025-10-08T18:57:15+08:00", + "gmt_modified": "2025-10-08T18:57:15+08:00" + }, + { + "catalog_id": "745be06d-31ed-45f2-9822-e6cf41730cae", + "title": "Apple卡密充值处理", + "description": "apple-recharge-processing", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "1acfa79b-62c0-4874-99e4-6ae09004acc4", + "gmt_create": "2025-10-08T18:57:37+08:00", + "gmt_modified": "2025-10-08T18:57:37+08:00" + }, + { + "catalog_id": "230cd5da-15c7-41e8-9ed4-a0cc2496bd71", + "title": "京东卡密兑换处理", + "description": "jd-card-redeem-processing", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "6e962549-b111-4d8e-b263-89eafba99a84", + "gmt_create": "2025-10-08T18:58:15+08:00", + "gmt_modified": "2025-10-08T18:58:15+08:00" + }, + { + "catalog_id": "58030d31-a0a0-4431-abd1-4065b0200dfc", + "title": "天猫卡密订单处理", + "description": "tmall-order-processing", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "4d1ec235-b735-4351-abdb-3721a223dd51", + "gmt_create": "2025-10-08T18:58:16+08:00", + "gmt_modified": "2025-10-08T18:58:16+08:00" + }, + { + "catalog_id": "321018b9-e7f9-4101-968c-1818559aeb32", + "title": "IP查询优化", + "description": "ip-query-optimization", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "bd721dc3-a854-4ab4-af6f-1c1a24c2e660", + "gmt_create": "2025-10-08T18:58:38+08:00", + "gmt_modified": "2025-10-08T18:58:38+08:00" + }, + { + "catalog_id": "beeabbca-9f86-4566-98b3-6bbce10c5df2", + "title": "双因素认证", + "description": "two-factor-auth", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "838ae7a4-15cd-489b-b25d-f4af8946b45b", + "gmt_create": "2025-10-08T18:59:05+08:00", + "gmt_modified": "2025-10-08T18:59:05+08:00" + }, + { + "catalog_id": "c66c0c6a-c5ba-4081-a359-7bb0a47ca417", + "title": "设备ID存储策略", + "description": "device-id-storage", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "53947e3e-89de-416d-857e-54a84330a7ae", + "gmt_create": "2025-10-08T18:59:13+08:00", + "gmt_modified": "2025-10-08T18:59:13+08:00" + }, + { + "catalog_id": "3acdd907-8a5f-4d42-9ff1-61bd6e8cabee", + "title": "权限验证机制", + "description": "permission-validation", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "5512c349-309d-4bd7-9e7e-ec7df28c6d32", + "gmt_create": "2025-10-08T18:59:43+08:00", + "gmt_modified": "2025-10-08T18:59:43+08:00" + }, + { + "catalog_id": "f8a44d0b-b413-4926-a059-e1ac7b32cd45", + "title": "Apple卡密充值处理", + "description": "api-card-info-apple-recharge", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "e146bc47-a61b-4bec-bc1a-37faa13b372c", + "gmt_create": "2025-10-08T19:00:01+08:00", + "gmt_modified": "2025-10-08T19:00:01+08:00" + }, + { + "catalog_id": "a255fcc8-4b84-415f-bd11-dc26fa62d0b9", + "title": "京东卡密订单处理", + "description": "api-card-info-jd-order", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "8a159a71-a6ed-4138-93a9-e7c1be49368b", + "gmt_create": "2025-10-08T19:00:03+08:00", + "gmt_modified": "2025-10-08T19:00:03+08:00" + }, + { + "catalog_id": "c156f2b2-d455-46fd-8a01-d316c8e27336", + "title": "天猫卡密订单处理", + "description": "api-card-info-tmall-order", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "e8e1b906-cdb1-41b2-a03b-8450dfec49e1", + "gmt_create": "2025-10-08T19:00:59+08:00", + "gmt_modified": "2025-10-08T19:00:59+08:00" + }, + { + "catalog_id": "694e73a1-0845-4ebf-a2f6-990acde1e379", + "title": "沃尔玛卡密订单处理", + "description": "api-card-info-walmart-order", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "f696338b-1dae-45bc-b4e4-f7aab1a66b0d", + "gmt_create": "2025-10-08T19:01:13+08:00", + "gmt_modified": "2025-10-08T19:01:13+08:00" + }, + { + "catalog_id": "754a8225-3d82-4760-bc4f-280e0c19eb86", + "title": "运行阶段详解", + "description": "dockerfile-runtime", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "e05b2dc7-2335-4c8b-b24c-48a1f98f5361", + "gmt_create": "2025-10-08T19:01:19+08:00", + "gmt_modified": "2025-10-08T19:01:19+08:00" + }, + { + "catalog_id": "350fc114-3308-4a56-87eb-6916d2c2e278", + "title": "数据库配置", + "description": "docker_compose_database", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "34d853c3-140d-40d8-80fa-e7f32e322305", + "gmt_create": "2025-10-08T19:01:54+08:00", + "gmt_modified": "2025-10-08T19:01:54+08:00" + }, + { + "catalog_id": "677ff050-ffe6-4e0c-93e6-5aa4da717ad6", + "title": "Apple卡密历史记录管理", + "description": "apple-history-management", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "2c96823f-d6db-46ca-a33c-dbfdc28756a1", + "gmt_create": "2025-10-08T19:02:08+08:00", + "gmt_modified": "2025-10-08T19:02:08+08:00" + }, + { + "catalog_id": "b86eeb37-caa6-4edb-807b-036800419a82", + "title": "京东卡密分组管理", + "description": "jd-card-group-management", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "3a97712d-0f09-4a0a-b365-60d2af7a7fe2", + "gmt_create": "2025-10-08T19:02:13+08:00", + "gmt_modified": "2025-10-08T19:02:13+08:00" + }, + { + "catalog_id": "1072ba9e-1fcc-4ea4-9598-564f965be8fd", + "title": "设备ID匹配算法", + "description": "device-id-matching", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "17fa72bc-2bc8-478c-9b6a-9d6cae53f588", + "gmt_create": "2025-10-08T19:02:59+08:00", + "gmt_modified": "2025-10-08T19:02:59+08:00" + }, + { + "catalog_id": "9267865e-7ecd-4a9f-9bdc-66f3c47cdd00", + "title": "天猫卡密工作空间管理", + "description": "tmall-workspace-management", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "7aca7e2a-1e25-4628-a4ba-3f97fdeb9279", + "gmt_create": "2025-10-08T19:03:01+08:00", + "gmt_modified": "2025-10-08T19:03:01+08:00" + }, + { + "catalog_id": "4de9e641-e754-4df4-be5c-96bd78e98da8", + "title": "IP限制策略", + "description": "ip-restriction-strategy", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "ff38a877-a28e-47d8-b5c9-939b865c97a3", + "gmt_create": "2025-10-08T19:03:06+08:00", + "gmt_modified": "2025-10-08T19:03:06+08:00" + }, + { + "catalog_id": "282f094b-3780-49d1-b057-75345b1de3c1", + "title": "会话管理", + "description": "session-management", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "6d1d4be2-a13f-4897-bcc9-362da9158d9b", + "gmt_create": "2025-10-08T19:03:57+08:00", + "gmt_modified": "2025-10-08T19:03:57+08:00" + }, + { + "catalog_id": "0406e349-1ce0-4ec4-9c86-6c842ad5b1d2", + "title": "权限策略管理", + "description": "permission-policy-management", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "4a89e30e-d877-427e-98c3-0d58a4fba7a8", + "gmt_create": "2025-10-08T19:03:58+08:00", + "gmt_modified": "2025-10-08T19:03:58+08:00" + }, + { + "catalog_id": "6d3c9aea-cd8a-4031-b3a4-7491202249b6", + "title": "Apple卡密配置管理", + "description": "api-card-info-apple-config", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "0ae6bf62-bc86-44bf-b631-7329d2a379ca", + "gmt_create": "2025-10-08T19:04:12+08:00", + "gmt_modified": "2025-10-08T19:04:12+08:00" + }, + { + "catalog_id": "45710fa8-25aa-4217-ae14-a73410f49c30", + "title": "京东卡密数据汇总", + "description": "api-card-info-jd-summary", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "4bf6885a-1224-4cca-8789-3f3def1f0343", + "gmt_create": "2025-10-08T19:04:46+08:00", + "gmt_modified": "2025-10-08T19:04:46+08:00" + }, + { + "catalog_id": "1bb36bef-7cd2-4cfe-895a-726588a9a89b", + "title": "天猫卡密店铺管理", + "description": "api-card-info-tmall-shop", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "0cfb0e8f-47c2-4030-a2e1-3993fb770b8d", + "gmt_create": "2025-10-08T19:05:04+08:00", + "gmt_modified": "2025-10-08T19:05:04+08:00" + }, + { + "catalog_id": "25942f43-183a-4e00-be2e-c61ae84373a3", + "title": "沃尔玛卡密分组管理", + "description": "api-card-info-walmart-group", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "1d532660-5e04-421b-a2b4-3e542c48a890", + "gmt_create": "2025-10-08T19:05:31+08:00", + "gmt_modified": "2025-10-08T19:05:31+08:00" + }, + { + "catalog_id": "f9c16741-f716-4147-9f51-cd748e8960a5", + "title": "缓存配置", + "description": "docker_compose_cache", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "30b6ff79-67a8-4a39-9112-e0af3e9e7f7d", + "gmt_create": "2025-10-08T19:05:35+08:00", + "gmt_modified": "2025-10-08T19:05:35+08:00" + }, + { + "catalog_id": "f7e484b5-92f1-43b5-8bf5-9cd33a035658", + "title": "设备ID隐私保护", + "description": "device-id-privacy", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "a3c9a66f-dcd6-40fb-89b8-abb130e7744a", + "gmt_create": "2025-10-08T19:05:48+08:00", + "gmt_modified": "2025-10-08T19:05:48+08:00" + }, + { + "catalog_id": "f72acdfa-67dd-4c2f-8c3f-17f119b4be62", + "title": "部署自动化", + "description": "docker_compose_deployment_automation", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "324bc16b-185c-4af1-8202-3d9b7a9e6e6f", + "gmt_create": "2025-10-08T19:06:32+08:00", + "gmt_modified": "2025-10-08T19:06:32+08:00" + }, + { + "catalog_id": "e5c8c7c7-0135-416c-a55a-80655940b9c4", + "title": "天猫卡密回调机制", + "description": "api-card-info-tmall-callback", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "24431815-8687-4b29-b798-214916920f7f", + "gmt_create": "2025-10-08T19:06:42+08:00", + "gmt_modified": "2025-10-08T19:06:43+08:00" + }, + { + "catalog_id": "fd83f8e3-9940-400c-9e6d-de5f5af056a4", + "title": "天猫卡密工作区管理", + "description": "api-card-info-tmall-workspace", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "eee4b669-1eb7-45b9-a835-ffebfee1f682", + "gmt_create": "2025-10-08T19:06:55+08:00", + "gmt_modified": "2025-10-08T19:06:55+08:00" + }, + { + "catalog_id": "529d0827-5291-40f8-8e40-3b0ec55570bc", + "title": "京东Cookie管理模块重构设计", + "description": "jd-cookie-refactor-design", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "743dffa6-cd2e-413c-8747-415bb3c039fc", + "gmt_create": "2025-10-11T17:31:20+08:00", + "gmt_modified": "2025-10-11T17:31:20+08:00" + }, + { + "catalog_id": "9f851a40-0195-456e-b877-f1610bee0ca0", + "title": "京东订单导出功能", + "description": "jd_cookie_order_export", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "cecd7414-54a1-46db-acb9-ef5c2ce5baa9", + "gmt_create": "2025-10-18T22:09:05.1089448+08:00", + "gmt_modified": "2025-10-18T22:09:05.6032688+08:00" + }, + { + "catalog_id": "816e73fd-ddde-4333-9ddc-b0bed7d5d9e0", + "title": "订单回调功能", + "description": "jd_cookie_callback", + "extend": "{}", + "progress_status": "completed", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "id": "27f11a59-20e5-47ab-b0a7-8f66f2b87a3e", + "gmt_create": "2025-10-18T22:10:35.1520363+08:00", + "gmt_modified": "2025-10-18T22:10:35.4610336+08:00" + } + ], + "wiki_overview": { + "content": "\u003cblog\u003e\n# kami_backend 项目综合分析报告\n\n## 1. 项目介绍\n\n### 项目目的\nkami_backend 是一个基于 GoFrame 框架构建的后端服务系统,主要功能是为各类电商平台(如京东、天猫、沃尔玛、Ctrip 等)的卡密信息管理、订单处理、账户管理提供统一的 API 接口支持。系统集成了权限控制、支付管理、商户管理、风控限制等模块,形成了完整的后台管理系统。\n\n### 核心目标\n- 提供统一的电商平台卡密充值与兑换接口\n- 实现多平台账户信息集中管理\n- 支持灵活的权限控制与角色管理\n- 构建可扩展的微服务架构基础\n- 集成可观测性系统(OpenTelemetry)\n\n### 目标用户\n- 平台运营管理人员\n- 第三方商户接入方\n- 系统维护与开发人员\n- 安全审计人员\n\n## 2. 技术架构\n\n### 组件分解\n项目采用典型的分层架构设计,包含以下核心组件:\n\n- **API 层**:位于 `api/` 目录,定义了所有对外暴露的 RESTful 接口\n- **Controller 层**:位于 `internal/controller/`,处理请求转发与参数校验\n- **Service 层**:位于 `internal/service/`,实现核心业务逻辑\n- **Logic 层**:位于 `internal/logic/`,封装具体业务规则\n- **DAO 层**:位于 `internal/dao/`,负责数据访问操作\n- **Model 层**:位于 `internal/model/`,定义数据结构与实体\n- **Utility 工具层**:位于 `utility/`,提供通用工具函数\n\n### 设计模式\n系统采用了多种设计模式:\n- **MVC 模式**:清晰分离关注点\n- **依赖注入**:通过 GoFrame 的 DI 机制实现\n- **中间件模式**:用于认证、日志、错误处理\n- **策略模式**:不同电商平台的处理逻辑分离\n\n### 系统关系与数据流\n\n```mermaid\nflowchart TD\n A[客户端] --\u003e B[API Gateway]\n B --\u003e C[Middlewares]\n C --\u003e D[Controller]\n D --\u003e E[Service]\n E --\u003e F[Logic]\n F --\u003e G[DAO]\n G --\u003e H[(MySQL)]\n G --\u003e I[(Redis)]\n J[OpenTelemetry] \u003c--\u003e K[日志/监控/追踪]\n style A fill:#f9f,stroke:#333\n style H fill:#ccf,stroke:#333\n style I fill:#ccf,stroke:#333\n```\n\n## 3. 关键实现\n\n### 主要入口点\n- **main.go**:应用启动入口,负责初始化 OTel 和运行主服务\n- **cmd.go**:命令行处理逻辑\n- **boot_enums.go**:系统启动时自动加载的枚举配置\n\nSources:\n- [main.go](main.go)\n- [cmd.go](internal/cmd/cmd.go)\n- [boot_enums.go](internal/boot/boot_enums.go)\n\n### 核心模块\n- **权限管理模块** (`api/authority`):基于 Casbin 的 RBAC 权限控制\n- **卡密信息管理模块** (`api/card_info_*`):支持多个电商平台\n- **订单管理模块** (`api/order`):统一订单处理流程\n- **商户管理模块** (`api/merchant`):商户接入与配置管理\n- **风控限制模块** (`api/restriction`):IP 限制、访问控制等\n\nSources:\n- [authority.go](api/authority/authority.go)\n- [order.go](api/order/order.go)\n- [merchant.go](api/merchant/merchant.go)\n- [restriction.go](api/restriction/restriction.go)\n\n### 配置方法\n系统使用 YAML 配置文件进行管理,主要配置文件包括:\n\n- `manifest/config/config.yaml`:主配置文件,包含数据库、Redis、服务端口等\n- `hack/config.yaml`:gfcli 工具配置,用于代码生成\n- `resource/casbin/rbac_model.conf`:权限模型配置\n\n配置通过 GoFrame 的 gcfg 组件加载,支持环境变量覆盖。\n\nSources:\n- [config.yaml](manifest/config/config.yaml)\n- [rbac_model.conf](resource/casbin/rbac_model.conf)\n\n### 外部依赖\n```mermaid\ngraph TD\n A[kami_backend] --\u003e B[MySQL]\n A --\u003e C[Redis]\n A --\u003e D[OpenTelemetry Collector]\n A --\u003e E[Taobao API]\n A --\u003e F[Jingdong Service]\n A --\u003e G[Ctrip API]\n A --\u003e H[Walmart API]\n A --\u003e I[Agiso Platform]\n style A fill:#f96,stroke:#333\n```\n\n### 集成点\n- **OAuth2 集成**:天猫游戏平台 OAuth 接入\n- **第三方支付通知**:飞书 Webhook 通知\n- **外部服务调用**:京东卡密服务、Ctrip 接口等\n- **可观测性集成**:OpenTelemetry 全链路追踪\n\nSources:\n- [config.yaml](manifest/config/config.yaml#L80-L95)\n\n## 4. 关键特性\n\n### 功能概览\n- 多平台卡密充值与兑换\n- 完善的权限与角色管理体系\n- 商户接入与配置管理\n- 订单全生命周期管理\n- 风控与访问限制机制\n- 可视化监控与日志系统\n\n### 实现亮点\n- **模块化设计**:每个电商平台独立模块,易于扩展\n- **自动化代码生成**:通过 gfcli 自动生成 DAO、Service 等代码\n- **安全机制完善**:包含 MFA、Token 加密、AES/MD5 验证等\n- **可观测性强**:集成 OpenTelemetry 实现监控、追踪、日志一体化\n\n### 特性架构图\n\n```mermaid\nstateDiagram-v2\n [*] --\u003e 初始化\n 初始化 --\u003e 配置加载: 读取YAML\n 配置加载 --\u003e 数据库连接: MySQL/Redis\n 数据库连接 --\u003e 服务注册: API路由\n 服务注册 --\u003e 权限初始化: Casbin\n 权限初始化 --\u003e 运行中: 接收请求\n 运行中 --\u003e 异常处理: Middleware\n 异常处理 --\u003e 运行中\n 运行中 --\u003e 日志记录: OTel\n```\n\nSources:\n- [main.go](main.go#L1-L49)\n- [config.go](utility/config/config.go)\n- [otel](utility/otel)\n\u003c/blog\u003e", + "gmt_create": "2025-10-08T18:16:44+08:00", + "gmt_modified": "2025-10-08T18:16:44+08:00", + "id": "2a3bb0d1-da41-428d-be41-2df43f097c60", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740" + }, + "wiki_readme": { + "content": "### docker deploy token\r\n\r\n579f3fab0f179949b1b8a509ba4f2dff0c8dcdd5", + "gmt_create": "2025-10-08T17:56:14+08:00", + "gmt_modified": "2025-10-08T17:56:14+08:00", + "id": "f3ffe0e6-9115-4f61-b2cb-742ee58f26e2", + "repo_id": "151903b3-bd50-409c-b5b5-1928c28ec740" + }, + "wiki_repo": { + "id": "151903b3-bd50-409c-b5b5-1928c28ec740", + "name": "kami_backend", + "progress_status": "completed", + "wiki_present_status": "COMPLETED", + "optimized_catalog": "\".\\n├── api\\n│ ├── authority\\n│ │ ├── v1\\n│ │ │ ├── menu.go\\n│ │ │ ├── model.go\\n│ │ │ ├── role.go\\n│ │ │ └── tenant.go\\n│ │ └── authority.go\\n│ ├── card_info_apple\\n│ │ ├── v1\\n│ │ │ ├── account_history.go\\n│ │ │ ├── account_info.go\\n│ │ │ ├── config.go\\n│ │ │ ├── model.go\\n│ │ │ ├── order.go\\n│ │ │ ├── order_history.go\\n│ │ │ └── order_steal.go\\n│ │ └── card_info_apple.go\\n│ ├── card_info_c_trip\\n│ │ ├── v1\\n│ │ │ ├── account.go\\n│ │ │ ├── config.go\\n│ │ │ └── order.go\\n│ │ └── card_info_c_trip.go\\n│ ├── card_info_jd\\n│ │ ├── v1\\n│ │ │ ├── account.go\\n│ │ │ ├── config.go\\n│ │ │ ├── order.go\\n│ │ │ └── order_summary.go\\n│ │ └── card_info_jd.go\\n│ ├── card_info_original_jd\\n│ │ ├── v1\\n│ │ │ └── account.go\\n│ │ └── card_info_original_jd.go\\n│ ├── card_info_t_mall_game\\n│ │ ├── v1\\n│ │ │ ├── account.go\\n│ │ │ ├── callback.go\\n│ │ │ ├── fake.go\\n│ │ │ ├── order.go\\n│ │ │ ├── shop.go\\n│ │ │ ├── sync.go\\n│ │ │ └── workspace.go\\n│ │ └── card_info_t_mall_game.go\\n│ ├── card_info_walmart\\n│ │ ├── v1\\n│ │ │ ├── account.go\\n│ │ │ ├── config.go\\n│ │ │ ├── group.go\\n│ │ │ ├── order.go\\n│ │ │ ├── order_summary.go\\n│ │ │ └── stats.go\\n│ │ └── card_info_walmart.go\\n│ ├── card_redeem_jd\\n│ │ ├── v1\\n│ │ │ ├── account.go\\n│ │ │ └── order.go\\n│ │ └── card_redeem_jd.go\\n│ ├── channel\\n│ │ ├── v2\\n│ │ │ ├── entrance.go\\n│ │ │ └── model.go\\n│ │ └── channel.go\\n│ ├── commonApi\\n│ │ └── common.go\\n│ ├── fund\\n│ │ ├── v1\\n│ │ │ ├── wallet.go\\n│ │ │ └── wallet_log.go\\n│ │ └── fund.go\\n│ ├── merchant\\n│ │ ├── v1\\n│ │ │ ├── config.go\\n│ │ │ ├── deploy.go\\n│ │ │ ├── model.go\\n│ │ │ ├── order.go\\n│ │ │ └── steal.go\\n│ │ └── merchant.go\\n│ ├── monitor\\n│ │ ├── v1\\n│ │ │ └── heathcheck.go\\n│ │ └── monitor.go\\n│ ├── order\\n│ │ ├── v1\\n│ │ │ ├── form.go\\n│ │ │ ├── log.go\\n│ │ │ └── order_summary.go\\n│ │ └── order.go\\n│ ├── restriction\\n│ │ ├── v1\\n│ │ │ ├── collection.go\\n│ │ │ └── province.go\\n│ │ └── restriction.go\\n│ ├── road\\n│ │ ├── v1\\n│ │ │ └── road.go\\n│ │ └── road.go\\n│ ├── road_pool\\n│ │ ├── v1\\n│ │ │ └── road_pool.go\\n│ │ └── road_pool.go\\n│ ├── sysUser\\n│ │ ├── v1\\n│ │ │ ├── logout.go\\n│ │ │ ├── model.go\\n│ │ │ ├── payment.go\\n│ │ │ ├── sysUser.go\\n│ │ │ └── totp.go\\n│ │ └── sysUser.go\\n│ ├── sys_auth_rule\\n│ │ ├── v1\\n│ │ │ ├── model.go\\n│ │ │ └── sys_auth_rule.go\\n│ │ └── sys_auth_rule.go\\n│ ├── sys_payment\\n│ │ ├── v1\\n│ │ │ ├── statistic.go\\n│ │ │ └── sys_payment.go\\n│ │ └── sys_payment.go\\n│ ├── sys_role\\n│ │ ├── v1\\n│ │ │ ├── model.go\\n│ │ │ └── sys_role.go\\n│ │ └── sys_role.go\\n│ ├── sys_user_login\\n│ │ ├── v1\\n│ │ │ ├── model.go\\n│ │ │ └── sys_user_login.go\\n│ │ └── sys_user_login.go\\n│ ├── user_center\\n│ │ ├── v1\\n│ │ │ └── info.go\\n│ │ └── user_center.go\\n│ └── validation\\n│ ├── v1\\n│ │ └── captcha.go\\n│ └── validation.go\\n├── hack\\n│ └── config.yaml\\n├── internal\\n│ ├── boot\\n│ │ └── boot_enums.go\\n│ ├── cmd\\n│ │ └── cmd.go\\n│ ├── consts\\n│ │ ├── asigo.go\\n│ │ ├── cache.go\\n│ │ ├── card_apple.go\\n│ │ ├── card_excharge.go\\n│ │ ├── card_jd.go\\n│ │ ├── card_recharge_t_mall.go\\n│ │ ├── card_redeem.go\\n│ │ ├── card_redeem_cookie.go\\n│ │ ├── common.go\\n│ │ ├── consts.go\\n│ │ ├── entrance.go\\n│ │ ├── login_status.go\\n│ │ ├── restriction.go\\n│ │ ├── road.go\\n│ │ ├── sysUser.go\\n│ │ ├── sys_config_dict.go\\n│ │ ├── sys_user_channel_config.go\\n│ │ ├── sys_user_deductions.go\\n│ │ └── sys_user_payment_record.go\\n│ ├── controller\\n│ │ ├── authority\\n│ │ │ ├── authority.go\\n│ │ │ ├── authority_new.go\\n│ │ │ ├── authority_v1_menu_create.go\\n│ │ │ ├── authority_v1_menu_delete.go\\n│ │ │ ├── authority_v1_menu_list.go\\n│ │ │ ├── authority_v1_menu_update.go\\n│ │ │ ├── authority_v1_role_create.go\\n│ │ │ ├── authority_v1_role_delete.go\\n│ │ │ ├── authority_v1_role_list.go\\n│ │ │ ├── authority_v1_role_update.go\\n│ │ │ ├── authority_v1_tenant_create.go\\n│ │ │ ├── authority_v1_tenant_delete.go\\n│ │ │ ├── authority_v1_tenant_list.go\\n│ │ │ └── authority_v1_tenant_update.go\\n│ │ ├── card_info_apple\\n│ │ │ ├── apple_card_info_v1_recharge_list_download_test.go\\n│ │ │ ├── card_info_apple.go\\n│ │ │ ├── card_info_apple_new.go\\n│ │ │ ├── card_info_apple_v1_call_back_order_manual.go\\n│ │ │ ├── card_info_apple_v1_card_history_info_list.go\\n│ │ │ ├── card_info_apple_v1_card_info_batch_add_from_xlsx.go\\n│ │ │ ├── card_info_apple_v1_card_info_create.go\\n│ │ │ ├── card_info_apple_v1_card_info_delete.go\\n│ │ │ ├── card_info_apple_v1_card_info_download_template.go\\n│ │ │ ├── card_info_apple_v1_card_info_list.go\\n│ │ │ ├── card_info_apple_v1_card_info_suspend_or_continue.go\\n│ │ │ ├── card_info_apple_v1_card_info_update.go\\n│ │ │ ├── card_info_apple_v1_card_info_update_status.go\\n│ │ │ ├── card_info_apple_v1_config_get.go\\n│ │ │ ├── card_info_apple_v1_config_set.go\\n│ │ │ ├── card_info_apple_v1_recharge_duplicated_card_pass.go\\n│ │ │ ├── card_info_apple_v1_recharge_handler.go\\n│ │ │ ├── card_info_apple_v1_recharge_history_list.go\\n│ │ │ ├── card_info_apple_v1_recharge_itunes_callback.go\\n│ │ │ ├── card_info_apple_v1_recharge_list.go\\n│ │ │ ├── card_info_apple_v1_recharge_list_download.go\\n│ │ │ ├── card_info_apple_v1_recharge_order_modify_actual_amount.go\\n│ │ │ ├── card_info_apple_v1_recharge_order_reset_status.go\\n│ │ │ ├── card_info_apple_v1_recharge_steal_rule_add.go\\n│ │ │ ├── card_info_apple_v1_recharge_steal_rule_delete.go\\n│ │ │ ├── card_info_apple_v1_recharge_steal_rule_list.go\\n│ │ │ ├── card_info_apple_v1_recharge_steal_rule_status_update.go\\n│ │ │ ├── card_info_apple_v1_recharge_steal_rule_update.go\\n│ │ │ ├── card_info_apple_v1_recharge_steal_setting.go\\n│ │ │ ├── card_info_apple_v1_recharge_steal_setting_get.go\\n│ │ │ ├── card_info_apple_v1_recharge_submit.go\\n│ │ │ └── card_info_apple_v1_recharge_submit_query.go\\n│ │ ├── card_info_c_trip\\n│ │ │ ├── card_info_c_trip.go\\n│ │ │ ├── card_info_c_trip_new.go\\n│ │ │ ├── card_info_c_trip_v1_account_cookie_batch_add.go\\n│ │ │ ├── card_info_c_trip_v1_account_cookie_batch_check.go\\n│ │ │ ├── card_info_c_trip_v1_account_cookie_check.go\\n│ │ │ ├── card_info_c_trip_v1_account_create.go\\n│ │ │ ├── card_info_c_trip_v1_account_delete.go\\n│ │ │ ├── card_info_c_trip_v1_account_list.go\\n│ │ │ ├── card_info_c_trip_v1_account_refresh_status.go\\n│ │ │ ├── card_info_c_trip_v1_account_update.go\\n│ │ │ ├── card_info_c_trip_v1_account_update_status.go\\n│ │ │ ├── card_info_c_trip_v1_account_wallet_list.go\\n│ │ │ ├── card_info_c_trip_v1_download.go\\n│ │ │ ├── card_info_c_trip_v1_download_template.go\\n│ │ │ ├── card_info_c_trip_v1_list.go\\n│ │ │ ├── card_info_c_trip_v1_order_callback.go\\n│ │ │ ├── card_info_c_trip_v1_order_history.go\\n│ │ │ ├── card_info_c_trip_v1_redeem_config_get.go\\n│ │ │ ├── card_info_c_trip_v1_redeem_config_set.go\\n│ │ │ └── card_info_c_trip_v1_submit.go\\n│ │ ├── card_info_jd\\n│ │ │ ├── card_info_jd.go\\n│ │ │ ├── card_info_jd_new.go\\n│ │ │ ├── card_info_jd_v1_download.go\\n│ │ │ ├── card_info_jd_v1_download_template.go\\n│ │ │ ├── card_info_jd_v1_jd_account_cookie_batch_add.go\\n│ │ │ ├── card_info_jd_v1_jd_account_cookie_batch_check.go\\n│ │ │ ├── card_info_jd_v1_jd_account_cookie_check.go\\n│ │ │ ├── card_info_jd_v1_jd_account_create.go\\n│ │ │ ├── card_info_jd_v1_jd_account_delete.go\\n│ │ │ ├── card_info_jd_v1_jd_account_list.go\\n│ │ │ ├── card_info_jd_v1_jd_account_refresh_status.go\\n│ │ │ ├── card_info_jd_v1_jd_account_update.go\\n│ │ │ ├── card_info_jd_v1_jd_account_update_status.go\\n│ │ │ ├── card_info_jd_v1_jd_account_wallet_list.go\\n│ │ │ ├── card_info_jd_v1_jd_config_get.go\\n│ │ │ ├── card_info_jd_v1_jd_config_set.go\\n│ │ │ ├── card_info_jd_v1_list.go\\n│ │ │ ├── card_info_jd_v1_order_callback.go\\n│ │ │ ├── card_info_jd_v1_order_history.go\\n│ │ │ ├── card_info_jd_v1_order_summary_list.go\\n│ │ │ └── card_info_jd_v1_submit.go\\n│ │ ├── card_info_original_jd\\n│ │ │ ├── card_info_original_jd.go\\n│ │ │ ├── card_info_original_jd_new.go\\n│ │ │ ├── card_info_original_jd_v1_original_download.go\\n│ │ │ ├── card_info_original_jd_v1_original_download_template.go\\n│ │ │ ├── card_info_original_jd_v1_original_jd_account_cookie_batch_add.go\\n│ │ │ ├── card_info_original_jd_v1_original_jd_account_cookie_batch_check.go\\n│ │ │ ├── card_info_original_jd_v1_original_jd_account_cookie_check.go\\n│ │ │ ├── card_info_original_jd_v1_original_jd_account_create.go\\n│ │ │ ├── card_info_original_jd_v1_original_jd_account_delete.go\\n│ │ │ ├── card_info_original_jd_v1_original_jd_account_list.go\\n│ │ │ ├── card_info_original_jd_v1_original_jd_account_refresh_status.go\\n│ │ │ ├── card_info_original_jd_v1_original_jd_account_update.go\\n│ │ │ ├── card_info_original_jd_v1_original_jd_account_update_status.go\\n│ │ │ └── card_info_original_jd_v1_original_jd_account_wallet_list.go\\n│ │ ├── card_info_t_mall_game\\n│ │ │ ├── card_info_t_mall_game.go\\n│ │ │ ├── card_info_t_mall_game_new.go\\n│ │ │ ├── card_info_t_mall_game_v1_call_back_order_manual.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_account_authorize_callback.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_account_authorize_get_key.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_account_create.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_account_delete.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_account_get_one_random.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_account_list.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_account_t_mall_auth_status.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_account_toggle.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_agiso_callback.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_agiso_callback_test.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_daily_order_summary.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_data_sync.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_order_list.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_order_modify_status_succeed.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_order_query_category.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_order_query_order.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_order_submit.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_shop_order_get_one.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_shop_order_history.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_shop_order_list.go\\n│ │ │ ├── card_info_t_mall_game_v1_t_mall_game_shop_order_t_mall_history.go\\n│ │ │ └── card_info_t_mall_game_v1_t_mall_game_stats.go\\n│ │ ├── card_info_walmart\\n│ │ │ ├── card_info_walmart.go\\n│ │ │ ├── card_info_walmart_new.go\\n│ │ │ ├── card_info_walmart_v1_account_cookie_batch_add.go\\n│ │ │ ├── card_info_walmart_v1_account_cookie_batch_check.go\\n│ │ │ ├── card_info_walmart_v1_account_cookie_check.go\\n│ │ │ ├── card_info_walmart_v1_account_create.go\\n│ │ │ ├── card_info_walmart_v1_account_daily_summary.go\\n│ │ │ ├── card_info_walmart_v1_account_delete.go\\n│ │ │ ├── card_info_walmart_v1_account_list.go\\n│ │ │ ├── card_info_walmart_v1_account_load.go\\n│ │ │ ├── card_info_walmart_v1_account_refresh_status.go\\n│ │ │ ├── card_info_walmart_v1_account_status_detect.go\\n│ │ │ ├── card_info_walmart_v1_account_summary_download.go\\n│ │ │ ├── card_info_walmart_v1_account_update.go\\n│ │ │ ├── card_info_walmart_v1_account_update_status.go\\n│ │ │ ├── card_info_walmart_v1_account_wallet_list.go\\n│ │ │ ├── card_info_walmart_v1_download.go\\n│ │ │ ├── card_info_walmart_v1_download_template.go\\n│ │ │ ├── card_info_walmart_v1_group_add.go\\n│ │ │ ├── card_info_walmart_v1_group_all_list.go\\n│ │ │ ├── card_info_walmart_v1_group_delete.go\\n│ │ │ ├── card_info_walmart_v1_group_export.go\\n│ │ │ ├── card_info_walmart_v1_group_list.go\\n│ │ │ ├── card_info_walmart_v1_group_stat.go\\n│ │ │ ├── card_info_walmart_v1_group_update.go\\n│ │ │ ├── card_info_walmart_v1_list.go\\n│ │ │ ├── card_info_walmart_v1_order_callback.go\\n│ │ │ ├── card_info_walmart_v1_order_export.go\\n│ │ │ ├── card_info_walmart_v1_order_history.go\\n│ │ │ ├── card_info_walmart_v1_order_status_reset.go\\n│ │ │ ├── card_info_walmart_v1_order_summary_list.go\\n│ │ │ ├── card_info_walmart_v1_redeem_config_get.go\\n│ │ │ ├── card_info_walmart_v1_redeem_config_set.go\\n│ │ │ ├── card_info_walmart_v1_stats_overview.go\\n│ │ │ ├── card_info_walmart_v1_stats_overview_download.go\\n│ │ │ └── card_info_walmart_v1_submit.go\\n│ │ ├── card_redeem_jd\\n│ │ │ ├── card_redeem_jd.go\\n│ │ │ ├── card_redeem_jd_new.go\\n│ │ │ ├── card_redeem_jd_v1_account_add.go\\n│ │ │ ├── card_redeem_jd_v1_account_delete.go\\n│ │ │ ├── card_redeem_jd_v1_account_get.go\\n│ │ │ ├── card_redeem_jd_v1_account_list.go\\n│ │ │ ├── card_redeem_jd_v1_account_status.go\\n│ │ │ ├── card_redeem_jd_v1_account_update.go\\n│ │ │ ├── card_redeem_jd_v1_order_list.go\\n│ │ │ └── card_redeem_jd_v1_place_order.go\\n│ │ ├── channel\\n│ │ │ ├── channel.go\\n│ │ │ ├── channel_new.go\\n│ │ │ ├── channel_v2_entrance_create.go\\n│ │ │ ├── channel_v2_entrance_delete.go\\n│ │ │ ├── channel_v2_entrance_list.go\\n│ │ │ └── channel_v2_entrance_update.go\\n│ │ ├── fund\\n│ │ │ ├── fund.go\\n│ │ │ ├── fund_new.go\\n│ │ │ ├── fund_v1_menu_log_create.go\\n│ │ │ ├── fund_v1_menu_log_delete.go\\n│ │ │ ├── fund_v1_menu_log_list.go\\n│ │ │ ├── fund_v1_menu_log_update.go\\n│ │ │ ├── fund_v1_wallet_create.go\\n│ │ │ ├── fund_v1_wallet_delete.go\\n│ │ │ ├── fund_v1_wallet_list.go\\n│ │ │ └── fund_v1_wallet_update.go\\n│ │ ├── merchant\\n│ │ │ ├── merchant.go\\n│ │ │ ├── merchant_new.go\\n│ │ │ ├── merchant_v1_merchant_all_list.go\\n│ │ │ ├── merchant_v1_merchant_config_add.go\\n│ │ │ ├── merchant_v1_merchant_config_detail.go\\n│ │ │ ├── merchant_v1_merchant_config_list.go\\n│ │ │ ├── merchant_v1_merchant_config_status.go\\n│ │ │ ├── merchant_v1_merchant_config_update.go\\n│ │ │ ├── merchant_v1_merchant_deploy_add.go\\n│ │ │ ├── merchant_v1_merchant_deploy_delete.go\\n│ │ │ ├── merchant_v1_merchant_deploy_get_detail.go\\n│ │ │ ├── merchant_v1_merchant_deploy_list.go\\n│ │ │ ├── merchant_v1_merchant_deploy_update.go\\n│ │ │ ├── merchant_v1_merchant_sample_all_list.go\\n│ │ │ ├── merchant_v1_order_query.go\\n│ │ │ ├── merchant_v1_steal_create.go\\n│ │ │ ├── merchant_v1_steal_delete.go\\n│ │ │ ├── merchant_v1_steal_list.go\\n│ │ │ ├── merchant_v1_steal_record_list.go\\n│ │ │ ├── merchant_v1_steal_stats.go\\n│ │ │ ├── merchant_v1_steal_status_get.go\\n│ │ │ ├── merchant_v1_steal_status_set.go\\n│ │ │ ├── merchant_v1_steal_update.go\\n│ │ │ └── merchant_v1_steal_update_status.go\\n│ │ ├── monitor\\n│ │ │ ├── monitor.go\\n│ │ │ ├── monitor_new.go\\n│ │ │ └── monitor_v1_health_check.go\\n│ │ ├── order\\n│ │ │ ├── order.go\\n│ │ │ ├── order_new.go\\n│ │ │ ├── order_v1_order_form_create.go\\n│ │ │ ├── order_v1_order_form_delete.go\\n│ │ │ ├── order_v1_order_form_list.go\\n│ │ │ ├── order_v1_order_form_update.go\\n│ │ │ ├── order_v1_order_log_delete.go\\n│ │ │ ├── order_v1_order_log_list.go\\n│ │ │ ├── order_v1_order_summary_daily_get_list.go\\n│ │ │ └── order_v1_order_summary_get_list.go\\n│ │ ├── restriction\\n│ │ │ ├── restriction.go\\n│ │ │ ├── restriction_new.go\\n│ │ │ ├── restriction_v1_block_order.go\\n│ │ │ ├── restriction_v1_check_ip_allowed.go\\n│ │ │ ├── restriction_v1_query_all_province.go\\n│ │ │ ├── restriction_v1_user_info_collection.go\\n│ │ │ └── restriction_v1_user_info_collection_test.go\\n│ │ ├── road\\n│ │ │ ├── road.go\\n│ │ │ ├── road_new.go\\n│ │ │ └── road_v1_simple_all_get_road.go\\n│ │ ├── road_pool\\n│ │ │ ├── road_pool.go\\n│ │ │ ├── road_pool_new.go\\n│ │ │ └── road_pool_v1_simple_all_get_road.go\\n│ │ ├── sysUser\\n│ │ │ ├── sysUser.go\\n│ │ │ ├── sysUser_new.go\\n│ │ │ ├── sysUser_v1_totp_image_get.go\\n│ │ │ ├── sysUser_v1_totp_reset.go\\n│ │ │ ├── sysUser_v1_totp_set.go\\n│ │ │ ├── sysUser_v1_totp_status_get.go\\n│ │ │ ├── sysUser_v1_user_add.go\\n│ │ │ ├── sysUser_v1_user_change_pwd.go\\n│ │ │ ├── sysUser_v1_user_delete.go\\n│ │ │ ├── sysUser_v1_user_edit.go\\n│ │ │ ├── sysUser_v1_user_forbidden_by_id.go\\n│ │ │ ├── sysUser_v1_user_get_all_user.go\\n│ │ │ ├── sysUser_v1_user_get_by_ids.go\\n│ │ │ ├── sysUser_v1_user_get_edit.go\\n│ │ │ ├── sysUser_v1_user_get_params.go\\n│ │ │ ├── sysUser_v1_user_login_out.go\\n│ │ │ ├── sysUser_v1_user_menus.go\\n│ │ │ ├── sysUser_v1_user_search.go\\n│ │ │ ├── sysUser_v1_user_status.go\\n│ │ │ └── sysUser_v1_user_suspend_or_continue.go\\n│ │ ├── sys_auth_rule\\n│ │ │ ├── sys_auth_rule.go\\n│ │ │ ├── sys_auth_rule_new.go\\n│ │ │ ├── sys_auth_rule_v1_rule_add.go\\n│ │ │ ├── sys_auth_rule_v1_rule_delete.go\\n│ │ │ ├── sys_auth_rule_v1_rule_get_params.go\\n│ │ │ ├── sys_auth_rule_v1_rule_info.go\\n│ │ │ ├── sys_auth_rule_v1_rule_search.go\\n│ │ │ └── sys_auth_rule_v1_rule_update.go\\n│ │ ├── sys_payment\\n│ │ │ ├── sys_payment.go\\n│ │ │ ├── sys_payment_new.go\\n│ │ │ ├── sys_payment_v1_payment_summary_list.go\\n│ │ │ ├── sys_payment_v1_sys_payment_add.go\\n│ │ │ ├── sys_payment_v1_sys_payment_get.go\\n│ │ │ ├── sys_payment_v1_sys_payment_get_one.go\\n│ │ │ ├── sys_payment_v1_sys_payment_records_get.go\\n│ │ │ └── sys_payment_v1_sys_payment_records_get_statistics.go\\n│ │ ├── sys_role\\n│ │ │ ├── sys_role.go\\n│ │ │ ├── sys_role_new.go\\n│ │ │ ├── sys_role_v1_role_add.go\\n│ │ │ ├── sys_role_v1_role_delete.go\\n│ │ │ ├── sys_role_v1_role_edit.go\\n│ │ │ ├── sys_role_v1_role_get.go\\n│ │ │ ├── sys_role_v1_role_get_params.go\\n│ │ │ └── sys_role_v1_role_list.go\\n│ │ ├── sys_user_login\\n│ │ │ ├── sys_user_login.go\\n│ │ │ ├── sys_user_login_new.go\\n│ │ │ └── sys_user_login_v1_user_login.go\\n│ │ ├── user_center\\n│ │ │ ├── user_center.go\\n│ │ │ ├── user_center_new.go\\n│ │ │ └── user_center_v1_get_user_info.go\\n│ │ └── validation\\n│ │ ├── validation.go\\n│ │ ├── validation_new.go\\n│ │ └── validation_v1_get_captcha.go\\n│ ├── dao\\n│ │ ├── internal\\n│ │ │ ├── v_1_account_history_info.go\\n│ │ │ ├── v_1_account_info.go\\n│ │ │ ├── v_1_agent_info.go\\n│ │ │ ├── v_1_bank_card_info.go\\n│ │ │ ├── v_1_card_apple_account_info.go\\n│ │ │ ├── v_1_card_apple_account_info_history.go\\n│ │ │ ├── v_1_card_apple_hidden_settings.go\\n│ │ │ ├── v_1_card_apple_hidden_settings_recharge_info.go\\n│ │ │ ├── v_1_card_apple_history_info.go\\n│ │ │ ├── v_1_card_apple_recharge_info.go\\n│ │ │ ├── v_1_card_redeem_account_deduction.go\\n│ │ │ ├── v_1_card_redeem_account_group.go\\n│ │ │ ├── v_1_card_redeem_account_history.go\\n│ │ │ ├── v_1_card_redeem_account_info.go\\n│ │ │ ├── v_1_card_redeem_account_summary.go\\n│ │ │ ├── v_1_card_redeem_cookie_info.go\\n│ │ │ ├── v_1_card_redeem_cookie_order.go\\n│ │ │ ├── v_1_card_redeem_cookie_order_history.go\\n│ │ │ ├── v_1_card_redeem_cookie_order_jd.go\\n│ │ │ ├── v_1_card_redeem_cookie_order_jd_history.go\\n│ │ │ ├── v_1_card_redeem_order_history.go\\n│ │ │ ├── v_1_card_redeem_order_info.go\\n│ │ │ ├── v_1_legend_any_money.go\\n│ │ │ ├── v_1_legend_area.go\\n│ │ │ ├── v_1_legend_fix_money.go\\n│ │ │ ├── v_1_legend_fix_present.go\\n│ │ │ ├── v_1_legend_group.go\\n│ │ │ ├── v_1_legend_scale_present.go\\n│ │ │ ├── v_1_legend_scale_template.go\\n│ │ │ ├── v_1_menu_info.go\\n│ │ │ ├── v_1_merchant_deploy_info.go\\n│ │ │ ├── v_1_merchant_hidden_config.go\\n│ │ │ ├── v_1_merchant_hidden_record.go\\n│ │ │ ├── v_1_merchant_info.go\\n│ │ │ ├── v_1_merchant_load_info.go\\n│ │ │ ├── v_1_migrations.go\\n│ │ │ ├── v_1_notify_info.go\\n│ │ │ ├── v_1_order_info.go\\n│ │ │ ├── v_1_order_profit_info.go\\n│ │ │ ├── v_1_order_settle_info.go\\n│ │ │ ├── v_1_payfor_info.go\\n│ │ │ ├── v_1_power_info.go\\n│ │ │ ├── v_1_recharge_t_mall_account.go\\n│ │ │ ├── v_1_recharge_t_mall_order.go\\n│ │ │ ├── v_1_recharge_t_mall_order_fake.go\\n│ │ │ ├── v_1_recharge_t_mall_order_history.go\\n│ │ │ ├── v_1_recharge_t_mall_shop.go\\n│ │ │ ├── v_1_recharge_t_mall_shop_history.go\\n│ │ │ ├── v_1_restrict_client_access_ip_relation.go\\n│ │ │ ├── v_1_restrict_client_access_record.go\\n│ │ │ ├── v_1_restrict_ip_order_access.go\\n│ │ │ ├── v_1_restrict_ip_record.go\\n│ │ │ ├── v_1_road_info.go\\n│ │ │ ├── v_1_road_pool_info.go\\n│ │ │ ├── v_1_role_info.go\\n│ │ │ ├── v_1_schema_migrations.go\\n│ │ │ ├── v_1_second_menu_info.go\\n│ │ │ ├── v_1_sys_auth_rule.go\\n│ │ │ ├── v_1_sys_casbin_rule.go\\n│ │ │ ├── v_1_sys_config_dict.go\\n│ │ │ ├── v_1_sys_role.go\\n│ │ │ ├── v_1_sys_user.go\\n│ │ │ ├── v_1_sys_user_config_channel.go\\n│ │ │ ├── v_1_sys_user_deductions.go\\n│ │ │ ├── v_1_sys_user_login_log.go\\n│ │ │ ├── v_1_sys_user_payment.go\\n│ │ │ ├── v_1_sys_user_payment_records.go\\n│ │ │ ├── v_1_task_order_fake.go\\n│ │ │ └── v_1_user_info.go\\n│ │ ├── v_1_account_history_info.go\\n│ │ ├── v_1_account_info.go\\n│ │ ├── v_1_agent_info.go\\n│ │ ├── v_1_bank_card_info.go\\n│ │ ├── v_1_card_apple_account_info.go\\n│ │ ├── v_1_card_apple_account_info_history.go\\n│ │ ├── v_1_card_apple_hidden_settings.go\\n│ │ ├── v_1_card_apple_hidden_settings_recharge_info.go\\n│ │ ├── v_1_card_apple_history_info.go\\n│ │ ├── v_1_card_apple_recharge_info.go\\n│ │ ├── v_1_card_redeem_account_deduction.go\\n│ │ ├── v_1_card_redeem_account_group.go\\n│ │ ├── v_1_card_redeem_account_history.go\\n│ │ ├── v_1_card_redeem_account_info.go\\n│ │ ├── v_1_card_redeem_account_summary.go\\n│ │ ├── v_1_card_redeem_cookie_info.go\\n│ │ ├── v_1_card_redeem_cookie_order.go\\n│ │ ├── v_1_card_redeem_cookie_order_history.go\\n│ │ ├── v_1_card_redeem_cookie_order_jd.go\\n│ │ ├── v_1_card_redeem_cookie_order_jd_history.go\\n│ │ ├── v_1_card_redeem_order_history.go\\n│ │ ├── v_1_card_redeem_order_info.go\\n│ │ ├── v_1_legend_any_money.go\\n│ │ ├── v_1_legend_area.go\\n│ │ ├── v_1_legend_fix_money.go\\n│ │ ├── v_1_legend_fix_present.go\\n│ │ ├── v_1_legend_group.go\\n│ │ ├── v_1_legend_scale_present.go\\n│ │ ├── v_1_legend_scale_template.go\\n│ │ ├── v_1_menu_info.go\\n│ │ ├── v_1_merchant_deploy_info.go\\n│ │ ├── v_1_merchant_hidden_config.go\\n│ │ ├── v_1_merchant_hidden_record.go\\n│ │ ├── v_1_merchant_info.go\\n│ │ ├── v_1_merchant_load_info.go\\n│ │ ├── v_1_migrations.go\\n│ │ ├── v_1_notify_info.go\\n│ │ ├── v_1_order_info.go\\n│ │ ├── v_1_order_profit_info.go\\n│ │ ├── v_1_order_settle_info.go\\n│ │ ├── v_1_payfor_info.go\\n│ │ ├── v_1_power_info.go\\n│ │ ├── v_1_recharge_t_mall_account.go\\n│ │ ├── v_1_recharge_t_mall_order.go\\n│ │ ├── v_1_recharge_t_mall_order_fake.go\\n│ │ ├── v_1_recharge_t_mall_order_history.go\\n│ │ ├── v_1_recharge_t_mall_shop.go\\n│ │ ├── v_1_recharge_t_mall_shop_history.go\\n│ │ ├── v_1_restrict_client_access_ip_relation.go\\n│ │ ├── v_1_restrict_client_access_record.go\\n│ │ ├── v_1_restrict_ip_order_access.go\\n│ │ ├── v_1_restrict_ip_record.go\\n│ │ ├── v_1_road_info.go\\n│ │ ├── v_1_road_pool_info.go\\n│ │ ├── v_1_role_info.go\\n│ │ ├── v_1_schema_migrations.go\\n│ │ ├── v_1_second_menu_info.go\\n│ │ ├── v_1_sys_auth_rule.go\\n│ │ ├── v_1_sys_casbin_rule.go\\n│ │ ├── v_1_sys_config_dict.go\\n│ │ ├── v_1_sys_role.go\\n│ │ ├── v_1_sys_user.go\\n│ │ ├── v_1_sys_user_config_channel.go\\n│ │ ├── v_1_sys_user_deductions.go\\n│ │ ├── v_1_sys_user_login_log.go\\n│ │ ├── v_1_sys_user_payment.go\\n│ │ ├── v_1_sys_user_payment_records.go\\n│ │ ├── v_1_task_order_fake.go\\n│ │ └── v_1_user_info.go\\n│ ├── errHandler\\n│ │ ├── code.go\\n│ │ └── handler.go\\n│ ├── logic\\n│ │ ├── account\\n│ │ │ └── account.go\\n│ │ ├── base_user_info\\n│ │ │ └── user_info.go\\n│ │ ├── captcha\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── card_apple_account\\n│ │ │ └── ... 9 files, 0 dirs not shown\\n│ │ ├── card_apple_order\\n│ │ │ └── ... 9 files, 0 dirs not shown\\n│ │ ├── card_redeem_account\\n│ │ │ └── ... 15 files, 0 dirs not shown\\n│ │ ├── card_redeem_cookie\\n│ │ │ └── ... 7 files, 0 dirs not shown\\n│ │ ├── card_redeem_order\\n│ │ │ └── ... 9 files, 0 dirs not shown\\n│ │ ├── card_t_mall_account\\n│ │ │ └── ... 2 files, 0 dirs not shown\\n│ │ ├── card_t_mall_order\\n│ │ │ └── ... 9 files, 0 dirs not shown\\n│ │ ├── limiter\\n│ │ │ └── ... 2 files, 0 dirs not shown\\n│ │ ├── merchant\\n│ │ │ └── ... 2 files, 0 dirs not shown\\n│ │ ├── merchant_deploy_info\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── merchant_order\\n│ │ │ └── ... 3 files, 0 dirs not shown\\n│ │ ├── pay_type\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── restriction\\n│ │ │ └── ... 3 files, 0 dirs not shown\\n│ │ ├── steal_rule\\n│ │ │ └── ... 5 files, 0 dirs not shown\\n│ │ ├── sys_auth\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── sys_auth_rule\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── sys_casbin\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── sys_config_dict\\n│ │ │ └── ... 2 files, 0 dirs not shown\\n│ │ ├── sys_login_log\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── sys_role\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── sys_user\\n│ │ │ └── ... 3 files, 0 dirs not shown\\n│ │ ├── sys_user_channel_config\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── sys_user_payment\\n│ │ │ └── ... 6 files, 0 dirs not shown\\n│ │ ├── v1_road\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ ├── v1_road_pool\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ └── logic.go\\n│ ├── middleware\\n│ │ ├── auth.go\\n│ │ └── error_handler.go\\n│ ├── model\\n│ │ ├── do\\n│ │ │ └── ... 69 files, 0 dirs not shown\\n│ │ ├── entity\\n│ │ │ └── ... 69 files, 0 dirs not shown\\n│ │ ├── agiso.go\\n│ │ ├── card_apple_account.go\\n│ │ ├── card_apple_order.go\\n│ │ ├── card_redeem.go\\n│ │ ├── card_redeem_cookie.go\\n│ │ ├── card_t_mall_game_account.go\\n│ │ ├── card_t_mall_game_order.go\\n│ │ ├── card_t_mall_game_work_space.go\\n│ │ ├── entrance.go\\n│ │ ├── merchant.go\\n│ │ ├── merchant_deploy.go\\n│ │ ├── order_info.go\\n│ │ ├── restriction.go\\n│ │ ├── road.go\\n│ │ ├── road_pool.go\\n│ │ ├── steal_rule.go\\n│ │ ├── sys_auth_rule.go\\n│ │ ├── sys_role.go\\n│ │ ├── sys_rule.go\\n│ │ ├── sys_user.go\\n│ │ ├── sys_user_config.go\\n│ │ ├── sys_user_deductions.go\\n│ │ ├── sys_user_login.go\\n│ │ ├── sys_user_payment_record.go\\n│ │ └── user_info.go\\n│ ├── packed\\n│ │ └── packed.go\\n│ ├── service\\n│ │ ├── account.go\\n│ │ ├── base_user_info.go\\n│ │ ├── captcha.go\\n│ │ ├── card_apple_account.go\\n│ │ ├── card_apple_order.go\\n│ │ ├── card_redeem_account.go\\n│ │ ├── card_redeem_cookie.go\\n│ │ ├── card_redeem_order.go\\n│ │ ├── card_t_mall_account.go\\n│ │ ├── card_t_mall_order.go\\n│ │ ├── limiter.go\\n│ │ ├── merchant.go\\n│ │ ├── merchant_deploy_info.go\\n│ │ ├── merchant_order.go\\n│ │ ├── pay_type.go\\n│ │ ├── restriction.go\\n│ │ ├── steal_rule.go\\n│ │ ├── sys_auth.go\\n│ │ ├── sys_auth_rule.go\\n│ │ ├── sys_casbin.go\\n│ │ ├── sys_config_dict.go\\n│ │ ├── sys_login_log.go\\n│ │ ├── sys_role.go\\n│ │ ├── sys_user.go\\n│ │ ├── sys_user_channel_config.go\\n│ │ ├── sys_user_payment.go\\n│ │ ├── v_1_road.go\\n│ │ └── v_1_road_pool.go\\n│ └── systemV2\\n│ ├── dao\\n│ │ └── ... 14 files, 1 dirs not shown\\n│ ├── logic\\n│ │ └── ... 1 files, 3 dirs not shown\\n│ ├── model\\n│ │ └── ... 0 files, 2 dirs not shown\\n│ └── service\\n│ └── ... 3 files, 0 dirs not shown\\n├── manifest\\n│ ├── config\\n│ │ └── config.yaml\\n│ ├── deploy\\\\kustomize\\n│ │ ├── base\\n│ │ │ └── ... 3 files, 0 dirs not shown\\n│ │ └── overlays\\\\develop\\n│ │ └── ... 3 files, 0 dirs not shown\\n│ └── docker\\n│ ├── Dockerfile\\n│ ├── docker-compose-local.yaml\\n│ ├── docker-compose.yml\\n│ ├── install-one.sh\\n│ ├── install-simple.sh\\n│ ├── install-test.sh\\n│ ├── install.sh\\n│ └── wait-for-it.sh\\n├── resource\\\\casbin\\n│ └── rbac_model.conf\\n├── utility\\n│ ├── cache\\n│ │ ├── cache.go\\n│ │ └── consts.go\\n│ ├── config\\n│ │ ├── config.go\\n│ │ ├── database.go\\n│ │ └── models.go\\n│ ├── cron\\n│ │ ├── cron.go\\n│ │ ├── t_mall_game_data_sync.go\\n│ │ └── t_mall_game_data_sync_test.go\\n│ ├── integration\\n│ │ ├── agiso\\n│ │ │ └── ... 4 files, 0 dirs not shown\\n│ │ ├── originalJd\\n│ │ │ └── ... 5 files, 0 dirs not shown\\n│ │ ├── redeem\\n│ │ │ └── ... 2 files, 5 dirs not shown\\n│ │ ├── restriction\\n│ │ │ └── ... 6 files, 0 dirs not shown\\n│ │ └── tmall\\n│ │ └── ... 5 files, 3 dirs not shown\\n│ ├── lib\\n│ │ ├── libErr\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ └── libResponse\\n│ │ └── ... 1 files, 0 dirs not shown\\n│ ├── limiter\\n│ │ ├── rate.go\\n│ │ └── redis.go\\n│ ├── mfa\\n│ │ └── mfa.go\\n│ ├── monitor\\n│ │ └── monitor.go\\n│ ├── notify\\n│ │ ├── impl\\n│ │ │ └── ... 1 files, 0 dirs not shown\\n│ │ └── notify.go\\n│ ├── otel\\n│ │ ├── config.go\\n│ │ ├── errors.go\\n│ │ ├── handler.go\\n│ │ ├── manager.go\\n│ │ └── utils.go\\n│ ├── pool\\n│ │ └── pool.go\\n│ ├── token\\n│ │ ├── user_token.go\\n│ │ ├── user_token_test.go\\n│ │ └── utils.go\\n│ ├── utils\\n│ │ ├── charset.go\\n│ │ ├── orm.go\\n│ │ ├── tools.go\\n│ │ ├── tools_test.go\\n│ │ └── utils.go\\n│ └── verify\\n│ ├── aes_ecb.go\\n│ └── md5.go\\n├── CLAUDE.md\\n├── CODEBUDDY.md\\n├── Makefile\\n├── README.md\\n├── docker-compose.yml\\n└── main.go\\n\"", + "current_document_structure": "WikiEncrypted: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", + "catalogue_think_content": "WikiEncrypted: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", + "recovery_checkpoint": "wiki_generation_completed", + "last_commit_id": "a2a994df6eb92d304845f8f2711506072549cadc", + "last_commit_update": "2025-10-18T21:42:43+08:00", + "gmt_create": "2025-10-08T17:56:14+08:00", + "gmt_modified": "2025-10-18T22:10:35.7608033+08:00", + "extend_info": "{\"language\":\"zh\",\"active\":true,\"branch\":\"develop\",\"shareStatus\":\"\",\"server_error_code\":\"\",\"cosy_version\":\"0.2.5\"}" + } +} \ No newline at end of file diff --git a/ORDER_CHANGE_HISTORY.md b/ORDER_CHANGE_HISTORY.md new file mode 100644 index 00000000..9d3ed1d4 --- /dev/null +++ b/ORDER_CHANGE_HISTORY.md @@ -0,0 +1,322 @@ +# 订单变更记录完善说明 + +## 更新时间 + +2025-10-18 + +## 更新内容 + +根据**变更记录规范**,完善订单创建过程中的变更历史记录,确保所有关键操作都有完整的可追溯记录。 + +## 变更详情 + +### 新增的变更记录点 + +#### 1. 订单创建失败时的变更记录 + +**位置**: `internal/logic/jd_cookie/order_create.go` - `CreateOrder` 方法 + +**代码**: + +```go +if retryErr != nil { + // 京东订单创建失败,更新本地订单状态和失败原因 + _ = s.updateOrderFailure(ctx, internalOrderId, retryErr.Error()) + + // 记录订单创建失败的变更历史 ✅ 新增 + _ = s.RecordOrderHistory(ctx, internalOrderId, consts.OrderChangeTypeCkFailed, "") + + return nil, retryErr +} +``` + +**说明**: + +- 当京东订单创建失败时,记录 `OrderChangeTypeCkFailed` 类型的变更 +- 记录时间点:在更新订单失败状态之后 +- 确保失败原因可追溯 + +#### 2. 订单绑定京东订单的变更记录 + +**位置**: `internal/logic/jd_cookie/order_create.go` - `CreateOrder` 方法 + +**代码**: + +```go +// 京东订单创建成功,更新本地订单的京东订单ID和支付链接 +if jdOrderErr == nil { + err = s.updateOrderJdOrderId(ctx, internalOrderId, jdOrderId, wxPayUrl) + // ... 其他逻辑 + + // 记录订单绑定京东订单的变更历史 ✅ 新增 + _ = s.RecordOrderHistory(ctx, internalOrderId, consts.OrderChangeTypeRebind, jdOrderId) +} +``` + +**说明**: + +- 当订单成功绑定京东订单时,记录 `OrderChangeTypeRebind` 类型的变更 +- 记录关联的京东订单ID +- 便于追踪订单与京东订单的绑定关系 + +#### 3. 失败订单重试失败的变更记录 + +**位置**: `internal/logic/jd_cookie/order_create.go` - `retryCreateJdOrderForFailedOrder` 方法 + +**代码**: + +```go +if retryErr != nil { + // 京东订单创建失败,更新本地订单失败原因 + _ = s.updateOrderFailure(ctx, existingOrder.OrderId, retryErr.Error()) + + // 记录订单重试失败的变更历史 ✅ 新增 + _ = s.RecordOrderHistory(ctx, existingOrder.OrderId, consts.OrderChangeTypeCkFailed, "") + + return nil, retryErr +} +``` + +**说明**: + +- 失败订单重试仍然失败时,记录变更历史 +- 可以追踪订单的重试次数和失败时间点 +- 便于分析订单失败模式 + +## 完整的变更记录流程 + +### 订单创建成功流程的变更记录 + +```mermaid +sequenceDiagram + participant U as 用户 + participant S as 系统 + participant H as 变更历史表 + + U->>S: 创建订单请求 + S->>S: 创建本地订单 + S->>H: 记录订单创建(OrderChangeTypeCreate) + + S->>S: 创建京东订单 + alt 创建成功 + S->>S: 更新订单状态 + S->>H: 记录订单绑定京东订单(OrderChangeTypeRebind) + S->>U: 返回支付链接 + else 创建失败 + S->>S: 更新订单为失败状态 + S->>H: 记录订单创建失败(OrderChangeTypeCkFailed) + S->>U: 返回错误信息 + end +``` + +### 失败订单重试流程的变更记录 + +```mermaid +sequenceDiagram + participant U as 用户 + participant S as 系统 + participant H as 变更历史表 + + U->>S: 再次请求订单 + S->>S: 检测到失败状态 + S->>S: 触发自动重试 + + alt 重试成功 + S->>S: 创建京东订单成功 + S->>S: 更新订单为待支付状态 + S->>H: 记录订单重新绑定(OrderChangeTypeRebind) + S->>U: 返回支付链接 + else 重试失败 + S->>S: 保持失败状态 + S->>H: 记录订单重试失败(OrderChangeTypeCkFailed) + S->>U: 返回错误信息 + end +``` + +## 变更记录类型说明 + +### OrderChangeType 枚举值 + +位置: `internal/consts/jd_cookie.go` + +| 类型 | 常量 | 说明 | 使用场景 | +|----------|---------------------------|--------------|-------------| +| 创建 | `OrderChangeTypeCreate` | 订单首次创建 | 本地订单创建时 | +| 支付 | `OrderChangeTypePay` | 订单支付完成 | 用户支付成功时 | +| 过期 | `OrderChangeTypeExpire` | 订单过期 | 订单超时未支付时 | +| 重新绑定 | `OrderChangeTypeRebind` | 绑定/换绑京东订单 | 订单关联京东订单时 | +| Cookie失败 | `OrderChangeTypeCkFailed` | Cookie失效导致失败 | 京东订单创建失败时 ✅ | + +## 完整的变更记录点清单 + +### 1. 创建新订单 + +- ✅ 本地订单创建时: `OrderChangeTypeCreate` +- ✅ 京东订单创建成功: `OrderChangeTypeRebind` +- ✅ 京东订单创建失败: `OrderChangeTypeCkFailed` (新增) + +### 2. 失败订单重试 + +- ✅ 重试成功绑定京东订单: `OrderChangeTypeRebind` +- ✅ 重试失败: `OrderChangeTypeCkFailed` (新增) + +### 3. 订单支付 + +- ✅ 支付成功: `OrderChangeTypePay` (已有) +- ✅ 订单过期: `OrderChangeTypeExpire` (已有) + +## 数据示例 + +### 订单变更历史表记录示例 + +#### 场景1: 订单创建成功 + +```sql +-- 记录1: 订单创建 +INSERT INTO jd_cookie_order_change_history +VALUES (1, 'uuid-001', 'JD_123', 'create', NULL, NOW()); + +-- 记录2: 绑定京东订单 +INSERT INTO jd_cookie_order_change_history +VALUES (2, 'uuid-002', 'JD_123', 'rebind', 'JD_ORDER_456', NOW()); +``` + +#### 场景2: 订单创建失败 + +```sql +-- 记录1: 订单创建 +INSERT INTO jd_cookie_order_change_history +VALUES (1, 'uuid-001', 'JD_123', 'create', NULL, NOW()); + +-- 记录2: 创建失败 +INSERT INTO jd_cookie_order_change_history +VALUES (2, 'uuid-002', 'JD_123', 'ck_failed', NULL, NOW()); +``` + +#### 场景3: 失败订单重试成功 + +```sql +-- 记录1: 订单创建 +INSERT INTO jd_cookie_order_change_history +VALUES (1, 'uuid-001', 'JD_123', 'create', NULL, NOW()); + +-- 记录2: 首次失败 +INSERT INTO jd_cookie_order_change_history +VALUES (2, 'uuid-002', 'JD_123', 'ck_failed', NULL, NOW()); + +-- 记录3: 重试成功 +INSERT INTO jd_cookie_order_change_history +VALUES (3, 'uuid-003', 'JD_123', 'rebind', 'JD_ORDER_789', NOW()); +``` + +## 查询示例 + +### 查询订单的完整变更历史 + +```sql +SELECT + id, + history_uuid, + order_id, + change_type, + jd_order_id, + created_at +FROM jd_cookie_order_change_history +WHERE order_id = 'JD_123' +ORDER BY created_at ASC; +``` + +### 查询失败订单的重试记录 + +```sql +SELECT + order_id, + COUNT(*) as retry_count, + MAX(created_at) as last_retry_at +FROM jd_cookie_order_change_history +WHERE change_type = 'ck_failed' +GROUP BY order_id +HAVING COUNT(*) > 1 +ORDER BY retry_count DESC; +``` + +### 查询订单从失败到成功的时间 + +```sql +SELECT + a.order_id, + a.created_at as failed_at, + b.created_at as success_at, + TIMESTAMPDIFF(SECOND, a.created_at, b.created_at) as recovery_seconds +FROM jd_cookie_order_change_history a +JOIN jd_cookie_order_change_history b + ON a.order_id = b.order_id +WHERE a.change_type = 'ck_failed' + AND b.change_type = 'rebind' + AND b.created_at > a.created_at; +``` + +## 优势 + +### 1. 完整的可追溯性 + +- ✅ 每个订单的所有状态变更都有记录 +- ✅ 可以追踪订单的完整生命周期 +- ✅ 便于问题排查和数据分析 + +### 2. 便于运营分析 + +- ✅ 统计订单失败率 +- ✅ 分析失败订单的恢复时间 +- ✅ 识别问题模式 + +### 3. 支持审计需求 + +- ✅ 满足合规要求 +- ✅ 完整的操作日志 +- ✅ 支持追责和溯源 + +## 相关文件 + +- `internal/logic/jd_cookie/order_create.go`: 订单创建逻辑 +- `internal/consts/jd_cookie.go`: 变更类型常量定义 +- `sql/jd_cookie_tables.sql`: 变更历史表结构 + +## 测试建议 + +### 功能测试 + +1. **创建订单成功**: 验证记录了 `create` 和 `rebind` 两条历史 +2. **创建订单失败**: 验证记录了 `create` 和 `ck_failed` 两条历史 +3. **失败订单重试成功**: 验证记录了完整的重试链路 +4. **失败订单持续失败**: 验证每次重试都有记录 + +### 数据验证 + +```go +// 验证订单变更历史记录 +func TestOrderChangeHistory(t *testing.T) { + // 1. 创建订单 + order := createOrder() + + // 2. 查询变更历史 + history := getOrderHistory(order.OrderId) + + // 3. 验证记录数量和类型 + assert.Equal(t, 2, len(history)) + assert.Equal(t, "create", history[0].ChangeType) + assert.Equal(t, "rebind", history[1].ChangeType) +} +``` + +## 注意事项 + +1. **异步记录**: 变更历史记录失败不应影响主流程 +2. **性能考虑**: 使用异步方式记录,避免阻塞 +3. **数据清理**: 定期归档历史数据,避免表过大 + +## 下一步优化 + +1. **详细字段**: 添加 `remark` 字段记录详细失败原因 +2. **操作人**: 添加 `operator` 字段记录操作人信息 +3. **数据快照**: 记录变更前后的完整数据状态 diff --git a/ORDER_CREATE_REFACTOR.md b/ORDER_CREATE_REFACTOR.md new file mode 100644 index 00000000..74f845b6 --- /dev/null +++ b/ORDER_CREATE_REFACTOR.md @@ -0,0 +1,197 @@ +# 订单创建流程重构报告 + +## 修改时间 + +2025-10-18 + +## 修改原因 + +原有流程只有在京东订单创建成功后才会创建本地订单记录,这导致京东订单创建失败时无法追踪失败原因和用户请求。 + +## 修改内容 + +### 1. 数据库表结构调整 + +#### 修改 `jd_cookie_order` 表 + +在 `sql/jd_cookie_tables.sql` 中更新了订单表结构: + +```sql +-- 添加字段 +ALTER TABLE `jd_cookie_order` +ADD COLUMN `user_order_id` varchar(64) NOT NULL COMMENT '用户订单号' AFTER `order_id`, +ADD COLUMN `failure_reason` text DEFAULT NULL COMMENT '失败原因' AFTER `status`, +ADD UNIQUE KEY `uk_user_order_id` (`user_order_id`); + +-- 更新状态字段注释 +ALTER TABLE `jd_cookie_order` +MODIFY COLUMN `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态:1待支付 2已支付 3已过期 4已取消 5Ck失败'; +``` + +**新增字段说明:** + +- `user_order_id`: 用户订单号,用于唯一标识用户的订单请求 +- `failure_reason`: 失败原因,记录京东订单创建失败的详细错误信息 + +### 2. 订单创建流程调整 + +#### 原有流程 + +```mermaid +graph TD + A[接收创建订单请求] --> B[检查订单是否存在] + B -->|存在| C[返回已有订单] + B -->|不存在| D[尝试复用京东订单] + D --> E[创建京东订单] + E -->|成功| F[创建本地订单记录] + E -->|失败| G[返回错误,无记录] + F --> H[返回订单信息] +``` + +#### 新流程 + +```mermaid +graph TD + A[接收创建订单请求] --> B[检查订单是否存在] + B -->|存在| C[返回已有订单] + B -->|不存在| D[创建本地订单记录] + D --> E[记录订单创建历史] + E --> F[尝试复用京东订单] + F --> G[创建京东订单] + G -->|成功| H[更新订单的京东订单ID] + G -->|失败| I[更新订单状态为失败] + I --> J[记录失败原因] + H --> K[返回订单信息] + J --> L[返回错误] +``` + +### 3. 代码修改详情 + +#### 修改文件 + +1. **internal/logic/jd_cookie/order_create.go** + - 调整 `CreateOrder` 方法,先创建本地订单,再创建京东订单 + - 失败时更新订单状态和失败原因 + - 成功时更新订单的京东订单ID和支付链接 + +2. **internal/logic/jd_cookie/order_utils.go** + - 新增 `updateOrderFailure` 方法:更新订单失败信息 + - 修改 `updateOrderJdOrderId` 方法:支持同时更新京东订单ID和支付链接 + +3. **sql/jd_cookie_tables.sql** + - 更新订单表结构定义 + +4. **sql/add_order_fields.sql** (新增) + - 提供数据库迁移SQL + +### 4. 关键改进点 + +#### 4.1 错误追踪 + +- **改进前**: 京东订单创建失败时,没有任何本地记录 +- **改进后**: 所有订单请求都会创建本地记录,失败时记录详细错误原因 + +#### 4.2 状态管理 + +- **改进前**: 订单状态不明确 +- **改进后**: + - 初始状态:待支付(1) + - 京东订单创建失败:Ck失败(5) + - 京东订单创建成功:待支付(1),关联京东订单ID + +#### 4.3 历史记录 + +- 在创建本地订单后立即记录订单创建历史 +- 无论京东订单是否创建成功,都有完整的操作记录 + +### 5. 执行步骤 + +#### 5.1 数据库迁移 + +执行以下SQL文件更新数据库表结构: + +```bash +# 连接数据库后执行 +source sql/add_order_fields.sql +``` + +或手动执行: + +```sql +-- 添加字段 +ALTER TABLE `jd_cookie_order` +ADD COLUMN `user_order_id` varchar(64) NOT NULL COMMENT '用户订单号' AFTER `order_id`, +ADD COLUMN `failure_reason` text DEFAULT NULL COMMENT '失败原因' AFTER `status`, +ADD UNIQUE KEY `uk_user_order_id` (`user_order_id`); + +-- 更新状态注释 +ALTER TABLE `jd_cookie_order` +MODIFY COLUMN `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态:1待支付 2已支付 3已过期 4已取消 5Ck失败'; +``` + +#### 5.2 重新生成DAO + +```bash +cd e:\projects\kami\kami_backend +gf gen dao +``` + +#### 5.3 更新代码 + +代码已经更新,需要重新编译: + +```bash +go build . +``` + +### 6. 注意事项 + +1. **数据库迁移**: + - 必须先执行数据库迁移SQL + - 然后重新生成DAO模型 + - 最后部署新代码 + +2. **向后兼容性**: + - 新增字段有默认值,不影响现有数据 + - 旧的订单记录 `user_order_id` 字段需要数据迁移填充 + +3. **失败原因记录**: + - 当前通过日志记录失败原因 + - 数据库迁移完成后,会自动存储到 `failure_reason` 字段 + +### 7. 测试建议 + +1. **正常流程测试**: + - 创建订单成功的场景 + - 复用京东订单的场景 + +2. **异常流程测试**: + - Cookie不可用导致创建失败 + - 库存不足导致创建失败 + - 网络超时导致创建失败 + +3. **并发测试**: + - 同一用户订单号并发请求 + - 验证分布式锁是否生效 + +### 8. 回滚方案 + +如果需要回滚到原有逻辑: + +1. 恢复代码到之前的版本 +2. 保留数据库表结构(不影响旧逻辑) +3. 重新部署 + +## 预期效果 + +1. **完整的订单追踪**: 每个用户请求都有对应的本地订单记录 +2. **明确的失败原因**: 京东订单创建失败时,可以查看详细错误信息 +3. **更好的用户体验**: 用户可以通过订单号查询失败原因 +4. **便于问题排查**: 运营人员可以快速定位订单创建失败的原因 + +## 相关文件 + +- `internal/logic/jd_cookie/order_create.go`: 订单创建核心逻辑 +- `internal/logic/jd_cookie/order_utils.go`: 订单工具方法 +- `sql/jd_cookie_tables.sql`: 数据库表结构定义 +- `sql/add_order_fields.sql`: 数据库迁移SQL diff --git a/ORDER_RETRY_MECHANISM.md b/ORDER_RETRY_MECHANISM.md new file mode 100644 index 00000000..b1bf5e99 --- /dev/null +++ b/ORDER_RETRY_MECHANISM.md @@ -0,0 +1,255 @@ +# 订单失败自动重试机制 + +## 更新时间 + +2025-10-18 + +## 功能说明 + +为失败状态的订单添加自动重试机制,当用户再次请求创建订单或获取订单支付链接时,系统会自动尝试重新创建京东订单,直到成功为止。 + +## 核心特性 + +### 1. 智能失败检测 + +- 检测订单状态为 `OrderStatusCkFailed`(Ck失败状态) +- 在创建订单和获取支付链接时都会进行检测 + +### 2. 自动重试机制 + +- 失败订单被再次请求时自动触发重试 +- 使用相同的重试逻辑(切换Cookie直到成功) +- 无需用户手动重新创建订单 + +### 3. 状态自动恢复 + +- 重试成功后自动从失败状态恢复为待支付状态 +- 更新订单的京东订单ID和支付链接 +- 记录完整的状态变更历史 + +## 流程图 + +### 创建订单流程(含失败重试) + +```mermaid +graph TD + A[用户请求创建订单] --> B{订单是否存在?} + B -->|不存在| C[创建本地订单] + B -->|存在| D{订单状态} + + D -->|待支付/已支付| E[返回现有订单] + D -->|失败状态| F[触发自动重试] + + C --> G[尝试创建京东订单] + F --> G + + G -->|成功| H[更新订单状态为待支付] + G -->|失败| I[更新订单状态为失败] + + H --> J[返回支付链接] + I --> K[返回错误信息] + + K -.再次请求.-> F +``` + +### 获取支付链接流程(含失败重试) + +```mermaid +graph TD + A[用户请求获取支付链接] --> B[查询订单] + B --> C{订单状态} + + C -->|失败状态| D[触发自动重试] + C -->|正常状态| E{支付链接是否过期?} + + D --> F[尝试创建京东订单] + F -->|成功| G[更新为待支付状态] + F -->|失败| H[保持失败状态] + + E -->|未过期| I[返回支付链接] + E -->|已过期| J[刷新支付链接] + + G --> I + H --> K[返回错误] + J --> I + + K -.再次请求.-> D +``` + +## 代码修改详情 + +### 1. 新增方法 + +#### `retryCreateJdOrderForFailedOrder` + +位置: `internal/logic/jd_cookie/order_create.go` + +```go +// 为失败的订单重新创建京东订单 +func (s *sJdCookie) retryCreateJdOrderForFailedOrder( + ctx context.Context, + existingOrder *entity.V1JdCookieOrder, + req *model.CreateOrderReq +) (result *model.CreateOrderResult, err error) +``` + +**功能**: + +- 尝试复用现有京东订单 +- 如果无法复用,创建新的京东订单(带重试机制) +- 更新本地订单状态和关联关系 +- 记录完整的历史记录 + +#### `updateOrderSuccess` + +位置: `internal/logic/jd_cookie/order_utils.go` + +```go +// 更新订单成功信息(从失败状态恢复) +func (s *sJdCookie) updateOrderSuccess( + ctx context.Context, + orderId, + jdOrderId, + wxPayUrl string +) error +``` + +**功能**: + +- 将失败状态的订单恢复为待支付状态 +- 关联新的京东订单ID +- 记录状态恢复日志 + +### 2. 修改的方法 + +#### `CreateOrder` + +位置: `internal/logic/jd_cookie/order_create.go` + +**修改内容**: + +```go +if existingOrder != nil { + // 检查订单状态 + orderStatus := consts.OrderStatus(existingOrder.Status) + + // 如果是失败状态,触发重试 + if orderStatus == consts.OrderStatusCkFailed { + return s.retryCreateJdOrderForFailedOrder(ctx, existingOrder, req) + } + + // 正常状态,获取支付链接 + return s.GetPaymentUrl(ctx, req.UserOrderId, existingOrder.OrderId) +} +``` + +#### `GetPaymentUrl` + +位置: `internal/logic/jd_cookie/order_query.go` + +**修改内容**: + +```go +// 检查订单状态,如果是失败状态,尝试重新创建京东订单 +orderStatus := consts.OrderStatus(order.Status) +if orderStatus == consts.OrderStatusCkFailed { + return s.retryCreateJdOrderForFailedOrder(ctx, order, &model.CreateOrderReq{ + UserOrderId: userOrderId, + Amount: gconv.Float64(order.Amount), + Category: consts.RedeemOrderCardCategory(order.Category), + }) +} +``` + +## 使用场景 + +### 场景1: 创建订单时Cookie不足 + +1. 用户创建订单,因Cookie全部不可用而失败 +2. 系统补充了新的Cookie +3. 用户再次请求创建订单(使用相同的userOrderId) +4. **自动触发重试**,使用新Cookie创建成功 +5. 返回支付链接 + +### 场景2: 获取支付链接时自动恢复 + +1. 订单创建失败,状态为`Ck失败` +2. 用户请求获取支付链接 +3. **自动检测到失败状态并触发重试** +4. 重试成功,订单状态恢复为待支付 +5. 返回有效的支付链接 + +### 场景3: 多次失败后成功 + +1. 第1次请求: 创建失败(Cookie不可用) +2. 第2次请求: 自动重试,仍然失败(Cookie仍不可用) +3. 第3次请求: 自动重试,**成功**(新的Cookie可用) +4. 订单状态从失败恢复为待支付 + +## 优势 + +### 1. 用户体验提升 + +- ✅ 无需手动重新创建订单 +- ✅ 同一订单号可以多次重试 +- ✅ 自动恢复,无需人工干预 + +### 2. 系统容错性增强 + +- ✅ 临时性故障可以自动恢复 +- ✅ Cookie不足时可以等待补充后自动重试 +- ✅ 减少失败订单积压 + +### 3. 运营成本降低 + +- ✅ 减少用户投诉 +- ✅ 降低人工处理成本 +- ✅ 提高订单成功率 + +## 重要说明 + +### 1. 幂等性保证 + +- 使用用户订单号(userOrderId)作为唯一标识 +- 同一用户订单号只会创建一个本地订单 +- 重试时不会创建新的本地订单,只更新现有订单 + +### 2. 安全性 + +- 重试过程中使用分布式锁 +- 避免并发创建导致的数据不一致 +- 完整的历史记录便于问题追溯 + +### 3. 性能考虑 + +- 重试逻辑只在检测到失败状态时触发 +- 不影响正常订单的处理性能 +- 使用异步记录历史,不阻塞主流程 + +## 监控建议 + +### 关键指标 + +1. **失败订单重试次数**: 监控平均重试次数 +2. **重试成功率**: 重试成功订单 / 总重试订单 +3. **失败订单恢复时间**: 从失败到成功的平均时长 + +### 告警规则 + +- 重试失败率 > 50%: 可能Cookie整体不可用 +- 平均重试次数 > 3: Cookie补充不及时 +- 失败订单积压 > 100: 需要人工介入 + +## 相关文件 + +- `internal/logic/jd_cookie/order_create.go`: 订单创建逻辑 +- `internal/logic/jd_cookie/order_query.go`: 订单查询逻辑 +- `internal/logic/jd_cookie/order_utils.go`: 订单工具方法 +- `ORDER_CREATE_REFACTOR.md`: 订单创建流程重构文档 + +## 下一步优化建议 + +1. **智能重试间隔**: 根据失败次数调整重试间隔 +2. **失败原因分类**: 区分不同类型的失败,针对性处理 +3. **自动降级**: 连续失败时自动降级到其他支付方式 +4. **主动通知**: 订单恢复成功后主动通知用户 diff --git a/internal/boot/boot_enums.go b/internal/boot/boot_enums.go index 24142645..51e5b0b3 100644 --- a/internal/boot/boot_enums.go +++ b/internal/boot/boot_enums.go @@ -9,5 +9,5 @@ import ( ) func init() { - gtag.SetGlobalEnums(`{"github.com/gogf/gf/v2/database/gdb.InsertOption":[0,3,1,2],"github.com/gogf/gf/v2/database/gdb.LocalType":["bigint","bool","[]byte","date","datetime","float32","float64","int","int64","int64-bytes","[]int64","[]int","json","jsonb","string","[]string","time","uint","uint64","uint64-bytes","[]uint64",""],"github.com/gogf/gf/v2/database/gdb.Propagation":["MANDATORY","NESTED","NEVER","NOT_SUPPORTED","REQUIRED","REQUIRES_NEW","SUPPORTS"],"github.com/gogf/gf/v2/database/gdb.Role":["master","slave"],"github.com/gogf/gf/v2/database/gdb.SelectType":[3,1,0,2],"github.com/gogf/gf/v2/database/gdb.SoftTimeType":[0,1,2,4,3,5],"github.com/gogf/gf/v2/database/gdb.SqlType":["DB.Begin","DB.ExecContext","DB.PrepareContext","DB.QueryContext","DB.Statement.ExecContext","DB.Statement.QueryContext","DB.Statement.QueryRowContext","TX.Commit","TX.Rollback"],"github.com/gogf/gf/v2/database/gredis.FlushOp":["ASYNC","SYNC"],"github.com/gogf/gf/v2/database/gredis.LInsertOp":["AFTER","BEFORE"],"github.com/gogf/gf/v2/encoding/gjson.ContentType":["ini","json","js","properties","toml","xml","yaml","yml"],"github.com/gogf/gf/v2/internal/errors.StackMode":["brief","detail"],"github.com/gogf/gf/v2/net/ghttp.HandlerType":["handler","hook","middleware","object"],"github.com/gogf/gf/v2/net/ghttp.HookName":["HOOK_AFTER_OUTPUT","HOOK_AFTER_SERVE","HOOK_BEFORE_OUTPUT","HOOK_BEFORE_SERVE"],"github.com/gogf/gf/v2/net/ghttp/internal/graceful.ServerStatus":[1,0,1,0],"github.com/gogf/gf/v2/os/gctx.StrKey":["CtxKeyArgumentsIndex","CtxKeyCommand","CtxKeyParser"],"github.com/gogf/gf/v2/os/gfsnotify.Op":[16,1,4,8,2],"github.com/gogf/gf/v2/os/gmetric.MetricType":["Counter","Histogram","ObservableCounter","ObservableGauge","ObservableUpDownCounter","UpDownCounter"],"github.com/gogf/gf/v2/os/gstructs.RecursiveOption":[1,2,0],"github.com/gogf/gf/v2/text/gstr.CaseType":["Camel","CamelLower","Kebab","KebabScreaming","Lower","Snake","SnakeFirstUpper","SnakeScreaming"],"github.com/gogf/gf/v2/util/gconv/internal/converter.RecursiveType":["auto","true"],"kami/internal/consts.AgisoCallbackStatus":[16,2097152,4,2048,524288,256,32768,1048576],"kami/internal/consts.AppleAccountStatus":[1,5,6,8,4,2,9,7,3],"kami/internal/consts.AppleOrderItunesStatus":[30,31,40,32,10,12,11,14,20,13,15],"kami/internal/consts.AppleOrderOperation":["回调网关失败","订单正在处理中或者等待处理~","回调网关成功","iTunes回调次数超限","创建订单","账户余额查询","创建订单(人工处理订单,需人工介入)","手动修正金额成功","手动回调成功","正在处理","iTunes充值失败(错误未知)","iTunes退回订单,等待重新调度","iTunes充值失败(卡密已兑换)","iTunes充值成功","iTunes处理成功(金额异议)","iTunes充值失败(卡密无效)","iTunes充值失败(商店匹配错误)","重复操作","重置订单状态","iTunes开始处理","iTunes充值订单处理超时","代充值账户密码错误,等待重新调度"],"kami/internal/consts.AppleRechargeOrderStatus":[13,15,6,14,5,0,16,4,2,9,12,10,11,7,8,1,3],"kami/internal/consts.CardAppleNotifyStatus":[2,1],"kami/internal/consts.CardCookieJDOrderStatus":["ckFailed","expired","init","failed","riskFailed","success","wrongFacePrice"],"kami/internal/consts.CardCookieUserClient":["android","ios","web"],"kami/internal/consts.CardJDNotifyStatus":[2,1],"kami/internal/consts.CardRedeemAccountCategory":["apple","cTrip","jd","originalJD","walmart"],"kami/internal/consts.CardRedeemCookieCategory":["jd"],"kami/internal/consts.CardRedeemCookieOrderStatus":["init","placeFail","placeSuccess"],"kami/internal/consts.CardRedeemCookieStatus":["dailyDisable","disable","expired","normal","tmpDisable"],"kami/internal/consts.CardRedeemType":["apple","jd","TMall"],"kami/internal/consts.CardTMallGameNotifyStatus":[2,1],"kami/internal/consts.CookieChangeType":["create","delete","fail","refresh fail","replaced","resume","suspend","update","use"],"kami/internal/consts.DeductionStatus":["fail","return","start","success"],"kami/internal/consts.EnumShopStatus":["bind_order_fail","bind_order_succeed","confirm_order","delivery_failed","delivery_succeed","evaluated_failed","evaluated_succeed","evaluation_bad","evaluation_good","paid","receive_callback"],"kami/internal/consts.JDAccountOperationStatus":["add","deduct","initialize","return"],"kami/internal/consts.JDAccountStatus":[0,5,3,6,2,4,1,7],"kami/internal/consts.JDOrderOperationStatus":[1,4,11,9,10,0,6,8,2,7,5,3],"kami/internal/consts.JDOrderStatus":[0,4,6,10,5,9,7,2,10,3,1,8],"kami/internal/consts.JdCookieStatus":[3,1,2,0],"kami/internal/consts.JdOrderChangeType":["bind","create","expire","invalid","pay","send","unbind"],"kami/internal/consts.JdOrderStatus":[5,6,4,2,1,3],"kami/internal/consts.OrderChangeType":["ck_failed","create","expire","pay","rebind"],"kami/internal/consts.OrderStatus":[4,5,3,2,1],"kami/internal/consts.PageSize":[10,100,20,50],"kami/internal/consts.RechargeTMallGameAccount":["disable","enable"],"kami/internal/consts.RechargeTMallGameCallBackType":["confirm","evaluation"],"kami/internal/consts.RechargeTMallGameOrder":["bind_shop_succeed","callback_failed","callback_manual_failed_manuel","callback_succeed","callback_manual_succeed_manuel","evaluation","callback","created","delivery_failed","delivery_succeed","finished","finished_with_refund_succeed","finished_with_wrong_amount","finished_with_wrong_status","paid","refund_failed","wait_for_evaluation","without_fill_account","trade_rated_add_failed","trade_rated_add_succeed"],"kami/internal/consts.RechargeTMallGameShopSourceType":["agiso","tMall"],"kami/internal/consts.RedeemAccountOperationStatus":["add","deduct","initialize","pre_add","pre_deduct","return"],"kami/internal/consts.RedeemAccountStatus":[0,5,3,6,2,8,4,1,7],"kami/internal/consts.RedeemAccountUsedStatus":[false,true],"kami/internal/consts.RedeemCardScheduleStrategyType":["normal","random"],"kami/internal/consts.RedeemOrderCallbackStatus":[2,1],"kami/internal/consts.RedeemOrderCardCategory":["apple","cTrip","walmart"],"kami/internal/consts.RedeemOrderOperationStatus":[1,4,11,12,13,9,10,19,100,6,15,8,2,7,17,5,16,18,3,14],"kami/internal/consts.RedeemOrderStatus":[100,15,19,20,4,16,6,13,10,5,21,11,12,9,7,2,14,3,18,1,17,8],"kami/internal/consts.RestrictStatus":[0,1],"kami/internal/consts.StatusType":["no","yes"],"kami/internal/consts.StealStatus":[0,1],"kami/internal/consts.SysConfigDictType":["account_max_recharge_count","is_steal_apple_card","is_steal_merchant_card","redeem_allow_repeated","redeem_card_compensated_auto_callback","redeem_card_different_amount","redeem_card_different_fail_callback_allow","redeem_card_different_succeed_callback_allow","redeem_card_min_amount","redeem_card_rate","redeem_redeem_max_count_limit","redeem_schedule_strategy","steal_rule_status"],"kami/internal/consts.SysUserStatus":[0,1],"kami/internal/consts.TMallGameCallbackStatus":[0,1],"kami/internal/consts.TMallGameThirdPartyChannel":["12352","12351"],"kami/internal/consts.UserPaymentStatus":[0,1],"kami/internal/consts.UserPaymentTransactionType":["consumption","deduction_return","Manual Adjustment","deposit"],"kami/internal/model.LoginType":["admin","auth","merchant"],"kami/utility/cache.CachedEnum":["apple_account_target_account_id_by_account","apple_account_target_account_id_by_user","apple_account_tmp_stopped","itunes_account_tmp_stopped","redeem_account_target_id_by_account","redeem_account_target_account_id_by_ck_and_user","redeem_account_target_id_by_user","redeem_account_tmp_stopped","tMallGameOrderTid","tMallGameCacheKeyAgiso","tMallGameCacheKeyTMall"],"kami/utility/cache.PrefixEnum":["account_limiter_type","apple_duplicated_order","MachineCurrentAccountId","jd_account_query_cache_with_cookie","jd_account_query_cache","jd_card_extract","jd_payment_check","redeem_apple_account_limited_type","redeem_type","redeem_with_payment_type","trace","walmart_account_query_cache_with_cookie","walmart_account_query_cache"],"kami/utility/integration/originalJd.HttpStatus":[201,202,500,200,204,203,300,100],"kami/utility/integration/redeem.FailType":[1,2],"kami/utility/integration/redeem/ctrip.BindCardType":[113,105,110,114,104,100,115],"kami/utility/integration/redeem/jd.CallbackResponseStatus":[113,115,104,107,106,111,105,110,120,110,100,201,101],"kami/utility/integration/redeem/walmart.BindCardType":[1013,1006,1016,1100,1110,1005,1004,1000,1015],"kami/utility/integration/restriction.ConstsImpl":["csdn","dbip","ip66","iqiyi","idcd","meitu","olt","PCOnline","qjqq","vo"],"kami/utility/integration/tmall.EnumRateStatus":["RATE_BUYER_SELLER","RATE_BUYER_UNSELLER","RATE_UNBUYER","RATE_UNBUYER_SELLER","RATE_UNSELLER"],"kami/utility/integration/tmall.EnumTradeStatus":["PAID_FORBID_CONSIGN","PAY_PENDING","SELLER_CONSIGNED_PART","TRADE_BUYER_SIGNED","TRADE_CLOSED","TRADE_CLOSED_BY_TAOBAO","TRADE_FINISHED","TRADE_NO_CREATE_PAY","WAIT_BUYER_CONFIRM_GOODS","WAIT_BUYER_PAY","WAIT_PRE_AUTH_CONFIRM","WAIT_SELLER_SEND_GOODS"],"kami/utility/limiter.Type":["cardInfo:jd:account:cookie","cardInfo:jd:account:cookie:set","cardInfo:account:cookie:checker","cardInfo:account:cookie:set"],"kami/utility/pool.Key":["account_detect","apple_account_check_wallet","apple_card_callback","apple_card_t_mall_callback","jd_card_callback","jd_card_consume","redeem_card_callback","redeem_card_consume","t_mall_game_account_callback"]}`) -} + gtag.SetGlobalEnums(`{"github.com/gogf/gf/v2/database/gdb.InsertOption":[0,3,1,2],"github.com/gogf/gf/v2/database/gdb.LocalType":["bigint","bool","[]byte","date","datetime","float32","float64","int","int64","int64-bytes","[]int64","[]int","json","jsonb","string","[]string","time","uint","uint64","uint64-bytes","[]uint64",""],"github.com/gogf/gf/v2/database/gdb.Propagation":["MANDATORY","NESTED","NEVER","NOT_SUPPORTED","REQUIRED","REQUIRES_NEW","SUPPORTS"],"github.com/gogf/gf/v2/database/gdb.Role":["master","slave"],"github.com/gogf/gf/v2/database/gdb.SelectType":[3,1,0,2],"github.com/gogf/gf/v2/database/gdb.SoftTimeType":[0,1,2,4,3,5],"github.com/gogf/gf/v2/database/gdb.SqlType":["DB.Begin","DB.ExecContext","DB.PrepareContext","DB.QueryContext","DB.Statement.ExecContext","DB.Statement.QueryContext","DB.Statement.QueryRowContext","TX.Commit","TX.Rollback"],"github.com/gogf/gf/v2/database/gredis.FlushOp":["ASYNC","SYNC"],"github.com/gogf/gf/v2/database/gredis.LInsertOp":["AFTER","BEFORE"],"github.com/gogf/gf/v2/encoding/gjson.ContentType":["ini","json","js","properties","toml","xml","yaml","yml"],"github.com/gogf/gf/v2/internal/errors.StackMode":["brief","detail"],"github.com/gogf/gf/v2/net/ghttp.HandlerType":["handler","hook","middleware","object"],"github.com/gogf/gf/v2/net/ghttp.HookName":["HOOK_AFTER_OUTPUT","HOOK_AFTER_SERVE","HOOK_BEFORE_OUTPUT","HOOK_BEFORE_SERVE"],"github.com/gogf/gf/v2/net/ghttp/internal/graceful.ServerStatus":[1,0,1,0],"github.com/gogf/gf/v2/os/gctx.StrKey":["CtxKeyArgumentsIndex","CtxKeyCommand","CtxKeyParser"],"github.com/gogf/gf/v2/os/gfsnotify.Op":[16,1,4,8,2],"github.com/gogf/gf/v2/os/gmetric.MetricType":["Counter","Histogram","ObservableCounter","ObservableGauge","ObservableUpDownCounter","UpDownCounter"],"github.com/gogf/gf/v2/os/gstructs.RecursiveOption":[1,2,0],"github.com/gogf/gf/v2/text/gstr.CaseType":["Camel","CamelLower","Kebab","KebabScreaming","Lower","Snake","SnakeFirstUpper","SnakeScreaming"],"github.com/gogf/gf/v2/util/gconv/internal/converter.RecursiveType":["auto","true"],"kami/internal/consts.AgisoCallbackStatus":[16,2097152,4,2048,524288,256,32768,1048576],"kami/internal/consts.AppleAccountStatus":[1,5,6,8,4,2,9,7,3],"kami/internal/consts.AppleOrderItunesStatus":[30,31,40,32,10,12,11,14,20,13,15],"kami/internal/consts.AppleOrderOperation":["回调网关失败","订单正在处理中或者等待处理~","回调网关成功","iTunes回调次数超限","创建订单","账户余额查询","创建订单(人工处理订单,需人工介入)","手动修正金额成功","手动回调成功","正在处理","iTunes充值失败(错误未知)","iTunes退回订单,等待重新调度","iTunes充值失败(卡密已兑换)","iTunes充值成功","iTunes处理成功(金额异议)","iTunes充值失败(卡密无效)","iTunes充值失败(商店匹配错误)","重复操作","重置订单状态","iTunes开始处理","iTunes充值订单处理超时","代充值账户密码错误,等待重新调度"],"kami/internal/consts.AppleRechargeOrderStatus":[13,15,6,14,5,0,16,4,2,9,12,10,11,7,8,1,3],"kami/internal/consts.CardAppleNotifyStatus":[2,1],"kami/internal/consts.CardCookieJDOrderStatus":["ckFailed","expired","init","failed","riskFailed","stockError","success","wrongFacePrice"],"kami/internal/consts.CardCookieUserClient":["android","ios","web"],"kami/internal/consts.CardJDNotifyStatus":[2,1],"kami/internal/consts.CardRedeemAccountCategory":["apple","cTrip","jd","originalJD","walmart"],"kami/internal/consts.CardRedeemCookieCategory":["jd"],"kami/internal/consts.CardRedeemCookieOrderStatus":["init","placeFail","placeSuccess"],"kami/internal/consts.CardRedeemCookieStatus":["dailyDisable","disable","expired","normal","tmpDisable"],"kami/internal/consts.CardRedeemType":["apple","jd","TMall"],"kami/internal/consts.CardTMallGameNotifyStatus":[2,1],"kami/internal/consts.CookieChangeType":["create","delete","fail","refresh fail","replaced","resume","suspend","update","use"],"kami/internal/consts.DeductionStatus":["fail","return","start","success"],"kami/internal/consts.EnumShopStatus":["bind_order_fail","bind_order_succeed","confirm_order","delivery_failed","delivery_succeed","evaluated_failed","evaluated_succeed","evaluation_bad","evaluation_good","paid","receive_callback"],"kami/internal/consts.JDAccountOperationStatus":["add","deduct","initialize","return"],"kami/internal/consts.JDAccountStatus":[0,5,3,6,2,4,1,7],"kami/internal/consts.JDOrderOperationStatus":[1,4,11,9,10,0,6,8,2,7,5,3],"kami/internal/consts.JDOrderStatus":[0,4,6,10,5,9,7,2,10,3,1,8],"kami/internal/consts.JdCookieStatus":[3,1,2,0],"kami/internal/consts.JdOrderChangeType":["bind","create","expire","invalid","pay","replace","send","unbind"],"kami/internal/consts.JdOrderStatus":[5,6,4,2,1,3],"kami/internal/consts.OrderChangeType":["ck_failed","create","expire","jd_order_failed","pay","rebind"],"kami/internal/consts.OrderStatus":[4,5,0,3,6,2,1],"kami/internal/consts.PageSize":[10,100,20,50],"kami/internal/consts.RechargeTMallGameAccount":["disable","enable"],"kami/internal/consts.RechargeTMallGameCallBackType":["confirm","evaluation"],"kami/internal/consts.RechargeTMallGameOrder":["bind_shop_succeed","callback_failed","callback_manual_failed_manuel","callback_succeed","callback_manual_succeed_manuel","evaluation","callback","created","delivery_failed","delivery_succeed","finished","finished_with_refund_succeed","finished_with_wrong_amount","finished_with_wrong_status","paid","refund_failed","wait_for_evaluation","without_fill_account","trade_rated_add_failed","trade_rated_add_succeed"],"kami/internal/consts.RechargeTMallGameShopSourceType":["agiso","tMall"],"kami/internal/consts.RedeemAccountOperationStatus":["add","deduct","initialize","pre_add","pre_deduct","return"],"kami/internal/consts.RedeemAccountStatus":[0,5,3,6,2,8,4,1,7],"kami/internal/consts.RedeemAccountUsedStatus":[false,true],"kami/internal/consts.RedeemCardScheduleStrategyType":["normal","random"],"kami/internal/consts.RedeemOrderCallbackStatus":[2,1],"kami/internal/consts.RedeemOrderCardCategory":["apple","cTrip","walmart"],"kami/internal/consts.RedeemOrderOperationStatus":[1,4,11,12,13,9,10,19,100,6,15,8,2,7,17,5,16,18,3,14],"kami/internal/consts.RedeemOrderStatus":[100,15,19,20,4,16,6,13,10,5,21,11,12,9,7,2,14,3,18,1,17,8],"kami/internal/consts.RestrictStatus":[0,1],"kami/internal/consts.StatusType":["no","yes"],"kami/internal/consts.StealStatus":[0,1],"kami/internal/consts.SysConfigDictType":["account_max_recharge_count","is_steal_apple_card","is_steal_merchant_card","redeem_allow_repeated","redeem_card_compensated_auto_callback","redeem_card_different_amount","redeem_card_different_fail_callback_allow","redeem_card_different_succeed_callback_allow","redeem_card_min_amount","redeem_card_rate","redeem_redeem_max_count_limit","redeem_schedule_strategy","steal_rule_status"],"kami/internal/consts.SysUserStatus":[0,1],"kami/internal/consts.TMallGameCallbackStatus":[0,1],"kami/internal/consts.TMallGameThirdPartyChannel":["12352","12351"],"kami/internal/consts.UserPaymentStatus":[0,1],"kami/internal/consts.UserPaymentTransactionType":["consumption","deduction_return","Manual Adjustment","deposit"],"kami/internal/model.LoginType":["admin","auth","merchant"],"kami/utility/cache.CachedEnum":["apple_account_target_account_id_by_account","apple_account_target_account_id_by_user","apple_account_tmp_stopped","itunes_account_tmp_stopped","redeem_account_target_id_by_account","redeem_account_target_account_id_by_ck_and_user","redeem_account_target_id_by_user","redeem_account_tmp_stopped","tMallGameOrderTid","tMallGameCacheKeyAgiso","tMallGameCacheKeyTMall"],"kami/utility/cache.PrefixEnum":["account_limiter_type","apple_duplicated_order","MachineCurrentAccountId","jd_account_query_cache_with_cookie","jd_account_query_cache","jd_card_extract","jd_payment_check","redeem_apple_account_limited_type","redeem_type","redeem_with_payment_type","trace","walmart_account_query_cache_with_cookie","walmart_account_query_cache"],"kami/utility/integration/originalJd.HttpStatus":[201,202,500,200,204,203,300,205,100],"kami/utility/integration/redeem.FailType":[1,2],"kami/utility/integration/redeem/ctrip.BindCardType":[113,105,110,114,104,100,115],"kami/utility/integration/redeem/jd.CallbackResponseStatus":[113,115,104,107,106,111,105,110,120,110,100,201,101],"kami/utility/integration/redeem/walmart.BindCardType":[1013,1006,1016,1100,1110,1005,1004,1000,1015],"kami/utility/integration/restriction.ConstsImpl":["csdn","dbip","ip66","iqiyi","idcd","meitu","olt","PCOnline","qjqq","vo"],"kami/utility/integration/tmall.EnumRateStatus":["RATE_BUYER_SELLER","RATE_BUYER_UNSELLER","RATE_UNBUYER","RATE_UNBUYER_SELLER","RATE_UNSELLER"],"kami/utility/integration/tmall.EnumTradeStatus":["PAID_FORBID_CONSIGN","PAY_PENDING","SELLER_CONSIGNED_PART","TRADE_BUYER_SIGNED","TRADE_CLOSED","TRADE_CLOSED_BY_TAOBAO","TRADE_FINISHED","TRADE_NO_CREATE_PAY","WAIT_BUYER_CONFIRM_GOODS","WAIT_BUYER_PAY","WAIT_PRE_AUTH_CONFIRM","WAIT_SELLER_SEND_GOODS"],"kami/utility/limiter.Type":["cardInfo:jd:account:cookie","cardInfo:jd:account:cookie:set","cardInfo:account:cookie:checker","cardInfo:account:cookie:set"],"kami/utility/pool.Key":["account_detect","apple_account_check_wallet","apple_card_callback","apple_card_t_mall_callback","jd_card_callback","jd_card_consume","redeem_card_callback","redeem_card_consume","t_mall_game_account_callback"]}`) +} \ No newline at end of file diff --git a/internal/consts/jd_cookie.go b/internal/consts/jd_cookie.go index bf1f9592..9252e85d 100644 --- a/internal/consts/jd_cookie.go +++ b/internal/consts/jd_cookie.go @@ -48,20 +48,23 @@ var JdOrderStatusText = map[JdOrderStatus]string{ type OrderStatus int const ( - OrderStatusPending OrderStatus = 1 // 待支付 - OrderStatusPaid OrderStatus = 2 // 已支付 - OrderStatusExpired OrderStatus = 3 // 已过期 - OrderStatusCanceled OrderStatus = 4 // 已取消 - OrderStatusCkFailed OrderStatus = 5 // Cookie账号Ck失败 + OrderStatusCreated OrderStatus = 0 + OrderStatusPending OrderStatus = 1 // 待支付 + OrderStatusPaid OrderStatus = 2 // 已支付 + OrderStatusExpired OrderStatus = 3 // 已过期 + OrderStatusCanceled OrderStatus = 4 // 已取消 + OrderStatusCkFailed OrderStatus = 5 // Cookie账号Ck失败 + OrderStatusJDOrderFailed OrderStatus = 6 // 京东订单获取失败 ) // OrderStatusText 订单状态文本映射 var OrderStatusText = map[OrderStatus]string{ - OrderStatusPending: "待支付", - OrderStatusPaid: "已支付", - OrderStatusExpired: "已过期", - OrderStatusCanceled: "已取消", - OrderStatusCkFailed: "cookie失效", + OrderStatusPending: "待支付", + OrderStatusPaid: "已支付", + OrderStatusExpired: "已过期", + OrderStatusCanceled: "已取消", + OrderStatusCkFailed: "cookie失效", + OrderStatusJDOrderFailed: "京东订单获取失败", } // ==================================================================================== @@ -113,20 +116,22 @@ var JdOrderChangeTypeText = map[JdOrderChangeType]string{ type OrderChangeType string const ( - OrderChangeTypeCreate OrderChangeType = "create" // 创建 - OrderChangeTypePay OrderChangeType = "pay" // 支付 - OrderChangeTypeExpire OrderChangeType = "expire" // 过期 - OrderChangeTypeRebind OrderChangeType = "rebind" // 重新绑定 - OrderChangeTypeCkFailed OrderChangeType = "ck_failed" // Cookie账号Ck失败 + OrderChangeTypeCreate OrderChangeType = "create" // 创建 + OrderChangeTypePay OrderChangeType = "pay" // 支付 + OrderChangeTypeExpire OrderChangeType = "expire" // 过期 + OrderChangeTypeRebind OrderChangeType = "rebind" // 重新绑定 + OrderChangeTypeCkFailed OrderChangeType = "ck_failed" // Cookie账号Ck失败 + OrderChangeTypeJDOrderFailed OrderChangeType = "jd_order_failed" //下单京东订单失败 ) // OrderChangeTypeText 订单变更类型文本映射 var OrderChangeTypeText = map[OrderChangeType]string{ - OrderChangeTypeCreate: "创建", - OrderChangeTypePay: "支付", - OrderChangeTypeExpire: "过期", - OrderChangeTypeRebind: "重新绑定", - OrderChangeTypeCkFailed: "cookie失败", + OrderChangeTypeCreate: "创建", + OrderChangeTypePay: "支付", + OrderChangeTypeExpire: "过期", + OrderChangeTypeRebind: "重新绑定", + OrderChangeTypeCkFailed: "cookie失败", + OrderChangeTypeJDOrderFailed: "下单京东订单失败", } // ==================================================================================== diff --git a/internal/logic/jd_cookie/order_create.go b/internal/logic/jd_cookie/order_create.go index 156fd3b0..f32392ea 100644 --- a/internal/logic/jd_cookie/order_create.go +++ b/internal/logic/jd_cookie/order_create.go @@ -4,14 +4,17 @@ import ( "context" "kami/internal/consts" "kami/internal/model" + "kami/internal/model/entity" "kami/utility/cache" "kami/utility/utils" + "slices" "time" "github.com/gogf/gf/v2/errors/gerror" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/os/glog" "github.com/gogf/gf/v2/os/gtime" + "github.com/gogf/gf/v2/util/gconv" ) // CreateOrder 创建订单 @@ -49,7 +52,32 @@ func (s *sJdCookie) CreateOrder(ctx context.Context, req *model.CreateOrderReq) } if existingOrder != nil { - // 订单已存在,尝试获取支付链接 + // 订单已存在,检查订单状态 + if !slices.Contains([]consts.OrderStatus{ + consts.OrderStatusJDOrderFailed, consts.OrderStatusCreated, consts.OrderStatusPending, + }, consts.OrderStatus(existingOrder.Status)) { + return nil, gerror.New("订单已完成") + } + // 如果订单状态为失败(Ck失败),重新尝试创建京东订单 + if consts.OrderStatus(existingOrder.Status) == consts.OrderStatusJDOrderFailed { + glog.Info(ctx, "检测到失败订单,尝试重新创建京东订单", g.Map{ + "orderId": existingOrder.OrderId, + "userOrderId": req.UserOrderId, + "status": consts.OrderStatus(existingOrder.Status), + }) + + // 尝试重新创建京东订单 + retryResult, retryErr := s.retryCreateJdOrderForFailedOrder(ctx, existingOrder, req) + if retryErr != nil { + // 重试失败,返回错误 + return nil, retryErr + } + + // 重试成功,返回新的订单信息 + return retryResult, nil + } + + // 订单状态正常,尝试获取支付链接 paymentResult, err := s.GetPaymentUrl(ctx, req.UserOrderId, existingOrder.OrderId) if err != nil { return nil, err @@ -62,17 +90,39 @@ func (s *sJdCookie) CreateOrder(ctx context.Context, req *model.CreateOrderReq) }, nil } + // 生成内部订单ID + internalOrderId := "JD_" + utils.GenerateRandomUUID() + + // 先创建本地订单记录(状态为待支付,京东订单ID暂时为空) + err = s.createOrderRecord(ctx, internalOrderId, req.UserOrderId, req.Amount, req.Category, "", "") + if err != nil { + return nil, gerror.Wrap(err, "创建订单记录失败") + } + + // 记录订单创建历史 + _ = s.RecordOrderHistory(ctx, &model.RecordOrderHistoryReq{ + OrderId: internalOrderId, + ChangeType: consts.OrderChangeTypeCreate, + JdOrderId: "", + Remark: "", + }) + + glog.Info(ctx, "本地订单创建成功,开始创建京东订单", g.Map{ + "orderId": internalOrderId, + "userOrderId": req.UserOrderId, + "amount": req.Amount, + }) + // 优先尝试复用现有的京东订单 reusableJdOrder, err := s.findReusableJdOrder(ctx, req.Amount, req.Category) if err != nil { glog.Warning(ctx, "查找可复用京东订单失败", err) } - // 生成内部订单ID - internalOrderId := "JD_" + utils.GenerateRandomUUID() - var cookieId, jdOrderId, wxPayUrl string + var jdOrderErr error var isReused = false + if reusableJdOrder != nil { // 尝试使用可复用的京东订单 jdOrderId = reusableJdOrder.JdOrderId @@ -135,24 +185,57 @@ func (s *sJdCookie) CreateOrder(ctx context.Context, req *model.CreateOrderReq) // 如果没有成功复用,创建新的京东订单 if jdOrderId == "" { - retryRes, err := s.createNewJdOrderWithRetry(ctx, &model.CreateNewJdOrderWithRetryReq{ + retryRes, retryErr := s.createNewJdOrderWithRetry(ctx, &model.CreateNewJdOrderWithRetryReq{ OrderId: internalOrderId, Amount: req.Amount, Category: req.Category, UserOrderId: req.UserOrderId, }) - if err != nil { - return nil, err + if retryErr != nil { + // 京东订单创建失败,更新本地订单状态和失败原因 + jdOrderErr = retryErr + _ = s.updateOrderFailure(ctx, internalOrderId) + + // 记录订单创建失败的变更历史 + _ = s.RecordOrderHistory(ctx, &model.RecordOrderHistoryReq{ + OrderId: internalOrderId, + ChangeType: consts.OrderChangeTypeJDOrderFailed, + JdOrderId: "", + Remark: jdOrderErr.Error(), + }) + + glog.Error(ctx, "京东订单创建失败", g.Map{ + "orderId": internalOrderId, + "userOrderId": req.UserOrderId, + "failureReason": retryErr.Error(), + }) + return nil, retryErr } jdOrderId = retryRes.JdOrderId cookieId = retryRes.CookieId wxPayUrl = retryRes.WxPayUrl } - // 创建订单记录 - err = s.createOrderRecord(ctx, internalOrderId, req.UserOrderId, req.Amount, req.Category, jdOrderId, wxPayUrl) + // 京东订单创建成功,更新本地订单的京东订单ID和支付链接 + err = s.updateOrderJdOrderId(ctx, internalOrderId, jdOrderId) if err != nil { - return nil, gerror.Wrap(err, "创建订单记录失败") + glog.Error(ctx, "更新订单京东订单ID失败", g.Map{ + "orderId": internalOrderId, + "jdOrderId": jdOrderId, + "error": err, + }) + return nil, gerror.Wrap(err, "更新订单信息失败") + } + + // 京东订单创建成功,更新本地订单状态为待支付,并关联京东订单 + err = s.updateOrderSuccess(ctx, internalOrderId, jdOrderId) + if err != nil { + glog.Error(ctx, "更新订单状态失败", g.Map{ + "orderId": internalOrderId, + "jdOrderId": jdOrderId, + "error": err, + }) + return nil, gerror.Wrap(err, "更新订单信息失败") } // 更新京东订单的当前关联订单ID @@ -165,12 +248,18 @@ func (s *sJdCookie) CreateOrder(ctx context.Context, req *model.CreateOrderReq) StatusBefore: consts.JdCookieStatusUnknown, StatusAfter: consts.JdCookieStatusNormal, OrderId: internalOrderId, + UserOrderId: req.UserOrderId, FailureCount: 0, Remark: "Cookie用于创建订单", }) - // 记录订单创建历史 - _ = s.RecordOrderHistory(ctx, internalOrderId, consts.OrderChangeTypeCreate, jdOrderId) + // 记录订单绑定京东订单的变更历史 + _ = s.RecordOrderHistory(ctx, &model.RecordOrderHistoryReq{ + OrderId: internalOrderId, + ChangeType: consts.OrderChangeTypeRebind, + JdOrderId: jdOrderId, + Remark: "", + }) return &model.CreateOrderResult{ WxPayUrl: wxPayUrl, @@ -314,3 +403,147 @@ func (s *sJdCookie) hasCookieBeenTried(triedCookies []string, cookieId string) b } return false } + +// retryCreateJdOrderForFailedOrder 为失败的订单重新创建京东订单 +func (s *sJdCookie) retryCreateJdOrderForFailedOrder(ctx context.Context, existingOrder *entity.V1JdCookieOrder, req *model.CreateOrderReq) (result *model.CreateOrderResult, err error) { + glog.Info(ctx, "开始为失败订单重新创建京东订单", g.Map{ + "orderId": existingOrder.OrderId, + "userOrderId": existingOrder.UserOrderId, + "amount": existingOrder.Amount, + }) + + // 优先尝试复用现有的京东订单 + reusableJdOrder, err := s.findReusableJdOrder(ctx, gconv.Float64(existingOrder.Amount), consts.RedeemOrderCardCategory(existingOrder.Category)) + if err != nil { + glog.Warning(ctx, "查找可复用京东订单失败", err) + } + + var cookieId, jdOrderId, wxPayUrl string + var isReused = false + + if reusableJdOrder != nil { + // 尝试使用可复用的京东订单 + jdOrderId = reusableJdOrder.JdOrderId + cookieId = reusableJdOrder.CookieId + wxPayUrl = reusableJdOrder.WxPayUrl + + // 检查支付链接是否过期 + if reusableJdOrder.WxPayExpireAt != nil && gtime.Now().After(reusableJdOrder.WxPayExpireAt) { + // 支付链接已过期,尝试刷新 + newWxPayUrl, isCkFailed, refreshErr := s.refreshPaymentUrl(ctx, &model.RefreshPaymentUrlReq{ + JdOrderId: jdOrderId, + PayId: reusableJdOrder.PayId, + CookieId: cookieId, + }) + if isCkFailed { + s.handleCookieFailure(ctx, req.UserOrderId, cookieId, jdOrderId, isCkFailed, refreshErr.Error()) + } + if refreshErr != nil { + glog.Warning(ctx, "刷新支付链接失败,将创建新订单", g.Map{ + "jdOrderId": jdOrderId, + "error": refreshErr, + }) + // 刷新失败,标记为不可复用 + _ = s.UpdateJdOrderStatus(ctx, jdOrderId, consts.JdOrderStatusExpired, "", refreshErr.Error()) + + // 清空,准备创建新订单 + jdOrderId = "" + cookieId = "" + wxPayUrl = "" + } else { + wxPayUrl = newWxPayUrl + // 更新京东订单的支付链接和过期时间 + _ = s.updateJdOrderPaymentUrl(ctx, jdOrderId, wxPayUrl) + isReused = true + } + } else { + isReused = true + } + + if isReused { + glog.Info(ctx, "复用现有京东订单", g.Map{ + "orderId": existingOrder.OrderId, + "jdOrderId": jdOrderId, + "cookieId": cookieId, + }) + } + } + + // 如果没有成功复用,创建新的京东订单 + if jdOrderId == "" { + retryRes, retryErr := s.createNewJdOrderWithRetry(ctx, &model.CreateNewJdOrderWithRetryReq{ + OrderId: existingOrder.OrderId, + Amount: gconv.Float64(existingOrder.Amount), + Category: consts.RedeemOrderCardCategory(existingOrder.Category), + UserOrderId: existingOrder.UserOrderId, + }) + if retryErr != nil { + // 京东订单创建失败,更新本地订单失败原因 + _ = s.updateOrderFailure(ctx, existingOrder.OrderId) + + // 记录订单重试失败的变更历史 + _ = s.RecordOrderHistory(ctx, &model.RecordOrderHistoryReq{ + OrderId: existingOrder.OrderId, + ChangeType: consts.OrderChangeTypeJDOrderFailed, + JdOrderId: "", + Remark: retryErr.Error(), + }) + + glog.Error(ctx, "重试创建京东订单失败", g.Map{ + "orderId": existingOrder.OrderId, + "userOrderId": existingOrder.UserOrderId, + "failureReason": retryErr.Error(), + }) + return nil, retryErr + } + jdOrderId = retryRes.JdOrderId + cookieId = retryRes.CookieId + wxPayUrl = retryRes.WxPayUrl + } + + // 京东订单创建成功,更新本地订单状态为待支付,并关联京东订单 + err = s.updateOrderSuccess(ctx, existingOrder.OrderId, jdOrderId) + if err != nil { + glog.Error(ctx, "更新订单状态失败", g.Map{ + "orderId": existingOrder.OrderId, + "jdOrderId": jdOrderId, + "error": err, + }) + return nil, gerror.Wrap(err, "更新订单信息失败") + } + + // 更新京东订单的当前关联订单ID + _ = s.updateJdOrderId(ctx, jdOrderId, existingOrder.OrderId) + + // 记录Cookie使用历史 + _ = s.RecordCookieHistory(ctx, &model.RecordCookieHistoryReq{ + CookieId: cookieId, + ChangeType: consts.CookieChangeTypeUse, + StatusBefore: consts.JdCookieStatusUnknown, + StatusAfter: consts.JdCookieStatusNormal, + OrderId: existingOrder.OrderId, + UserOrderId: existingOrder.UserOrderId, + FailureCount: 0, + Remark: "失败订单重试成功", + }) + + // 记录订单重新绑定历史 + _ = s.RecordOrderHistory(ctx, &model.RecordOrderHistoryReq{ + OrderId: existingOrder.OrderId, + ChangeType: consts.OrderChangeTypeRebind, + JdOrderId: jdOrderId, + Remark: "", + }) + + glog.Info(ctx, "失败订单重试成功", g.Map{ + "orderId": existingOrder.OrderId, + "jdOrderId": jdOrderId, + "cookieId": cookieId, + }) + + return &model.CreateOrderResult{ + WxPayUrl: wxPayUrl, + JdOrderId: jdOrderId, + OrderId: existingOrder.OrderId, + }, nil +} diff --git a/internal/logic/jd_cookie/order_jd.go b/internal/logic/jd_cookie/order_jd.go index 98bbbd39..c72e08e0 100644 --- a/internal/logic/jd_cookie/order_jd.go +++ b/internal/logic/jd_cookie/order_jd.go @@ -449,7 +449,12 @@ func (s *sJdCookie) ExtractCardInfo(ctx context.Context, jdOrderId string) error Update(do.V1JdCookieOrder{ Status: consts.OrderStatusCkFailed, }) - _ = s.RecordOrderHistory(ctx, jdOrder.OrderId, consts.OrderChangeTypeCkFailed, jdOrderId) + _ = s.RecordOrderHistory(ctx, &model.RecordOrderHistoryReq{ + OrderId: jdOrder.OrderId, + ChangeType: consts.OrderChangeTypeCkFailed, + JdOrderId: jdOrderId, + Remark: "", + }) } } @@ -473,7 +478,12 @@ func (s *sJdCookie) ExtractCardInfo(ctx context.Context, jdOrderId string) error Update(do.V1JdCookieOrder{ Status: consts.OrderStatusPaid, }) - _ = s.RecordOrderHistory(ctx, jdOrder.OrderId, consts.OrderChangeTypePay, jdOrderId) + _ = s.RecordOrderHistory(ctx, &model.RecordOrderHistoryReq{ + OrderId: jdOrder.OrderId, + ChangeType: consts.OrderChangeTypePay, + JdOrderId: jdOrderId, + Remark: "", + }) } return nil } @@ -488,7 +498,12 @@ func (s *sJdCookie) ExtractCardInfo(ctx context.Context, jdOrderId string) error Status: consts.OrderStatusPaid, }) if affected > 0 { - _ = s.RecordOrderHistory(ctx, jdOrder.OrderId, consts.OrderChangeTypePay, jdOrderId) + _ = s.RecordOrderHistory(ctx, &model.RecordOrderHistoryReq{ + OrderId: jdOrder.OrderId, + ChangeType: consts.OrderChangeTypePay, + JdOrderId: jdOrderId, + Remark: "", + }) } // 保存卡密信息到数据库 @@ -594,7 +609,12 @@ func (s *sJdCookie) CleanupExpiredOrders(ctx context.Context) error { orderId := jdOrder.OrderId if jdOrder.OrderId != "" { // 同时记录用户订单的历史 - _ = s.RecordOrderHistory(ctx, orderId, consts.OrderChangeTypeExpire, jdOrder.JdOrderId) + _ = s.RecordOrderHistory(ctx, &model.RecordOrderHistoryReq{ + OrderId: orderId, + ChangeType: consts.OrderChangeTypeExpire, + JdOrderId: jdOrder.JdOrderId, + Remark: "", + }) } _ = s.RecordJdOrderHistory(ctx, jdOrder.JdOrderId, consts.JdOrderChangeTypeExpire, orderId, jdOrder.WxPayUrl, "") } @@ -627,7 +647,12 @@ func (s *sJdCookie) CleanupExpiredOrders(ctx context.Context) error { // 为每个过期的用户订单记录历史 for _, order := range expiredOrders { - _ = s.RecordOrderHistory(ctx, order.OrderId, consts.OrderChangeTypeExpire, order.JdOrderId) + _ = s.RecordOrderHistory(ctx, &model.RecordOrderHistoryReq{ + OrderId: order.OrderId, + ChangeType: consts.OrderChangeTypeExpire, + JdOrderId: order.JdOrderId, + Remark: "", + }) } glog.Info(ctx, "清理过期订单完成", g.Map{ diff --git a/internal/logic/jd_cookie/order_query.go b/internal/logic/jd_cookie/order_query.go index 890411f5..c27e6f55 100644 --- a/internal/logic/jd_cookie/order_query.go +++ b/internal/logic/jd_cookie/order_query.go @@ -10,6 +10,8 @@ import ( "kami/utility/config" "github.com/gogf/gf/v2/errors/gerror" + "github.com/gogf/gf/v2/frame/g" + "github.com/gogf/gf/v2/os/glog" "github.com/gogf/gf/v2/os/gtime" "github.com/gogf/gf/v2/util/gconv" ) @@ -29,6 +31,34 @@ func (s *sJdCookie) GetPaymentUrl(ctx context.Context, userOrderId, orderId stri return nil, gerror.New(consts.ErrCodeOrderNotFound) } + // 检查订单状态,如果是失败状态,尝试重新创建京东订单 + orderStatus := consts.OrderStatus(order.Status) + if orderStatus == consts.OrderStatusJDOrderFailed { + glog.Info(ctx, "检测到失败订单,尝试重新创建京东订单", g.Map{ + "orderId": orderId, + "userOrderId": userOrderId, + "status": orderStatus, + }) + + // 尝试重新创建京东订单 + retryResult, retryErr := s.retryCreateJdOrderForFailedOrder(ctx, order, &model.CreateOrderReq{ + UserOrderId: userOrderId, + Amount: gconv.Float64(order.Amount), + Category: consts.RedeemOrderCardCategory(order.Category), + }) + if retryErr != nil { + // 重试失败,返回错误 + return nil, retryErr + } + + // 重试成功,返回新的支付信息 + return &model.PaymentResult{ + WxPayUrl: retryResult.WxPayUrl, + JdOrderId: retryResult.JdOrderId, + OrderId: retryResult.OrderId, + }, nil + } + // 获取关联的京东订单 jdOrder, err := s.getJdOrderByJdOrderId(ctx, order.JdOrderId) if err != nil { @@ -81,14 +111,30 @@ func (s *sJdCookie) GetPaymentUrl(ctx context.Context, userOrderId, orderId stri } // 更新订单关联的京东订单ID - _ = s.updateOrderJdOrderId(ctx, orderId, retryRes.JdOrderId, retryRes.WxPayUrl) + _ = s.updateOrderJdOrderId(ctx, orderId, retryRes.JdOrderId) + + // 京东订单创建成功,更新本地订单状态为待支付,并关联京东订单 + err = s.updateOrderSuccess(ctx, orderId, retryRes.JdOrderId) + if err != nil { + glog.Error(ctx, "更新订单状态失败", g.Map{ + "orderId": orderId, + "jdOrderId": jdOrderId, + "error": err, + }) + return nil, gerror.Wrap(err, "更新订单信息失败") + } // 更新京东订单的当前关联订单ID _ = s.updateJdOrderId(ctx, retryRes.JdOrderId, orderId) // 记录订单重新绑定历史 go func() { - _ = s.RecordOrderHistory(ctx, orderId, consts.OrderChangeTypeRebind, retryRes.JdOrderId) + _ = s.RecordOrderHistory(ctx, &model.RecordOrderHistoryReq{ + OrderId: orderId, + ChangeType: consts.OrderChangeTypeRebind, + JdOrderId: retryRes.JdOrderId, + Remark: "", + }) // 记录Cookie使用历史 _ = s.RecordCookieHistory(ctx, &model.RecordCookieHistoryReq{ CookieId: retryRes.CookieId, diff --git a/internal/logic/jd_cookie/order_utils.go b/internal/logic/jd_cookie/order_utils.go index e9b61bb5..045a4046 100644 --- a/internal/logic/jd_cookie/order_utils.go +++ b/internal/logic/jd_cookie/order_utils.go @@ -86,7 +86,7 @@ func (s *sJdCookie) createOrderRecord(ctx context.Context, internalOrderId, user Amount: amount, Category: category, JdOrderId: jdOrderId, - Status: int(consts.OrderStatusPending), + Status: int(consts.OrderStatusCreated), }) if err != nil { @@ -123,11 +123,44 @@ func (s *sJdCookie) updateOrderLastRequest(ctx context.Context, orderId string) } // updateOrderJdOrderId 更新订单关联的京东订单ID -func (s *sJdCookie) updateOrderJdOrderId(ctx context.Context, orderId, jdOrderId, wxPayUrl string) error { +func (s *sJdCookie) updateOrderJdOrderId(ctx context.Context, orderId, jdOrderId string) error { m := dao.V1JdCookieOrder.Ctx(ctx).DB(config.GetDatabaseV1()) - _, err := m.Where(dao.V1JdCookieOrder.Columns().OrderId, orderId).Update(&do.V1JdCookieOrder{ + updateData := &do.V1JdCookieOrder{ JdOrderId: jdOrderId, + } + // 注意:wxPayUrl 字段需要数据库表支持后才能使用 + // 暂时通过 WxPayUrl 字段存储在 jd_order 表中 + _, err := m.Where(dao.V1JdCookieOrder.Columns().OrderId, orderId).Update(updateData) + return err +} + +// updateOrderFailure 更新订单失败信息 +func (s *sJdCookie) updateOrderFailure(ctx context.Context, orderId string) error { + m := dao.V1JdCookieOrder.Ctx(ctx).DB(config.GetDatabaseV1()) + updateData := &do.V1JdCookieOrder{ + Status: int(consts.OrderStatusJDOrderFailed), + } + // 注意:FailureReason 字段需要数据库表支持后才能使用 + // 暂时通过日志记录失败原因 + glog.Error(ctx, "订单创建失败", g.Map{ + "orderId": orderId, }) + _, err := m.Where(dao.V1JdCookieOrder.Columns().OrderId, orderId).Update(updateData) + return err +} + +// updateOrderSuccess 更新订单成功信息(从失败状态恢复) +func (s *sJdCookie) updateOrderSuccess(ctx context.Context, orderId, jdOrderId string) error { + m := dao.V1JdCookieOrder.Ctx(ctx).DB(config.GetDatabaseV1()) + updateData := &do.V1JdCookieOrder{ + JdOrderId: jdOrderId, + Status: int(consts.OrderStatusPending), // 恢复为待支付状态 + } + glog.Info(ctx, "订单重试成功,恢复待支付状态", g.Map{ + "orderId": orderId, + "jdOrderId": jdOrderId, + }) + _, err := m.Where(dao.V1JdCookieOrder.Columns().OrderId, orderId).Update(updateData) return err } diff --git a/internal/logic/jd_cookie/rotation.go b/internal/logic/jd_cookie/rotation.go index c8380218..5e72ac48 100644 --- a/internal/logic/jd_cookie/rotation.go +++ b/internal/logic/jd_cookie/rotation.go @@ -327,22 +327,23 @@ func (s *sJdCookie) RecordJdOrderHistory(ctx context.Context, jdOrderId string, } // RecordOrderHistory 记录订单变更历史 -func (s *sJdCookie) RecordOrderHistory(ctx context.Context, orderId string, changeType consts.OrderChangeType, jdOrderId string) (err error) { +func (s *sJdCookie) RecordOrderHistory(ctx context.Context, req *model.RecordOrderHistoryReq) (err error) { m := dao.V1JdCookieOrderChangeHistory.Ctx(ctx).DB(config.GetDatabaseV1()) historyUuid := utils.GenerateRandomUUID() _, err = m.Insert(&do.V1JdCookieOrderChangeHistory{ HistoryUuid: historyUuid, - OrderId: orderId, - ChangeType: changeType, - JdOrderId: jdOrderId, + OrderId: req.OrderId, + ChangeType: req.ChangeType, + JdOrderId: req.JdOrderId, + Remark: req.Remark, }) if err != nil { glog.Error(ctx, "记录订单变更历史失败", g.Map{ - "orderId": orderId, - "changeType": changeType, - "jdOrderId": jdOrderId, + "orderId": req.OrderId, + "changeType": req.ChangeType, + "jdOrderId": req.JdOrderId, "error": err, }) } diff --git a/internal/model/jd_cookie.go b/internal/model/jd_cookie.go index 6d3910c0..354e16b7 100644 --- a/internal/model/jd_cookie.go +++ b/internal/model/jd_cookie.go @@ -97,3 +97,11 @@ type RecordCookieHistoryReq struct { FailureCount int `json:"failureCount" dc:"失败次数"` Remark string `json:"remark" dc:"备注信息,存储额外的信息"` } + +// RecordOrderHistoryReq 记录订单变更历史请求参数 +type RecordOrderHistoryReq struct { + OrderId string `json:"orderId" dc:"订单号"` + ChangeType consts.OrderChangeType `json:"changeType" dc:"变更类型"` + JdOrderId string `json:"jdOrderId" dc:"京东订单号"` + Remark string `json:"remark" dc:"备注信息"` +} diff --git a/internal/service/jd_cookie.go b/internal/service/jd_cookie.go index aeeef330..17ced633 100644 --- a/internal/service/jd_cookie.go +++ b/internal/service/jd_cookie.go @@ -75,7 +75,7 @@ type ( // RecordJdOrderHistory 记录京东订单变更历史 RecordJdOrderHistory(ctx context.Context, jdOrderId string, changeType consts.JdOrderChangeType, orderId string, wxPayUrl string, remark string) (err error) // RecordOrderHistory 记录订单变更历史 - RecordOrderHistory(ctx context.Context, orderId string, changeType consts.OrderChangeType, jdOrderId string) (err error) + RecordOrderHistory(ctx context.Context, req *model.RecordOrderHistoryReq) (err error) } ) diff --git a/sql/add_order_fields.sql b/sql/add_order_fields.sql new file mode 100644 index 00000000..b1a18905 --- /dev/null +++ b/sql/add_order_fields.sql @@ -0,0 +1,14 @@ +-- 为订单表添加用户订单号和失败原因字段 +-- 执行时间:2025-10-18 + +-- 1. 添加 user_order_id 字段(如果不存在) +ALTER TABLE `jd_cookie_order` + ADD COLUMN IF NOT EXISTS `user_order_id` varchar (64) NOT NULL COMMENT '用户订单号' AFTER `order_id`, + ADD UNIQUE KEY IF NOT EXISTS `uk_user_order_id` (`user_order_id`); + +-- 2. 添加 failure_reason 字段(如果不存在) +ALTER TABLE `jd_cookie_order` + ADD COLUMN IF NOT EXISTS `failure_reason` text DEFAULT NULL COMMENT '失败原因' AFTER `status`; + +-- 3. 更新状态字段注释(添加状态5Ck失败) +ALTER TABLE `jd_cookie_order` MODIFY COLUMN `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态:1待支付 2已支付 3已过期 4已取消 5Ck失败'; \ No newline at end of file diff --git a/sql/jd_cookie_tables.sql b/sql/jd_cookie_tables.sql index 986fe0d0..53c5ef17 100644 --- a/sql/jd_cookie_tables.sql +++ b/sql/jd_cookie_tables.sql @@ -1,7 +1,6 @@ -- 京东Cookie管理模块数据库表结构 --- 作者:AI助手 --- 创建时间:2025-10-08 --- 说明:新的京东Cookie管理系统数据库表结构,替换原有card_redeem_cookie系统 +-- 更新时间:2025-10-18 +-- 说明:从MySQL数据库(kami)同步的实际表结构 -- 1. Cookie账户表 DROP TABLE IF EXISTS `jd_cookie_account`; @@ -15,7 +14,7 @@ CREATE TABLE `jd_cookie_account` ( `failure_count` int DEFAULT 0 COMMENT '连续失败次数', `last_used_at` datetime DEFAULT NULL COMMENT '最后使用时间', `suspend_until` datetime DEFAULT NULL COMMENT '暂停解除时间', - `remark` text DEFAULT NULL COMMENT '备注信息', + `remark` varchar(500) DEFAULT NULL COMMENT '备注信息', `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted_at` datetime DEFAULT NULL COMMENT '删除时间', @@ -25,7 +24,7 @@ CREATE TABLE `jd_cookie_account` ( KEY `idx_last_used` (`last_used_at`), KEY `idx_suspend_until` (`suspend_until`), KEY `idx_deleted_at` (`deleted_at`) -) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '京东Cookie账户表'; +) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '京东Cookie账户表'; -- 2. 京东订单表 DROP TABLE IF EXISTS `jd_cookie_jd_order`; @@ -33,15 +32,16 @@ DROP TABLE IF EXISTS `jd_cookie_jd_order`; CREATE TABLE `jd_cookie_jd_order` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `jd_order_id` varchar(64) NOT NULL COMMENT '京东订单号', + `real_jd_order_id` varchar(128) DEFAULT NULL COMMENT '京东客户端返回的真实订单ID', `pay_id` varchar(64) NOT NULL COMMENT '支付ID', - `amount` decimal(10, 2) NOT NULL COMMENT '订单金额', + `amount` decimal(10, 2) NOT NULL COMMENT '订单金额', `category` varchar(50) NOT NULL COMMENT '商品品类', `cookie_id` varchar(64) NOT NULL COMMENT '使用的Cookie ID', `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态:1待支付 2已支付 3已过期 4已取消', `wx_pay_url` text DEFAULT NULL COMMENT '微信支付链接', `wx_pay_expire_at` datetime DEFAULT NULL COMMENT '微信支付链接过期时间', `order_expire_at` datetime NOT NULL COMMENT '订单过期时间(默认24小时)', - `current_order_id` bigint DEFAULT NULL COMMENT '当前关联的订单ID', + `order_id` varchar(64) DEFAULT NULL COMMENT '关联的用户订单号', `paid_at` datetime DEFAULT NULL COMMENT '支付完成时间', `card_no` varchar(100) DEFAULT NULL COMMENT '卡号', `card_password` varchar(100) DEFAULT NULL COMMENT '卡密', @@ -54,9 +54,9 @@ CREATE TABLE `jd_cookie_jd_order` ( KEY `idx_status` (`status`), KEY `idx_cookie_id` (`cookie_id`), KEY `idx_order_expire` (`order_expire_at`), - KEY `idx_current_order` (`current_order_id`), + KEY `idx_current_order` (`order_id`), KEY `idx_deleted_at` (`deleted_at`) -) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '京东订单表'; +) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '京东订单表'; -- 3. 订单表 DROP TABLE IF EXISTS `jd_cookie_order`; @@ -64,11 +64,11 @@ DROP TABLE IF EXISTS `jd_cookie_order`; CREATE TABLE `jd_cookie_order` ( `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `order_id` varchar(64) NOT NULL COMMENT '订单号', - `amount` decimal(10, 2) NOT NULL COMMENT '订单金额', + `user_order_id` varchar(64) DEFAULT NULL COMMENT '用户订单号', + `amount` decimal(10, 2) NOT NULL COMMENT '订单金额', `category` varchar(50) NOT NULL COMMENT '商品品类', `jd_order_id` varchar(64) DEFAULT NULL COMMENT '关联的京东订单号', `status` tinyint NOT NULL DEFAULT 1 COMMENT '状态:1待支付 2已支付 3已过期 4已取消', - `wx_pay_url` text DEFAULT NULL COMMENT '当前有效的微信支付链接', `last_request_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '最后请求时间', `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', @@ -78,8 +78,9 @@ CREATE TABLE `jd_cookie_order` ( KEY `idx_status` (`status`), KEY `idx_jd_order_id` (`jd_order_id`), KEY `idx_last_request` (`last_request_at`), + KEY `idx_user_order_id` (`user_order_id`), KEY `idx_deleted_at` (`deleted_at`) -) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '订单表'; +) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '订单表'; -- 4. Cookie变更历史表 DROP TABLE IF EXISTS `jd_cookie_change_history`; @@ -94,7 +95,7 @@ CREATE TABLE `jd_cookie_change_history` ( `order_id` varchar(64) DEFAULT NULL COMMENT '关联的订单号', `user_order_id` varchar(64) DEFAULT NULL COMMENT '用户订单号', `failure_count` int DEFAULT NULL COMMENT '失败次数', - `remark` text DEFAULT NULL COMMENT '备注信息', + `remark` text DEFAULT NULL COMMENT '备注信息,存储额外的信息', `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted_at` datetime DEFAULT NULL COMMENT '删除时间', @@ -102,11 +103,10 @@ CREATE TABLE `jd_cookie_change_history` ( UNIQUE KEY `uk_history_uuid` (`history_uuid`), KEY `idx_cookie_id` (`cookie_id`), KEY `idx_change_type` (`change_type`), - KEY `idx_order_id` (`order_id`), - KEY `idx_user_order_id` (`user_order_id`), + KEY `idx_user_order_id` (`user_order_id`), KEY `idx_created_at` (`created_at`), KEY `idx_deleted_at` (`deleted_at`) -) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = 'Cookie变更历史表'; +) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = 'Cookie变更历史表'; -- 5. 京东订单变更历史表 DROP TABLE IF EXISTS `jd_cookie_jd_order_change_history`; @@ -128,7 +128,7 @@ CREATE TABLE `jd_cookie_jd_order_change_history` ( KEY `idx_change_type` (`change_type`), KEY `idx_created_at` (`created_at`), KEY `idx_deleted_at` (`deleted_at`) -) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '京东订单变更历史表'; +) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '京东订单变更历史表'; -- 6. 订单变更历史表 DROP TABLE IF EXISTS `jd_cookie_order_change_history`; @@ -149,4 +149,4 @@ CREATE TABLE `jd_cookie_order_change_history` ( KEY `idx_change_type` (`change_type`), KEY `idx_created_at` (`created_at`), KEY `idx_deleted_at` (`deleted_at`) -) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '订单变更历史表'; \ No newline at end of file +) ENGINE = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_unicode_ci COMMENT = '订单变更历史表'; \ No newline at end of file