This commit is contained in:
MarkLo127 2026-03-10 09:05:46 +08:00
parent 2b3a0e7daa
commit f3cfe21230
2 changed files with 19 additions and 4 deletions

View File

@ -166,7 +166,7 @@ async def get_reports(
market_type=r.market_type,
analysis_date=r.analysis_date,
result=r.result,
created_at=r.created_at.isoformat()
created_at=r.created_at.isoformat() + "Z"
)
for r in reports
]
@ -223,7 +223,7 @@ async def get_report(
market_type=report.market_type,
analysis_date=report.analysis_date,
result=report.result,
created_at=report.created_at.isoformat()
created_at=report.created_at.isoformat() + "Z"
)

View File

@ -345,6 +345,21 @@ const detectReportLanguage = (reports: any): "en" | "zh-TW" => {
return chineseRegex.test(traderPlan) ? "zh-TW" : "en";
};
/**
* Parse a date string from the backend as UTC.
* Backend stores created_at in UTC but may not always include timezone info.
* This ensures the date is correctly interpreted as UTC so the browser
* converts it to the user's local timezone for display.
*/
const parseUTCDate = (dateStr: string): Date => {
// If the string already has timezone info (Z, +, or - offset), parse directly
if (dateStr.endsWith('Z') || /[+-]\d{2}:\d{2}$/.test(dateStr)) {
return new Date(dateStr);
}
// Otherwise, append 'Z' to treat as UTC
return new Date(dateStr + 'Z');
};
export default function HistoryPage() {
const router = useRouter();
const { setAnalysisResult, setTaskId, setMarketType } = useAnalysisContext();
@ -474,7 +489,7 @@ export default function HistoryPage() {
ticker: r.ticker,
market_type: r.market_type as "us" | "twse" | "tpex",
analysis_date: r.analysis_date,
saved_at: new Date(r.created_at),
saved_at: parseUTCDate(r.created_at),
result: r.result,
language: r.language, // Include language from cloud
})) as (SavedReport & { cloudId?: string })[];
@ -577,7 +592,7 @@ export default function HistoryPage() {
ticker: r.ticker,
market_type: r.market_type as "us" | "twse" | "tpex",
analysis_date: r.analysis_date,
saved_at: new Date(r.created_at),
saved_at: parseUTCDate(r.created_at),
result: r.result,
language: r.language,
})) as SavedReport[];