chore: 更新素材和组件优化

- 更新展品图片(鲁迅/毛泽东/孙中山/黄炎培/聂耳/张乐平故居)
- 新增点击查看图标、报纸素材
- 优化视频组件、拼图组件、展品组件
- 更新陈云音频资源
- 新增输入验证文档和工具函数
- 组件布局和动画优化

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
zhongyidianandClaude Opus 4.8 committed 2026-06-21 21:50:40 +08:00
1 parent 73d02eb62d
commit 73f6df92ce
130 files changed
+2345 -759

No files matched your search

+105 -5
View File
@@ -5,20 +5,56 @@
// 敏感词库(可根据实际需求扩展)
const SENSITIVE_WORDS = [
// 基础不文明用语
'垃圾',
'脏话',
'骂人',
'辱骂',
'仇恨',
'傻逼',
'煞笔',
'傻b',
'傻比',
'sb',
'SB',
'草泥马',
'操',
'妈的',
'他妈',
'你妈',
'去死',
'找死',
'该死',
'白痴',
'智障',
'弱智',
'脑残',
'废物',
'贱',
'滚',
// 暴力相关
'暴力',
'恐怖',
'杀人',
'杀害',
'血腥',
'虐待',
// 违法违规
'色情',
'赌博',
'诈骗',
'毒品',
'邪教',
'反动',
'辱骂',
'仇恨',
'sb',
'法轮功',
'传销',
'洗钱',
'贩毒',
'走私',
// 歧视性用语
'歧视',
'种族',
'民族歧视',
]
type FileSaveHandle = {
@@ -78,6 +114,28 @@ export async function downloadDataUrlImage(dataUrl: string, filename: string): P
triggerAnchorDownload(blob, filename)
}
/**
* 检查文本中是否包含英文字母
*/
export function containsEnglish(text: string): boolean {
return /[a-zA-Z]/.test(text)
}
/**
* 检查文本中是否包含数字
*/
export function containsNumber(text: string): boolean {
return /\d/.test(text)
}
/**
* 检查文本中是否包含特殊符号或标点符号
*/
export function containsSpecialChars(text: string): boolean {
// 检测所有标点符号和特殊符号(包括中文标点)
return /[\p{P}\p{S}]/u.test(text)
}
/**
* 检查文本中是否包含敏感词
* @param text 待检查的文本
@@ -117,8 +175,50 @@ export function filterSensitiveWords(text: string): string {
export function filterInput(input: string): string {
if (!input) return input
// 先进行敏感词过滤
const filtered = filterSensitiveWords(input)
let filtered = input
// 过滤英文字母
filtered = filtered.replace(/[a-zA-Z]/g, '')
// 过滤数字
filtered = filtered.replace(/\d/g, '')
// 过滤所有标点符号和特殊符号
// 保留:中文字符、空格
// 过滤:所有标点符号(包括中文标点和英文标点)、特殊符号
filtered = filtered.replace(/[\p{P}\p{S}]/gu, '')
// 进行敏感词过滤(替换为星号,不直接删除)
filtered = filterSensitiveWords(filtered)
return filtered
}
/**
* 验证输入内容的完整性
* @param input 用户输入的内容
* @returns 验证结果 { valid: boolean, message: string }
*/
export function validateInput(input: string): { valid: boolean; message: string } {
if (!input || !input.trim()) {
return { valid: false, message: '内容不能为空' }
}
if (containsEnglish(input)) {
return { valid: false, message: '不能包含英文字母' }
}
if (containsNumber(input)) {
return { valid: false, message: '不能包含数字' }
}
if (containsSpecialChars(input)) {
return { valid: false, message: '不能包含特殊符号' }
}
if (containsSensitiveWord(input)) {
return { valid: false, message: '内容包含敏感词,请修改后重试' }
}
return { valid: true, message: '' }
}