Files
FootPrint/app/server/demo-certs.mjs
T

36 lines
1.4 KiB
JavaScript

// 演示证书图片索引:demo 播种时按记录标题匹配,附加对应证书 WebP 附件。
// 图片为 Pillow 离线绘制的获奖证书(720x508 WebP + 480px 缩略图),仅作演示数据。
// 如需替换:直接覆盖 demo-certs/*.webp 即可,无需改代码。
import fs from 'node:fs';
import path from 'node:path';
import { fileURLToPath } from 'node:url';
const __dirname = path.dirname(fileURLToPath(import.meta.url));
const DIR = path.join(__dirname, 'demo-certs');
/**
* 主名(如 cert-ctf)→ 证书附件负载(attachment_add 所需格式);文件缺失返回 undefined
*/
export function loadCert(assetName) {
try {
const data = fs.readFileSync(path.join(DIR, assetName + '.webp'));
let thumbB64 = '';
try { thumbB64 = fs.readFileSync(path.join(DIR, assetName + '.thumb.webp')).toString('base64'); } catch {}
return {
file_name: '获奖证书.webp', mime: 'image/webp',
data_b64: data.toString('base64'), thumb_b64: thumbB64, size: data.length,
};
} catch { return undefined; }
}
/** 记录标题 → 证书资源名(demo 播种时逐条匹配) */
export const CERT_BY_TITLE = [
[/信息安全竞赛/, 'cert-ctf'],
[/数学建模/, 'cert-math'],
[/蓝桥杯/, 'cert-lanqiao'],
[/计算机设计大赛/, 'cert-cd'],
[/英语竞赛/, 'cert-eng'],
[/ACM-ICPC/, 'cert-acm'],
[/优秀共青团员/, 'cert-wusi'],
];