Files
ocdp-go/docs/archive/root-cleanup/OPENAPI_SYNC_REPORT.md
mangomqy c5e51ed069 ocdp v1
2025-11-13 02:54:06 +00:00

3.2 KiB

OpenAPI 同步报告

生成时间: 2025-11-10

已完成的工作

1. OpenAPI 规范验证

  • 使用 Docker 版本的 OpenAPI Generator (v7.17.0)
  • 验证了 backend/docs/openapi.yaml 规范文件
  • 规范文件无错误,验证通过

2. 前端客户端代码生成

  • 使用 typescript-axios 生成器
  • 生成位置: frontend/src/api/generated/
  • 生成内容:
    • 7 个 API 接口文件 (artifacts, auth, clusters, health, instances, monitoring, registries)
    • 26 个模型文件 (所有请求/响应类型)
    • 配置和基础文件 (base.ts, configuration.ts, common.ts等)

3. 依赖安装

  • 安装了生成代码所需的 npm 依赖

4. 类型定义修复

  • 添加了缺失的 ValuesSchemaResponse 类型定义
  • 修复了 artifact.api.ts 中的类型导出问题
  • 更新了 getValuesSchema 函数的返回类型

📊 生成的文件统计

API 接口文件 (7个)

  • api/artifacts-api.ts - Artifact 相关 API
  • api/auth-api.ts - 认证相关 API
  • api/clusters-api.ts - 集群管理 API
  • api/health-api.ts - 健康检查 API
  • api/instances-api.ts - 实例管理 API
  • api/monitoring-api.ts - 监控 API
  • api/registries-api.ts - Registry 管理 API

模型文件 (26个)

包括所有的请求和响应类型,如:

  • ArtifactListItem, ArtifactResponse
  • ClusterResponse, CreateClusterRequest, UpdateClusterRequest
  • RegistryResponse, CreateRegistryRequest, UpdateRegistryRequest
  • InstanceResponse, CreateInstanceRequest, UpdateInstanceRequest
  • AuthResponse, LoginRequest, RegisterRequest
  • 等等...

⚠️ 已知的非关键问题

以下文件中存在一些类型不匹配的问题,但不影响核心功能:

  1. Mock 客户端 (src/api/client.ts) - 25 个类型错误

    • 这是用于开发模式的 Mock 客户端
    • 需要更新以匹配新的 OpenAPI 类型
  2. 示例代码 (src/api/examples.ts) - 4 个类型错误

    • 示例/测试代码
    • 需要更新以匹配新的 API 签名
  3. 组件中的可选属性处理 - 8 个类型错误

    • 一些组件需要添加可选链操作符或空值检查
    • 位于: RegistryTreeExplorer, RepositoryItem, TagCard

🔧 建议的后续步骤

短期 (可选)

  1. 修复 Mock 客户端的类型错误,如果需要使用 Mode 0 (Mock 模式) 进行开发
  2. 更新示例代码以匹配新的 API 签名
  3. 添加空值检查到相关组件

长期

  1. 建立自动化的 OpenAPI 同步流程
    # 使用项目 Makefile
    make openapi-gen-frontend
    
  2. 在 CI/CD 中添加 OpenAPI 规范验证步骤

📝 使用新生成的 API 客户端

// 导入生成的 API
import { ArtifactsApi, ClustersApi, RegistriesApi } from '@/api/generated/api';
import type { ClusterResponse, CreateClusterRequest } from '@/api/generated/models';

// 创建 API 实例
const clustersApi = new ClustersApi();

// 使用 API
const clusters: ClusterResponse[] = await clustersApi.listClusters();

📚 参考文档

  • OpenAPI 规范: backend/docs/openapi.yaml
  • 生成的 API 文档: frontend/src/api/generated/docs/
  • 项目 Makefile: 根目录的 Makefile (包含 openapi-gen-frontend 命令)

生成工具: OpenAPI Generator v7.17.0 生成器: typescript-axios