feat:优化评分网页,可关闭状态看板

This commit is contained in:
SengokuCola
2026-04-19 01:43:27 +08:00
parent 4924b70184
commit 32fa254c45
25 changed files with 392 additions and 6337 deletions

View File

@@ -66,6 +66,7 @@ class FollowupMessageSnapshot:
plain_text: str
latency_seconds: float
is_target_user: bool
quote_target_ids: List[str] = field(default_factory=list)
attachments: List[Dict[str, Any]] = field(default_factory=list)

View File

@@ -0,0 +1,32 @@
"""回复效果记录中的引用消息辅助工具。"""
from typing import Any
from src.common.data_models.message_component_data_model import MessageSequence, ReplyComponent
def extract_quote_target_ids(message_sequence: MessageSequence | None) -> list[str]:
"""从消息片段中提取引用回复目标消息 ID。"""
if message_sequence is None:
return []
target_ids: list[str] = []
for component in getattr(message_sequence, "components", []):
if not isinstance(component, ReplyComponent):
continue
target_message_id = str(component.target_message_id or "").strip()
if target_message_id:
target_ids.append(target_message_id)
return target_ids
def message_id_from_context_message(message: Any) -> str:
"""尽量从 Maisaka 上下文消息中取真实消息 ID。"""
message_id = str(getattr(message, "message_id", "") or "").strip()
if message_id:
return message_id
original_message = getattr(message, "original_message", None)
return str(getattr(original_message, "message_id", "") or "").strip()

View File

@@ -23,6 +23,7 @@ from .models import (
UserSnapshot,
now_iso,
)
from .quote_utils import extract_quote_target_ids
from .path_utils import build_reply_effect_chat_dir_name
from .scoring import (
has_explicit_negative_feedback,
@@ -190,6 +191,7 @@ class ReplyEffectTracker:
plain_text=plain_text,
latency_seconds=round(latency_seconds, 3),
is_target_user=bool(record.target_user.user_id and user_id == record.target_user.user_id),
quote_target_ids=extract_quote_target_ids(message.raw_message),
attachments=extract_visual_attachments_from_sequence(message.raw_message),
)