文档
Core 接口

Core:模型目录与元数据

API 逐项需求、源码归属、字段与验收条件

当前固定源码下本组共 26 项方法 + 路径。下列为接口需求 v0.1,Owner 为 Core,计划阶段为 CE-04;均未宣称 OceanWay 已运行。原路径/字段默认沿用,变化须进入差异台账。

每项适用统一接口需求规则,并列出上游字段声明、控制器观察与具体补差。OpenAPI 没列必填不表示运行时可缺省;观察到的 JSON key 也不等于可写入字段。下载完整接口台账上游管理规范模型规范可查看完整嵌套 Schema。

CORE-MODEL-001 · GET /api/models

用途与归属:获取模型列表。优先沿用,迁入/适配后验收。

鉴权:客户登录身份(沿用上游 UserAuth 支持范围)。

请求:自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。

返回200 成功(上游未声明响应 Schema);代码 JSON/映射中观察到 data, success(仅为字面键观察,含分支/内部映射,不等同完整响应契约)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:读取可有界重试,不新建调用或扣款;结果为空、权限失败与查询未知分开。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:28controller.DashboardListModels controller/model.go:325;上游 api.jsonGET /api/models

CORE-MODEL-002 · GET /api/models/

用途与归属:获取所有模型元数据。优先沿用,迁入/适配后验收。

鉴权:Admin 员工身份。

请求:自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。

返回200 成功(上游未声明响应 Schema)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:读取可有界重试,不新建调用或扣款;结果为空、权限失败与查询未知分开。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:393controller.GetAllModelsMeta controller/model_meta.go:16;上游 api.jsonGET /api/models/

CORE-MODEL-003 · POST /api/models/

用途与归属:创建模型元数据。优先沿用,迁入/适配后验收。

鉴权:Admin 员工身份。

请求:Body 类型:model.Model model/model_meta.go:35;允许写入字段按处理器白名单,不把整个数据库结构直接开放。

返回200 成功(上游未声明响应 Schema);处理器使用 common.ApiSuccess 包络。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:沿用原行为,不擅自要求所有旧接口新增 Idempotency-Key;创建/财务动作必须定义重复点击和响应丢失结果,客户端不得无条件自动重试。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:396controller.CreateModelMeta controller/model_meta.go:107;上游 api.jsonPOST /api/models/

CORE-MODEL-004 · PUT /api/models/

用途与归属:更新模型元数据。优先沿用,迁入/适配后验收。

鉴权:Admin 员工身份。

请求:处理器读取:query.status_only。Body 类型:model.Model model/model_meta.go:35;允许写入字段按处理器白名单,不把整个数据库结构直接开放。

返回200 成功(上游未声明响应 Schema);处理器使用 common.ApiSuccess 包络。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:沿用原行为,不擅自要求所有旧接口新增 Idempotency-Key;创建/财务动作必须定义重复点击和响应丢失结果,客户端不得无条件自动重试。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:397controller.UpdateModelMeta controller/model_meta.go:140;上游 api.jsonPUT /api/models/

CORE-MODEL-005 · DELETE /api/models/:id

用途与归属:删除模型。优先沿用,迁入/适配后验收。

鉴权:Admin 员工身份。

请求:Path:id(必填;以实际路由名为准)。OpenAPI 参数:path.id:integer(必填)。处理器读取:path.id, query.remove_from_channels, query.remove_pricing。自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。

返回200 成功(上游未声明响应 Schema);处理器使用 common.ApiSuccess 包络;代码 JSON/映射中观察到 message, model_ids, remove_from_channels, remove_pricing, success, updated_channels(仅为字面键观察,含分支/内部映射,不等同完整响应契约)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:沿用原行为,不擅自要求所有旧接口新增 Idempotency-Key;创建/财务动作必须定义重复点击和响应丢失结果,客户端不得无条件自动重试。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:398controller.DeleteModelMeta controller/model_meta.go:192;上游 api.jsonDELETE /api/models/{id}

