fix(card): 修复微官网图片404与中文字符集编码问题,增加no-referrer防盗链支持

这个提交包含在:
wikiboss
2026-09-23 11:56:30 +08:00
父节点 b442179b58
当前提交 2738c4b8db
共有 4 个文件被更改,包括 224 次插入 和 207 次删除

查看文件

@@ -32,8 +32,9 @@ describe('多张多媒体名片数据 (配图与配视频) 规格与集成测试
expect(card.slogan).toBeTruthy();
expect(card.status).toBe('published');
// 配图验证:头像必须是合法图片 URL (http/https)
expect(card.avatarUrl).toMatch(/^https?:\/\/.+\.(png|jpe?g|webp|svg)(\?.*)?$/i);
// 配图验证:头像必须是合法图片 URL (支持扩展名与真实 Unsplash 原生路径)
const validImagePattern = /^https?:\/\/.+(\.(png|jpe?g|webp|svg)(\?.*)?|\/photo-[a-zA-Z0-9_-]+(\?.*)?)$/i;
expect(card.avatarUrl).toMatch(validImagePattern);
// 国际化联系方式
expect(card.phone).toMatch(/^\+[1-9]\d{1,14}$/); // E.164 规范
@@ -55,7 +56,8 @@ describe('多张多媒体名片数据 (配图与配视频) 规格与集成测试
videoBlocks.forEach(videoBlock => {
expect(videoBlock.title).toBeTruthy();
expect(videoBlock.mediaUrl).toMatch(/^https?:\/\/.+\.(png|jpe?g|webp)(\?.*)?$/i);
const validImagePattern = /^https?:\/\/.+(\.(png|jpe?g|webp|svg)(\?.*)?|\/photo-[a-zA-Z0-9_-]+(\?.*)?)$/i;
expect(videoBlock.mediaUrl).toMatch(validImagePattern);
let videoUrl = videoBlock.linkUrl;
if (typeof videoBlock.metaJson === 'object' && videoBlock.metaJson !== null) {
videoUrl = (videoBlock.metaJson as any).videoUrl || videoUrl;
@@ -73,6 +75,7 @@ describe('多张多媒体名片数据 (配图与配视频) 规格与集成测试
});
it('4. 每张名片必须包含图文案例与文章,且配置了真实多媒体封面配图与量化商业指标', () => {
const validImagePattern = /^https?:\/\/.+(\.(png|jpe?g|webp|svg)(\?.*)?|\/photo-[a-zA-Z0-9_-]+(\?.*)?)$/i;
MOCK_CARDS_DATA.forEach((bundle: MockCardBundle) => {
// 检查案例 (每个名片至少 2 个标杆产品相册与案例)
expect(Array.isArray(bundle.cases)).toBe(true);
@@ -82,7 +85,7 @@ describe('多张多媒体名片数据 (配图与配视频) 规格与集成测试
expect(c.client).toBeTruthy();
expect(c.metrics).toBeTruthy(); // 必须包含量化商业成果
expect(c.description).toBeTruthy();
expect(c.coverImage).toMatch(/^https?:\/\/.+\.(png|jpe?g|webp)(\?.*)?$/i);
expect(c.coverImage).toMatch(validImagePattern);
// 验证产品相册多图画廊 (metaJson.images 必须存在且至少 3 张高清产品/场景图)
let meta = c.metaJson;
@@ -94,7 +97,7 @@ describe('多张多媒体名片数据 (配图与配视频) 规格与集成测试
expect(Array.isArray(images)).toBe(true);
expect(images.length).toBeGreaterThanOrEqual(3);
images.forEach((img: string) => {
expect(img).toMatch(/^https?:\/\/.+\.(png|jpe?g|webp)(\?.*)?$/i);
expect(img).toMatch(validImagePattern);
});
// 验证结构化 KPI (metaJson.kpis 必须存在且至少 2 个指标)
@@ -110,7 +113,7 @@ describe('多张多媒体名片数据 (配图与配视频) 规格与集成测试
expect(a.title).toBeTruthy();
expect(a.summary).toBeTruthy();
expect(a.content).toBeTruthy();
expect(a.coverImage).toMatch(/^https?:\/\/.+\.(png|jpe?g|webp)(\?.*)?$/i);
expect(a.coverImage).toMatch(validImagePattern);
});
});
});