用途:指导把 PostHog 前端的手写 API 调用与手写类型迁移到由 Django serializer 经 drf-spectacular、OpenAPI、Orval 生成的 TypeScript 客户端。生成文件位于 frontend/src/generated/core/ 下的 api.ts、api.schemas.ts、api.zod.ts,以及 products/<product>/frontend/generated/ 下同名文件;生成类型带 Api 后缀(如 DashboardApi、SurveyApi),手写类型不带。
主要能力:识别并替换三类旧模式——高层对象 API(api.surveys.get、api.dashboards.list、api.cohorts.update 等)、带手写 URL 的原始 HTTP 方法(api.get<T>、api.create<T>、api.update、api.put、api.delete)、ApiRequest 构建器。生成函数按 {resource}{Action} 命名,如 surveysList、surveysCreate、surveysRetrieve、surveysPartialUpdate、surveysDestroy。
使用方式:先判断旧调用的 HTTP 方法、实体与操作、类型参数;在生成的 api.ts 中按实体名或 get*Url 辅助函数搜索对应函数;比较手写类型与生成 Api 类型的 readonly、可选/必填、可空与额外字段差异;替换调用与使用处类型;清理死类型与未用导入。导入约定:核心用 ~/generated/core/api 与 api.schemas、api.zod;产品从外部用 products/<product>/frontend/generated/...,产品内部可用相对路径;类型用 import type。
限制:若生成函数不存在,通常因后端缺少 @extend_schema 或 @validated_request,需先修后端再运行 hogli build:openapi;自定义 action 无生成等价物时保留旧调用并先修后端注解。生成函数底层仍走同一 api 模块,HTTP 行为(cookie、CSRF、错误处理)不变。验证用 pnpm --filter=@posthog/frontend typescript:check 与 hogli test <test_file>。