CORE-MODEL-006 · GET /api/models/:id

用途与归属:获取指定模型。优先沿用,迁入/适配后验收。

鉴权:Admin 员工身份。

请求:Path:id(必填;以实际路由名为准)。OpenAPI 参数:path.id:integer(必填)。处理器读取:path.id。自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。

返回200 成功(上游未声明响应 Schema);处理器使用 common.ApiSuccess 包络。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:读取可有界重试,不新建调用或扣款;结果为空、权限失败与查询未知分开。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:395controller.GetModelMeta controller/model_meta.go:87;上游 api.jsonGET /api/models/{id}

CORE-MODEL-007 · POST /api/models/delete

用途与归属:BatchDeleteModelMeta。优先沿用,迁入/适配后验收。

鉴权:Admin 员工身份。

请求:处理器匿名请求字段:model_ids:[]int(条件必填看处理器), remove_from_channels:bool(条件必填看处理器), remove_pricing:bool(条件必填看处理器)。

返回:上游 OpenAPI 无本项响应规范;按处理器返回值补齐成功、拒绝和错误结构;处理器使用 common.ApiSuccess 包络;代码 JSON/映射中观察到 message, model_ids, remove_from_channels, remove_pricing, success, updated_channels(仅为字面键观察,含分支/内部映射,不等同完整响应契约)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:沿用原行为,不擅自要求所有旧接口新增 Idempotency-Key;创建/财务动作必须定义重复点击和响应丢失结果,客户端不得无条件自动重试。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:OPENAPI-MISSING:源码已注册,上游 OpenAPI 无匹配操作。

来源router/api-router.go:391controller.BatchDeleteModelMeta controller/model_meta.go:222

CORE-MODEL-008 · GET /api/models/missing

用途与归属:获取缺失模型。优先沿用,迁入/适配后验收。

鉴权:Admin 员工身份。

请求:自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。

返回200 成功(上游未声明响应 Schema);代码 JSON/映射中观察到 data, message, success(仅为字面键观察,含分支/内部映射,不等同完整响应契约)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:读取可有界重试,不新建调用或扣款;结果为空、权限失败与查询未知分开。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:392controller.GetMissingModels controller/missing_models.go:14;上游 api.jsonGET /api/models/missing

CORE-MODEL-009 · GET /api/models/search

用途与归属:搜索模型。优先沿用,迁入/适配后验收。

鉴权:Admin 员工身份。

请求:OpenAPI 参数:query.keyword:string。处理器读取:query.keyword, query.vendor。自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。

返回200 成功(上游未声明响应 Schema)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:读取可有界重试,不新建调用或扣款;结果为空、权限失败与查询未知分开。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:394controller.SearchModelsMeta controller/model_meta.go:21;上游 api.jsonGET /api/models/search

CORE-MODEL-010 · POST /api/models/sync_upstream

用途与归属:同步上游模型。优先沿用,迁入/适配后验收。

鉴权:Admin 员工身份。

请求:处理器匿名请求字段:locale:string(条件必填看处理器), source_version:string(条件必填看处理器), selections:[]model.MetadataSyncSelection(条件必填看处理器)。

返回200 成功(上游未声明响应 Schema);处理器使用 common.ApiSuccess 包络;代码 JSON/映射中观察到 created_models, created_vendors, message, success, updated_models(仅为字面键观察,含分支/内部映射,不等同完整响应契约)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:沿用原行为,不擅自要求所有旧接口新增 Idempotency-Key;创建/财务动作必须定义重复点击和响应丢失结果,客户端不得无条件自动重试。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:390controller.SyncUpstreamModels controller/model_sync.go:413;上游 api.jsonPOST /api/models/sync_upstream

CORE-MODEL-011 · GET /api/models/sync_upstream/preview

用途与归属:预览上游模型同步。优先沿用,迁入/适配后验收。

