Files
miniprogram-1/miniprogram/types/app.ts
2026-01-18 11:48:03 +08:00

253 lines
4.9 KiB
TypeScript

// app.ts 的类型定义
import { ApiManager } from '../utils/api'
// 用户信息接口
export interface IUserInfo {
id: string
nickname?: string
avatar_url?: string
avatar_file_id?: string
gender?: number
country?: string
province?: string
city?: string
language?: string
}
// 登录响应接口
export interface ILoginResponse {
access_token: string
access_token_expire_time: string
session_uuid: string
dict_level?: string
}
// API响应接口
export interface IApiResponse<T> {
code: number
message?: string
msg?: string
data: T
}
export interface IRecognitionResponse {
task_id: string
status: string
error_message?: string
image_id?: string
// result?: IRecognitionResponseResult
}
export interface IRecognitionResponseResultLevel {
desc_en: string[]
desc_zh: string[]
}
export interface IRecognitionResponseResult {
level1: IRecognitionResponseResultLevel,
level2: IRecognitionResponseResultLevel,
level3: IRecognitionResponseResultLevel,
}
export interface IQaExerciseCreateAccepted {
task_id: string
status: 'accepted'
}
export interface IQaExerciseTaskStatus {
task_id: string
image_id: string
ref_type: 'qa_exercise'
ref_id: string
status: string
error_message?: string
}
export interface IQaExerciseItem {
id: number
image_id: number
title?: string
description?: string
status: string
question_count: number
created_by: number
created_time?: string
}
export type IQaExerciseListResponse = IQaExerciseItem[]
export type QaAttemptMode = 'choice' | 'free_text' | 'audio'
export interface IQaExerciseQuestion {
id: number
exercise_id: number
image_id: number
question: string
user_id: number
ext: any
created_time?: string
}
export interface IQaExerciseQueryResponse {
exercise: IQaExerciseItem
session: IQaExerciseSession
questions: IQaExerciseQuestion[]
}
export interface IQaQuestionAttemptAccepted {
attempt_id: string
task_id: string
status: 'accepted'
}
export interface IQaQuestionTaskStatus {
task_id: string
ref_type: 'qa_question_attempt'
ref_id: string
status: string
error_message?: string
}
export type QaCorrectness = 'correct' | 'partial' | 'incorrect'
export interface IIncorrectSelectionItem {
content: string
error_type?: string
error_reason?: string
}
export interface ISelectedDetail {
correct: string[]
incorrect: IIncorrectSelectionItem[]
}
export interface IEvaluationSchema {
type?: string
result?: string
detail?: string
selected?: ISelectedDetail
missing_correct?: string[]
feedback?: string
}
export interface IQaResult {
attempt_id: string
status: string
is_correct?: QaCorrectness
evaluation?: IEvaluationSchema
mode: QaAttemptMode
selected_option_ids?: number[]
input_text?: string
recording_id?: string
stt_text?: string
updated_time?: string
}
// 单词详情接口
export interface ExtendedWordDetail {
word: string
phonetic: string
definition: string
translation: string
pos: string
collins: number
oxford: number
tag: string
bnc: number
frq: number
exchange: Record<string, string[]>
detail: string
audio: string
}
// 积分数据接口
export interface IPointsData {
balance: number
available_balance: number
frozen_balance: number
total_purchased: number
total_refunded: number
expired_time: string
is_subscribed: boolean
subscription_expires_at: string | null
}
export interface IQaExerciseSession {
id: string | number
exercise_id: number
starter_user_id: number
status: string
started_at?: string
completed_at?: string
progress: number | {
answered: number
attempts: Array<{
attempt_id: string | number
created_at: string
is_correct: string
mode: string
question_id: string | number
}>
}
score?: number
ext?: any
}
export interface YdWordDetail {
ee: {}
ec: {}
discriminate: {}
etym: {}
expand_ec: {}
phrs: {}
simple: {}
}
// 审核历史记录接口
export interface IAuditHistoryResponse {
total: number
items: Array<{
id: string
image_url: string
text: string
created_at: string
}>
}
// 每日总结接口
export interface IDailySummaryResponse {
total: number
items: Array<{
summary_time: string
image_ids: string[]
thumbnail_ids: string[]
}>
}
// 全局数据接口
export interface IGlobalData {
isLoggedIn: boolean
userInfo?: IUserInfo
token?: string
dictLevel?: string
pendingReferrerId?: string
apiManager: ApiManager
}
// 小程序选项接口
export interface IAppOption {
globalData: IGlobalData
userInfoReadyCallback?: WechatMiniprogram.GetUserInfoSuccessCallback
initLoginStatus: () => void
updateLoginStatus: (loginData: {
access_token: string
access_token_expire_time: string
session_uuid: string
userInfo?: IUserInfo
dict_level?: string
}) => void
clearLoginData: () => void
cloud?: any
call: (obj: any, number?: number) => Promise<any>
}