feat: multimodal video detection + reply/forward/crosspost + batch optimization

- Video frame extraction via ffmpeg (4 key frames per video → vision LLM)
- Video display in FE MessageCard with HTML5 <video> player
- Reply/forward/crosspost indicator in FE + pipeline in DG/BE
- Fix: missing sanitizeAiContent + escapeXml in media path (prompt injection)
- Optimize: text-only batch results saved to DB immediately, no longer wait for media analysis
- BE mapper/schema/repo: add reference fields (is_reply, is_forward, etc.)
This commit is contained in:
MythEclipse
2026-06-22 09:46:06 +07:00
parent dc62b283c0
commit f502918b27
7 changed files with 261 additions and 48 deletions
@@ -19,6 +19,12 @@ export const messageCreateSchema = z.object({
avatarUrl: z.string().optional(),
content: z.string(),
type: z.enum(["text", "edited", "deleted"]).default("text"),
isReply: z.boolean().optional(),
isForward: z.boolean().optional(),
isCrosspost: z.boolean().optional(),
referenceMessageId: z.string().optional(),
referenceChannelId: z.string().optional(),
referenceGuildId: z.string().optional(),
});
export const messageUpdateSchema = z.object({