feat(automod): render sticker, role & user names in moderation views
QoL lanjutan dari fix60084b3: content pesan mentah masih nampilin snowflake (<@&roleid>, <@userid>, <:emoji:id>) di log moderasi dan prompt LLM. Sekarang dirender ke nama yang bisa dibaca: - Gateway capture: metadata menyimpan mentionedRoles + mentionedUsers (id+name) dari message.mentions, disimpan ke metadata JSON - renderDiscordMentions(): <@&id> -> @RoleName, <@id> -> @Username, <:name:id> -> :name:, fallback @role/@user — dipakai di conversationContext (konteks LLM) dan moderationBuilders (getAnalysisContent) sehingga LLM lihat nama role/user beneran, bukan placeholder generik - Frontend renderMessageContent() (mirror gateway) dipasang di semua tempat nampilin content: message-card, message-detail(-view), search-overlay, search-panel, users/channels section, live-stream, mod-queue, review list; sticker-only message tetap [Sticker: name], pesan teks+sticker kini ikut nampilin nama sticker - tsc --noEmit PASS di gateway & frontend; renderDiscordMentions diverifikasi manual (6 kasus: role/user/emoji/unknown/plain)
This commit is contained in:
@@ -4,7 +4,7 @@ import { Search, X } from "lucide-react";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
import { useQuery } from "@tanstack/react-query";
|
||||
import { messagesApi } from "@/lib/api";
|
||||
import { getMessageChannelLabel } from "@/lib/format";
|
||||
import { getMessageChannelLabel, renderMessageContent } from "@/lib/format";
|
||||
import type { MessageRecord } from "@/lib/types";
|
||||
|
||||
interface SearchOverlayProps {
|
||||
@@ -86,7 +86,7 @@ export function SearchOverlay({ open, onClose, onSelect }: SearchOverlayProps) {
|
||||
<span className="font-medium text-text-primary">{msg.username}</span>
|
||||
<span className="text-text-secondary/40">{getMessageChannelLabel(msg)}</span>
|
||||
</div>
|
||||
<p className="text-xs text-text-secondary/80 line-clamp-1 mt-0.5">{msg.content}</p>
|
||||
<p className="text-xs text-text-secondary/80 line-clamp-1 mt-0.5">{renderMessageContent(msg.content, msg.metadata)}</p>
|
||||
</button>
|
||||
))
|
||||
)}
|
||||
|
||||
Reference in New Issue
Block a user