Files
inchstep/shared/types/index.ts
T
2026-06-25 08:39:47 +08:00

70 lines
1.4 KiB
TypeScript

// ========== 用户 ==========
export interface IUser {
id: string
phone?: string
nickname?: string
avatar?: string
bio?: string
motto?: string
privacy: PrivacyLevel
points: number
createdAt: string
}
// ========== 打卡 ==========
export interface ICheckInItem {
id: string
userId: string
name: string
icon?: string
category: CheckInCategory
dailyGoal?: string
cycleType: CycleType
privacy: PrivacyLevel
status: ItemStatus
createdAt: string
}
export interface ICheckInRecord {
id: string
itemId: string
userId: string
checkDate: string
status: RecordStatus
note?: string
images?: string[]
}
// ========== 枚举 ==========
export type CheckInCategory =
| 'study' | 'health' | 'habit' | 'hobby' | 'goal'
export type CycleType =
| 'daily' | 'weekly' | 'every_other_day' | 'custom'
export type PrivacyLevel = 1 | 2 | 3
// 1 = public, 2 = friends_only, 3 = private
export type ItemStatus = 'active' | 'paused' | 'archived' | 'deleted'
export type RecordStatus = 'normal' | 'makeup'
export type Rarity = 'bronze' | 'silver' | 'gold'
// ========== 社交 ==========
export interface IGroup {
id: string
name: string
cover?: string
intro?: string
type: 'public' | 'private'
maxMember: number
}
// ========== API 响应 ==========
export interface ApiResponse<T = unknown> {
code: number
message: string
data?: T
}