鉴权:Admin 员工身份。

请求:处理器读取:query.locale。自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。

返回200 成功(上游未声明响应 Schema);处理器使用 common.ApiSuccess 包络;代码 JSON/映射中观察到 candidates, source(仅为字面键观察,含分支/内部映射,不等同完整响应契约)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:读取可有界重试,不新建调用或扣款;结果为空、权限失败与查询未知分开。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:389controller.SyncUpstreamPreview controller/model_sync.go:317;上游 api.jsonGET /api/models/sync_upstream/preview

CORE-MODEL-012 · GET /api/perf-metrics

用途与归属:GetPerfMetrics。优先沿用,迁入/适配后验收。

鉴权:客户登录身份(沿用上游 UserAuth 支持范围)。

请求:处理器读取:query.model, query.hours, query.group。自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。

返回:上游 OpenAPI 无本项响应规范;按处理器返回值补齐成功、拒绝和错误结构;代码 JSON/映射中观察到 data, message, success(仅为字面键观察,含分支/内部映射,不等同完整响应契约)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:读取可有界重试,不新建调用或扣款;结果为空、权限失败与查询未知分开。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:OPENAPI-MISSING:源码已注册,上游 OpenAPI 无匹配操作。

来源router/api-router.go:41controller.GetPerfMetrics controller/perf_metrics.go:38

CORE-MODEL-013 · GET /api/perf-metrics/summary

用途与归属:GetPerfMetricsSummary。优先沿用,迁入/适配后验收。

鉴权:客户登录身份(沿用上游 UserAuth 支持范围)。

请求:处理器读取:query.hours。自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。

返回:上游 OpenAPI 无本项响应规范;按处理器返回值补齐成功、拒绝和错误结构;代码 JSON/映射中观察到 data, message, success(仅为字面键观察,含分支/内部映射,不等同完整响应契约)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:读取可有界重试,不新建调用或扣款;结果为空、权限失败与查询未知分开。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:OPENAPI-MISSING:源码已注册,上游 OpenAPI 无匹配操作。

来源router/api-router.go:40controller.GetPerfMetricsSummary controller/perf_metrics.go:14

CORE-MODEL-014 · GET /api/pricing

用途与归属:获取定价信息。优先沿用,迁入/适配后验收。

鉴权:未挂 User/Admin/Token 认证;按处理器及配置校验。

请求:自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。

返回200 成功(上游未声明响应 Schema);代码 JSON/映射中观察到 auto_groups, data, group_ratio, pricing_version, success, supported_endpoint, usable_group, vendors(仅为字面键观察,含分支/内部映射,不等同完整响应契约)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:读取可有界重试,不新建调用或扣款;结果为空、权限失败与查询未知分开。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:36controller.GetPricing controller/pricing.go:38;上游 api.jsonGET /api/pricing

CORE-MODEL-015 · GET /api/rankings

用途与归属:GetRankings。优先沿用,迁入/适配后验收。

鉴权:未挂 User/Admin/Token 认证;按处理器及配置校验。

请求:处理器读取:query.period。自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。

返回:上游 OpenAPI 无本项响应规范;按处理器返回值补齐成功、拒绝和错误结构;代码 JSON/映射中观察到 data, message, success(仅为字面键观察,含分支/内部映射,不等同完整响应契约)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:读取可有界重试,不新建调用或扣款;结果为空、权限失败与查询未知分开。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:OPENAPI-MISSING:源码已注册,上游 OpenAPI 无匹配操作。

来源router/api-router.go:43controller.GetRankings controller/rankings.go:10

CORE-MODEL-016 · GET /api/user/groups

用途与归属:获取用户分组列表。优先沿用,迁入/适配后验收。

鉴权:未挂 User/Admin/Token 认证;按处理器及配置校验。

请求:自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。

