import { autoBind } from '~/utils/auto-bind' import type { IRequestAdapter } from '~/interfaces/adapter' import type { IController } from '~/interfaces/controller' import type { IRequestHandler } from '~/interfaces/request' import type { HTTPClient } from '../core' import type { AISummaryModel } from '../models/ai' declare module '../core/client' { interface HTTPClient< T extends IRequestAdapter = IRequestAdapter, ResponseWrapper = unknown, > { ai: AIController } } /** * @support core >= 5.6.0 */ export class AIController implements IController { base = 'ai' name = 'ai' constructor(private client: HTTPClient) { autoBind(this) } public get proxy(): IRequestHandler { return this.client.proxy(this.base) } async getSummary({ articleId, lang = 'zh-CN', onlyDb, }: { articleId: string lang?: string onlyDb?: boolean }) { return this.proxy.summaries.article(articleId).get({ params: { lang, onlyDb, }, }) } async generateSummary(articleId: string, lang = 'zh-CN', token = '') { return this.proxy('generate-summary').post({ params: { token, }, data: { lang, refId: articleId, }, }) } }