import { z } from "zod"; export const consultationReplyMetadataSchema = z.object({ title: z.string().trim().min(1).max(64), }).strict(); export type ConsultationReplyMetadata = z.infer; function safeQuestionTitle(question: string) { const normalized = question .replace(/\s+/g, " ") .trim() .replace(/[??!!。.,,;;::]+$/u, "") .replace(/[\p{P}\p{S}]/gu, "") .trim(); if (!normalized) return "一般占星咨询"; const characters = Array.from(normalized); if (characters.length >= 6) return characters.slice(0, 14).join(""); return `${characters.join("")}主题咨询`.slice(0, 14); } export function createConsultationReplyMetadata(input: { question: string }): ConsultationReplyMetadata { return consultationReplyMetadataSchema.parse({ title: safeQuestionTitle(input.question) }); }