de107f2673
AiPinnedForecastView had become a mini application that owned list state, card shell, freshness, market, AI evidence, and model evidence rendering in one place. This split keeps the workspace wrapper thin and gives the decision card explicit product-component seams for future recommendation reasons, risk levels, and mobile-specific layout work. Constraint: Preserve existing weather, market, AI read, chart, refresh, remove, collapse, and mobile behavior. Rejected: Rewrite the decision-state construction in the same pass | this component split should stay behavior-preserving before a state-model refactor. Confidence: high Scope-risk: moderate Reversibility: clean Tested: npm run build Not-tested: Browser visual regression on physical mobile devices.
22 lines
560 B
TypeScript
22 lines
560 B
TypeScript
"use client";
|
|
|
|
import { ModelForecast } from "@/components/dashboard/PanelSections";
|
|
import type { CityDetail } from "@/lib/dashboard-types";
|
|
|
|
export function ModelEvidencePanel({
|
|
detail,
|
|
isEn,
|
|
}: {
|
|
detail: CityDetail;
|
|
isEn: boolean;
|
|
}) {
|
|
return (
|
|
<section className="scan-ai-city-section models">
|
|
<div className="scan-ai-city-section-title">
|
|
{isEn ? "Evidence · multi-model support" : "证据 · 多模型支撑"}
|
|
</div>
|
|
<ModelForecast detail={detail} targetDate={detail.local_date} hideTitle />
|
|
</section>
|
|
);
|
|
}
|