返回200 成功(上游未声明响应 Schema);代码 JSON/映射中观察到 data, desc, message, ratio, success(仅为字面键观察,含分支/内部映射,不等同完整响应契约)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:读取可有界重试,不新建调用或扣款;结果为空、权限失败与查询未知分开。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:89controller.GetUserGroups controller/group.go:26;上游 api.jsonGET /api/user/groups

CORE-MODEL-017 · GET /api/user/models

用途与归属:获取用户可用模型。优先沿用,迁入/适配后验收。

鉴权:客户登录身份(沿用上游 UserAuth 支持范围)。

请求:处理器读取:path.id, query.group。自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。

返回200 成功(上游未声明响应 Schema);代码 JSON/映射中观察到 auto, data, message, success(仅为字面键观察,含分支/内部映射,不等同完整响应契约)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:读取可有界重试,不新建调用或扣款;结果为空、权限失败与查询未知分开。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:99controller.GetUserModels controller/user.go:613;上游 api.jsonGET /api/user/models

CORE-MODEL-018 · GET /api/user/self/groups

用途与归属:获取当前用户分组。优先沿用,迁入/适配后验收。

鉴权:客户登录身份(沿用上游 UserAuth 支持范围)。

请求:自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。

返回200 成功(上游未声明响应 Schema);代码 JSON/映射中观察到 data, desc, message, ratio, success(仅为字面键观察,含分支/内部映射,不等同完整响应契约)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:读取可有界重试,不新建调用或扣款;结果为空、权限失败与查询未知分开。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:97controller.GetUserGroups controller/group.go:26;上游 api.jsonGET /api/user/self/groups

CORE-MODEL-019 · GET /api/vendors/

用途与归属:获取所有供应商。优先沿用,迁入/适配后验收。

鉴权:Admin 员工身份。

请求:自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。

返回200 成功(上游未声明响应 Schema)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:读取可有界重试,不新建调用或扣款;结果为空、权限失败与查询未知分开。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:378controller.GetAllVendors controller/vendor_meta.go:15;上游 api.jsonGET /api/vendors/

CORE-MODEL-020 · POST /api/vendors/

用途与归属:创建供应商。优先沿用,迁入/适配后验收。

鉴权:Admin 员工身份。

请求:Body 类型:model.Vendor model/vendor_meta.go:15;允许写入字段按处理器白名单,不把整个数据库结构直接开放。

返回200 成功(上游未声明响应 Schema);处理器使用 common.ApiSuccess 包络;代码 JSON/映射中观察到 name, vendor_id(仅为字面键观察,含分支/内部映射,不等同完整响应契约)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:沿用原行为,不擅自要求所有旧接口新增 Idempotency-Key;创建/财务动作必须定义重复点击和响应丢失结果,客户端不得无条件自动重试。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:381controller.CreateVendorMeta controller/vendor_meta.go:46;上游 api.jsonPOST /api/vendors/

CORE-MODEL-021 · PUT /api/vendors/

用途与归属:更新供应商。优先沿用,迁入/适配后验收。

鉴权:Admin 员工身份。

请求:Body 类型:model.Vendor model/vendor_meta.go:15;允许写入字段按处理器白名单,不把整个数据库结构直接开放。

返回200 成功(上游未声明响应 Schema);处理器使用 common.ApiSuccess 包络;代码 JSON/映射中观察到 name, vendor_id(仅为字面键观察,含分支/内部映射,不等同完整响应契约)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:沿用原行为,不擅自要求所有旧接口新增 Idempotency-Key;创建/财务动作必须定义重复点击和响应丢失结果,客户端不得无条件自动重试。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:382controller.UpdateVendorMeta controller/vendor_meta.go:61;上游 api.jsonPUT /api/vendors/

CORE-MODEL-022 · DELETE /api/vendors/:id

用途与归属:删除供应商。优先沿用,迁入/适配后验收。

鉴权:Admin 员工身份。

