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:28;controller.DashboardListModels controller/model.go:325;上游 api.json 中 GET /api/models。
CORE-MODEL-002 · GET /api/models/
用途与归属:获取所有模型元数据。优先沿用,迁入/适配后验收。
鉴权:Admin 员工身份。
请求:自动提取未发现请求体字段;是否接受 Body 及约束仍以处理器为准。
返回:200 成功(上游未声明响应 Schema)。
业务与副作用:区分公开销售目录、客户可用模型、员工元数据与真实供应配置。公开查询不能暴露内部密钥、渠道或客户协议价。客户价与目录权限由 Core 决定,供应商展示元数据不等于供应凭据管理。
幂等、重试与异常:读取可有界重试,不新建调用或扣款;结果为空、权限失败与查询未知分开。 保留原 HTTP 状态、业务 success/message 或模型 error 包络,不将所有失败改成同一状态。区分参数、身份、权限、余额、限流、上游与执行未知;敏感栈和供应凭据不返回客户。
验收需求:成功与空态;缺失/非法字段;未登录/跨账户/无权限;限流;资源不存在;重试与状态冲突;数据库提交后响应丢失(写操作);返回字段与既有协议兼容。
迁入差异:RESPONSE-SCHEMA-MISSING:上游响应未定义结构;以处理器和兼容用例补齐。
来源:router/api-router.go:393;controller.GetAllModelsMeta controller/model_meta.go:16;上游 api.json 中 GET /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:396;controller.CreateModelMeta controller/model_meta.go:107;上游 api.json 中 POST /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:397;controller.UpdateModelMeta controller/model_meta.go:140;上游 api.json 中 PUT /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:398;controller.DeleteModelMeta controller/model_meta.go:192;上游 api.json 中 DELETE /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:395;controller.GetModelMeta controller/model_meta.go:87;上游 api.json 中 GET /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:391;controller.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:392;controller.GetMissingModels controller/missing_models.go:14;上游 api.json 中 GET /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:394;controller.SearchModelsMeta controller/model_meta.go:21;上游 api.json 中 GET /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:390;controller.SyncUpstreamModels controller/model_sync.go:413;上游 api.json 中 POST /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:389;controller.SyncUpstreamPreview controller/model_sync.go:317;上游 api.json 中 GET /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:41;controller.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:40;controller.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:36;controller.GetPricing controller/pricing.go:38;上游 api.json 中 GET /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:43;controller.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:89;controller.GetUserGroups controller/group.go:26;上游 api.json 中 GET /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:99;controller.GetUserModels controller/user.go:613;上游 api.json 中 GET /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:97;controller.GetUserGroups controller/group.go:26;上游 api.json 中 GET /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:378;controller.GetAllVendors controller/vendor_meta.go:15;上游 api.json 中 GET /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:381;controller.CreateVendorMeta controller/vendor_meta.go:46;上游 api.json 中 POST /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:382;controller.UpdateVendorMeta controller/vendor_meta.go:61;上游 api.json 中 PUT /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:383;controller.DeleteVendorMeta controller/vendor_meta.go:80;上游 api.json 中 DELETE /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:380;controller.GetVendorMeta controller/vendor_meta.go:30;上游 api.json 中 GET /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:377;controller.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:376;controller.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:379;controller.SearchVendors controller/vendor_meta.go:17;上游 api.json 中 GET /api/vendors/search。