+
{group.rows.map((row, rowIndex) => {
@@ -366,16 +374,12 @@ export const OpportunityTable = React.memo(function OpportunityTable({
const selected = selectedRowId === row.id;
const side = String(row.side || "").toLowerCase();
const modelProbability =
- row.model_probability != null
- ? row.model_probability * 100
+ row.raw_model_event_probability != null
+ ? row.raw_model_event_probability * 100
: row.model_event_probability != null
? row.model_event_probability * 100
: null;
- const modelLabel = row.cluster_adjusted
- ? isEn
- ? "Model"
- : "模型"
- : "EMOS";
+ const modelLabel = "EMOS";
const priceLabel = side === "no" ? "NO" : isEn ? "Market" : "市场";
const edgePositive = Number(row.edge_percent || 0) >= 0;
const aiMeta = getAiMeta(row, locale);
diff --git a/frontend/components/dashboard/ScanTerminalDashboard.tsx b/frontend/components/dashboard/ScanTerminalDashboard.tsx
index affcb7a5..74ff37ee 100644
--- a/frontend/components/dashboard/ScanTerminalDashboard.tsx
+++ b/frontend/components/dashboard/ScanTerminalDashboard.tsx
@@ -226,27 +226,11 @@ function CalendarView({
);
}
-function OverviewMapView({ locale }: { locale: string }) {
- const store = useDashboardStore();
-
- return (
-
-
-
-
-
- {locale === "en-US"
- ? `Monitoring ${store.cities.length} cities on the original map canvas.`
- : `正在用原地图画布监控 ${store.cities.length} 个城市。`}
-
-
- );
-}
-
function ScanTerminalScreen() {
const store = useDashboardStore();
const { locale, toggleLocale } = useI18n();
const isEn = locale === "en-US";
+ const isPro = store.proAccess.subscriptionActive;
const accountHref = store.proAccess.authenticated
? "/account"
: "/auth/login?next=%2Faccount";
@@ -368,7 +352,7 @@ function ScanTerminalScreen() {
]);
const fetchTerminal = async (filters: FilterState, force = false) => {
- if (!store.proAccess.subscriptionActive) return;
+ if (!isPro) return;
setLoading(true);
setAiError(null);
try {
@@ -419,17 +403,23 @@ function ScanTerminalScreen() {
};
useEffect(() => {
- if (!store.proAccess.subscriptionActive) return;
+ if (!isPro) return;
void fetchTerminal(DEFAULT_FILTERS, false);
- }, [store.proAccess.subscriptionActive]);
+ }, [isPro]);
useEffect(() => {
- if (!store.proAccess.subscriptionActive) return;
+ if (!isPro) return;
const intervalId = window.setInterval(() => {
void fetchTerminal(activeFilters, false);
}, SCAN_AUTO_REFRESH_MS);
return () => window.clearInterval(intervalId);
- }, [activeFilters, store.proAccess.subscriptionActive]);
+ }, [activeFilters, isPro]);
+
+ useEffect(() => {
+ if (!isPro && activeView !== "map") {
+ setActiveView("map");
+ }
+ }, [activeView, isPro]);
useEffect(() => {
setUserLocalTime(formatUserLocalTime());
@@ -510,10 +500,21 @@ function ScanTerminalScreen() {
selectionMode="select"
/>
-
- {locale === "en-US"
- ? `Monitoring ${store.cities.length} cities on the original map canvas.`
- : `正在用原地图画布监控 ${store.cities.length} 个城市。`}
+
+ );
+ }
+ if (!isPro) {
+ return (
+
+
+
+ {isEn ? "Scan is available on Pro" : "扫描功能需 Pro 权限"}
+
+
+ {isEn
+ ? "Distribution view and city briefing remain available."
+ : "分布视图和右侧城市简报仍可查看。"}
+
);
@@ -560,53 +561,6 @@ function ScanTerminalScreen() {
);
}
- if (!store.proAccess.subscriptionActive) {
- return (
-
-
-
-
-
- {isEn ? "Market Scan Terminal" : "市场扫描台"}
- {isEn ? "Pro access required" : "需要 Pro 权限"}
-
-
-
-
-
- {store.proAccess.authenticated
- ? isEn ? "Upgrade Pro" : "升级 Pro"
- : isEn ? "Sign in" : "登录"}
-
-
-
-
-
-
- {isEn ? "Market scan is a Pro feature" : "市场扫描是 Pro 功能"}
-
-
- {isEn
- ? "Free accounts do not trigger rule scans or V4-Flash scans."
- : "免费用户不会触发规则扫描,也不会消耗 V4-Flash 扫描资源。"}
-
-
-
-
-
-
- );
- }
-
return (
@@ -624,8 +578,12 @@ function ScanTerminalScreen() {
? "Showing the last successful snapshot"
: "当前显示上次成功快照"
: isEn
- ? "Read-only market scan with peak-first main signal"
- : "只读市场扫描,主信号按 EMOS 主峰优先"}
+ ? isPro
+ ? "Read-only market scan with peak-first main signal"
+ : "Free preview: distribution view and city briefing"
+ : isPro
+ ? "只读市场扫描,主信号按 EMOS 主峰优先"
+ : "免费预览:分布视图和城市简报可查看"}
@@ -642,37 +600,48 @@ function ScanTerminalScreen() {
{userLocalTime}
-
-
+ {isPro ? (
+ <>
+
+
+ >
+ ) : (
+
+
+ {store.proAccess.authenticated
+ ? isEn ? "Upgrade Pro" : "升级 Pro"
+ : isEn ? "Sign in" : "登录"}
+
+ )}
-
+ {isPro ? (
+
+ ) : null}
-
+ {isPro ? (
+
+ ) : null}
@@ -719,7 +692,10 @@ function ScanTerminalScreen() {