请求:Path:id(必填;以实际路由名为准)。OpenAPI 参数:path.id:integer(必填)。处理器读取:path.id。自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。

返回200 成功(上游未声明响应 Schema);处理器使用 common.ApiSuccess 包络;代码 JSON/映射中观察到 vendor_id(仅为字面键观察,含分支/内部映射,不等同完整响应契约)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:沿用原行为,不擅自要求所有旧接口新增 Idempotency-Key;创建/财务动作必须定义重复点击和响应丢失结果,客户端不得无条件自动重试。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:383controller.DeleteVendorMeta controller/vendor_meta.go:80;上游 api.jsonDELETE /api/vendors/{id}

CORE-MODEL-023 · GET /api/vendors/:id

用途与归属:获取指定供应商。优先沿用,迁入/适配后验收。

鉴权:Admin 员工身份。

请求:Path:id(必填;以实际路由名为准)。OpenAPI 参数:path.id:integer(必填)。处理器读取:path.id。自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。

返回200 成功(上游未声明响应 Schema);处理器使用 common.ApiSuccess 包络。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:读取可有界重试,不新建调用或扣款;结果为空、权限失败与查询未知分开。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:380controller.GetVendorMeta controller/vendor_meta.go:30;上游 api.jsonGET /api/vendors/{id}

CORE-MODEL-024 · POST /api/vendors/operations

用途与归属:ApplyVendorOperation。优先沿用,迁入/适配后验收。

鉴权:Admin 员工身份。

请求:Body 类型:model.VendorOperation model/vendor_management.go:79;允许写入字段按处理器白名单,不把整个数据库结构直接开放。

返回:上游 OpenAPI 无本项响应规范;按处理器返回值补齐成功、拒绝和错误结构;处理器使用 common.ApiSuccess 包络;代码 JSON/映射中观察到 deleted_vendor_ids, source_vendor_ids, target_vendor_id, updated_model_ids(仅为字面键观察,含分支/内部映射,不等同完整响应契约)。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:沿用原行为,不擅自要求所有旧接口新增 Idempotency-Key;创建/财务动作必须定义重复点击和响应丢失结果,客户端不得无条件自动重试。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:OPENAPI-MISSING:源码已注册,上游 OpenAPI 无匹配操作。

来源router/api-router.go:377controller.ApplyVendorOperation controller/vendor_meta.go:125

CORE-MODEL-025 · POST /api/vendors/operations/preview

用途与归属:PreviewVendorOperation。优先沿用,迁入/适配后验收。

鉴权:Admin 员工身份。

请求:Body 类型:model.VendorOperation model/vendor_management.go:79;允许写入字段按处理器白名单,不把整个数据库结构直接开放。

返回:上游 OpenAPI 无本项响应规范;按处理器返回值补齐成功、拒绝和错误结构;处理器使用 common.ApiSuccess 包络。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:沿用原行为,不擅自要求所有旧接口新增 Idempotency-Key;创建/财务动作必须定义重复点击和响应丢失结果,客户端不得无条件自动重试。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:OPENAPI-MISSING:源码已注册,上游 OpenAPI 无匹配操作。

来源router/api-router.go:376controller.PreviewVendorOperation controller/vendor_meta.go:111

CORE-MODEL-026 · GET /api/vendors/search

用途与归属:搜索供应商。优先沿用,迁入/适配后验收。

鉴权:Admin 员工身份。

请求:OpenAPI 参数:query.keyword:string。处理器读取:query.keyword, query.association, query.p, query.page_size。自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。

返回200 成功(上游未声明响应 Schema);处理器使用 common.ApiSuccess 包络。

业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。

幂等、重试与异常:读取可有界重试,不新建调用或扣款;结果为空、权限失败与查询未知分开。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。

验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。

迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。

来源router/api-router.go:379controller.SearchVendors controller/vendor_meta.go:17;上游 api.jsonGET /api/vendors/search

On this page