确认PokieTicker新闻库数据源

This commit is contained in:
2026-03-16 02:19:25 +08:00
parent 78f133617f
commit 564c92c0c8
182 changed files with 6436 additions and 1050 deletions

View File

@@ -3,6 +3,88 @@ import { AGENTS } from "../config/constants";
const MAX_FEED_ITEMS = 200;
const normalizeSystemContent = (content) => {
if (typeof content !== "string") {
return content;
}
const trimmed = content.trim();
if (!trimmed) {
return trimmed;
}
if (trimmed === "Runtime assets reloaded." || trimmed === "运行时配置已热更新") {
return "配置已刷新";
}
if (trimmed.startsWith("Watchlist updated:")) {
const symbols = trimmed.replace("Watchlist updated:", "").trim();
return symbols ? `自选已更新: ${symbols}` : "自选已更新";
}
if (trimmed === "已连接实时数据服务") {
return "已连接";
}
if (trimmed === "正在尝试连接数据服务...") {
return "连接中...";
}
if (trimmed.startsWith("day_start:")) {
const value = trimmed.replace("day_start:", "").trim();
return value ? `交易日开始:${value}` : "交易日开始";
}
if (trimmed.startsWith("day_complete:")) {
const value = trimmed.replace("day_complete:", "").trim();
return value ? `交易日结束:${value}` : "交易日结束";
}
if (trimmed.startsWith("day_error:")) {
const value = trimmed.replace("day_error:", "").trim();
return value ? `交易日异常:${value}` : "交易日异常";
}
return trimmed;
};
const normalizeConferenceTitle = (title) => {
if (typeof title !== "string") {
return "投资讨论";
}
const trimmed = title.trim();
if (!trimmed) {
return "投资讨论";
}
if (trimmed.startsWith("Investment Discussion -")) {
const date = trimmed.replace("Investment Discussion -", "").trim();
return date ? `投资讨论 · ${date}` : "投资讨论";
}
if (trimmed === "Team Conference") {
return "投资讨论";
}
return trimmed;
};
const normalizeAgentLabel = (agentName, agentId) => {
if (typeof agentName === "string") {
const trimmed = agentName.trim();
if (trimmed.toLowerCase() === "conference summary") {
return "会议总结";
}
}
if (typeof agentId === "string" && agentId.trim().toLowerCase() === "conference summary") {
return "会议总结";
}
return agentName;
};
/**
* Generate a unique ID for feed items
*/
@@ -26,7 +108,7 @@ const eventToMessage = (evt) => {
id: generateId("msg"),
timestamp,
agentId: evt.agentId,
agent: agent?.name || evt.agentName || evt.agentId || "Agent",
agent: normalizeAgentLabel(agent?.name || evt.agentName || evt.agentId || "Agent", evt.agentId),
role: agent?.role || evt.role || "Agent",
content: evt.content
};
@@ -50,7 +132,7 @@ const eventToMessage = (evt) => {
timestamp,
agent: "System",
role: "System",
content: evt.content || `${evt.type}: ${evt.date || ""}`
content: normalizeSystemContent(evt.content || `${evt.type}: ${evt.date || ""}`)
};
default:
@@ -129,7 +211,7 @@ export function useFeedProcessor() {
// Start a new conference
currentConference = {
id: evt.conferenceId || generateId("conf"),
title: evt.title || "Team Conference",
title: normalizeConferenceTitle(evt.title || "Team Conference"),
startTime: evt.timestamp || evt.ts || Date.now(),
endTime: null,
isLive: false,
@@ -209,7 +291,7 @@ export function useFeedProcessor() {
if (evt.type === "conference_start") {
const conference = {
id: evt.conferenceId || generateId("conf"),
title: evt.title || "Team Conference",
title: normalizeConferenceTitle(evt.title || "Team Conference"),
startTime: evt.timestamp || evt.ts || Date.now(),
endTime: null,
isLive: true,
@@ -312,7 +394,7 @@ export function useFeedProcessor() {
timestamp: Date.now(),
agent: "System",
role: "System",
content
content: normalizeSystemContent(content)
};
const activeConf = activeConferenceRef.current;