Files
eSIM-Tools/netlify/functions/health.js
Abner 4a0fcc94fe feat: 重构Netlify Functions架构并增强代码质量
- 新增统一的中间件模块,提供鉴权、CORS和错误处理功能
- 重构所有Functions使用withAuth中间件简化代码结构
- 添加安全存储模块替代localStorage,防御XSS攻击
- 引入HTML清理工具,自动转义特殊字符和验证URL安全性
- 创建代码质量检查脚本,验证语法、环境变量和依赖完整性
- 添加构建日志工具和重构脚本,统一替换console.log为Logger
- 引入ESLint配置,提升代码质量和一致性
- 重构Giffgaff相关API,统一错误处理和验证逻辑
- 优化构建脚本,添加压缩和图片优化功能
- 新增健康检查端点,用于服务监控和状态报告
2025-11-23 22:20:02 +08:00

49 lines
1.3 KiB
JavaScript

/**
* Netlify Function: Health Check
* 提供健康检查端点,用于监控服务状态
*/
exports.handler = async (event, context) => {
const health = {
status: 'healthy',
timestamp: new Date().toISOString(),
service: 'eSIM-Tools',
version: process.env.APP_VERSION || '2.0.0',
environment: process.env.NODE_ENV || 'production',
uptime: process.uptime(),
checks: {
accessKey: !!process.env.ACCESS_KEY,
giffgaffClientId: !!process.env.GIFFGAFF_CLIENT_ID,
giffgaffClientSecret: !!process.env.GIFFGAFF_CLIENT_SECRET
}
};
// 检查关键环境变量
const missingConfigs = [];
if (!process.env.ACCESS_KEY) {
missingConfigs.push('ACCESS_KEY');
}
if (!process.env.GIFFGAFF_CLIENT_ID) {
missingConfigs.push('GIFFGAFF_CLIENT_ID');
}
if (!process.env.GIFFGAFF_CLIENT_SECRET) {
missingConfigs.push('GIFFGAFF_CLIENT_SECRET');
}
if (missingConfigs.length > 0) {
health.status = 'degraded';
health.warnings = missingConfigs.map(key => `${key} not configured`);
}
const statusCode = health.status === 'healthy' ? 200 : 503;
return {
statusCode,
headers: {
'Content-Type': 'application/json',
'Cache-Control': 'no-cache, no-store, must-revalidate'
},
body: JSON.stringify(health, null, 2)
};
};