/** * SDK 统一配置 - 从环境变量读取,可随时调用 * 复制自 digital 项目,去除主题依赖 */ const isDev = process.env.NODE_ENV === "development"; export interface PocketBaseConfig { enabled: boolean; url: string; usersCollection: string; joinCollection: string; } export interface ZPayConfig { enabled: boolean; apiUrl: string; provider: "zpay" | "xorpay"; defaultAmount: number; defaultType: string; zpaySubmitUrl: string; } export interface MinioConfig { enabled: boolean; endPoint: string; port: number; useSSL: boolean; bucket: string; accessKey: string; secretKey: string; region: string; publicUrl: string; uploadPrefix: string; } /** PocketBase 配置 */ export function getPocketBaseConfig(overrides?: { joinCollection?: string }): PocketBaseConfig { return { enabled: true, url: process.env.NEXT_PUBLIC_POCKETBASE_URL || process.env.POCKETBASE_URL || "https://pocketbase.hackrobot.cn", usersCollection: "users", joinCollection: overrides?.joinCollection || process.env.POCKETBASE_JOIN_COLLECTION || "solan", }; } /** ZPay 支付配置 */ export function getZPayConfig(overrides?: { amount?: number; type?: string }): ZPayConfig { const base = { enabled: true, apiUrl: process.env.PAYMENT_API_URL || (isDev ? "http://127.0.0.1:8700" : "https://api.hackrobot.cn"), provider: (process.env.PAYMENT_PROVIDER as "zpay" | "xorpay") || "zpay", defaultAmount: Number(process.env.PAYMENT_DEFAULT_AMOUNT) || 80, defaultType: process.env.PAYMENT_DEFAULT_TYPE || "meetup", zpaySubmitUrl: process.env.ZPAY_SUBMIT_URL || "https://zpayz.cn/submit.php", }; if (overrides) { if (overrides.amount != null) base.defaultAmount = overrides.amount; if (overrides.type) base.defaultType = overrides.type; } return base; } /** MinIO 配置 */ export function getMinioConfig(overrides?: { bucket?: string; uploadPrefix?: string }): MinioConfig { const endPoint = process.env.MINIO_ENDPOINT || "minioweb.hackrobot.cn"; const port = parseInt(process.env.MINIO_PORT || "9035", 10); const useSSL = process.env.MINIO_USE_SSL === "true"; const bucket = overrides?.bucket || process.env.MINIO_BUCKET || "hackrobot"; const publicUrl = process.env.MINIO_PUBLIC_URL || `https://${endPoint}/${bucket}`; const uploadPrefix = overrides?.uploadPrefix || process.env.MINIO_UPLOAD_PREFIX || "joins"; return { enabled: true, endPoint, port, useSSL, bucket, accessKey: process.env.MINIO_ACCESS_KEY || "6i56HHfg4zPfYItCZtnp", secretKey: process.env.MINIO_SECRET_KEY || "vDJCqEit3ejH5UmWKAZnvqhziNfbVsoOlBW12G8Q", region: process.env.MINIO_REGION || "china", publicUrl: publicUrl.replace(/\/$/, ""), uploadPrefix, }; }