移动端城市列表移除可交易城市过滤,始终显示全部监测城市

Constraint: MobileCityPicker 数据源仅使用 store.cities
Scope-risk: 仅影响 cityListRows 构建逻辑
This commit is contained in:
2569718930@qq.com
2026-05-22 04:23:36 +08:00
parent dc164205f6
commit 5e0dc3ec53
@@ -128,42 +128,43 @@ function ScanTerminalScreen() {
[terminalData?.rows],
);
const cityListRows = useMemo(() => {
if (timeSortedRows.length > 0) return timeSortedRows;
return store.cities.map((city, index) => {
const cityKey = normalizeCityKey(city.name);
const summary =
store.citySummariesByName[cityKey] ??
Object.values(store.citySummariesByName).find(
(s) => normalizeCityKey(s?.name) === cityKey,
) ??
null;
return {
id: `city-fallback:${cityKey}:${index}`,
city: cityKey,
city_display_name: city.display_name || city.name,
display_name: city.display_name || city.name,
temp_symbol: city.temp_unit === "fahrenheit" ? "°F" : "°C",
current_temp: summary?.current?.temp ?? null,
current_max_so_far: summary?.current?.temp ?? null,
deb_prediction: summary?.deb?.prediction ?? null,
airport: city.airport || null,
local_time: summary?.local_time ?? null,
risk_level: city.risk_level || "low",
market_slug: null,
market_question: null,
target_label: null,
side: null,
edge_percent: null,
final_score: null,
window_phase: null,
tradable: false,
active: false,
closed: false,
accepting_orders: false,
} satisfies ScanOpportunityRow;
});
}, [timeSortedRows, store.cities, store.citySummariesByName]);
const cityListRows = useMemo(
() =>
store.cities.map((city, index) => {
const cityKey = normalizeCityKey(city.name);
const summary =
store.citySummariesByName[cityKey] ??
Object.values(store.citySummariesByName).find(
(s) => normalizeCityKey(s?.name) === cityKey,
) ??
null;
return {
id: `city-fallback:${cityKey}:${index}`,
city: cityKey,
city_display_name: city.display_name || city.name,
display_name: city.display_name || city.name,
temp_symbol: city.temp_unit === "fahrenheit" ? "°F" : "°C",
current_temp: summary?.current?.temp ?? null,
current_max_so_far: summary?.current?.temp ?? null,
deb_prediction: summary?.deb?.prediction ?? null,
airport: city.airport || null,
local_time: summary?.local_time ?? null,
risk_level: city.risk_level || "low",
market_slug: null,
market_question: null,
target_label: null,
side: null,
edge_percent: null,
final_score: null,
window_phase: null,
tradable: false,
active: false,
closed: false,
accepting_orders: false,
} satisfies ScanOpportunityRow;
}),
[store.cities, store.citySummariesByName],
);
const {
addAiPinnedCity,
aiPinnedCities,