fix: validate signatures and restore report metrics

This commit is contained in:
hectorzhao
2026-07-27 20:51:14 +08:00
parent 04a497c791
commit 94aeacd3a2
19 changed files with 438 additions and 42 deletions
+19 -2
View File
@@ -1,4 +1,7 @@
const LEADING_SMS_SIGNATURE = /^【[^】]+】/;
const FORBIDDEN_SMS_SIGNATURE_CHARACTER = /[\p{White_Space}\p{Cc}\p{Default_Ignorable_Code_Point}]/u;
export const SMS_SIGNATURE_CHARACTER_ERROR = '短信签名不能包含空格、换行或不可见字符';
export const SMS_SIGNATURE_FORMAT_ERROR = '必须填写完整中文黑括号签名,例如:【某某科技】';
export function formatSmsSignature(name?: string | null) {
const innerName = (name ?? '').trim().replace(/^[【\[]+|[】\]]+$/g, '').trim();
@@ -6,9 +9,23 @@ export function formatSmsSignature(name?: string | null) {
}
export function isCompleteSmsSignature(name?: string | null) {
const value = (name ?? '').trim();
return getSmsSignatureValidationError(name) === undefined;
}
export function hasForbiddenSmsSignatureCharacter(name?: string | null) {
return FORBIDDEN_SMS_SIGNATURE_CHARACTER.test(name ?? '');
}
export function getSmsSignatureValidationError(name?: string | null) {
const value = name ?? '';
if (!value) {
return SMS_SIGNATURE_FORMAT_ERROR;
}
if (hasForbiddenSmsSignatureCharacter(value)) {
return SMS_SIGNATURE_CHARACTER_ERROR;
}
const match = value.match(/^【([^【】]+)】$/);
return Boolean(match && match[1] === match[1].trim());
return match ? undefined : SMS_SIGNATURE_FORMAT_ERROR;
}
export function replaceLeadingSmsSignature(content: string, signatureName?: string | null) {