复盘页添加日期选择功能

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-07-06 15:04:01 +08:00
parent 267b8557e8
commit c1fa0461c1
+6 -5
View File
@@ -19,6 +19,7 @@ import { api, type OverviewMarket, type AiReviewReport } from '@/lib/api'
import { QK } from '@/lib/queryKeys' import { QK } from '@/lib/queryKeys'
import { cn } from '@/lib/cn' import { cn } from '@/lib/cn'
import { fmtBigNum } from '@/lib/format' import { fmtBigNum } from '@/lib/format'
import { DatePicker } from '@/components/DatePicker'
import { PageHeader } from '@/components/PageHeader' import { PageHeader } from '@/components/PageHeader'
import { MarkdownRenderer } from '@/components/financials/MarkdownRenderer' import { MarkdownRenderer } from '@/components/financials/MarkdownRenderer'
import { toast } from '@/components/Toast' import { toast } from '@/components/Toast'
@@ -67,8 +68,7 @@ function fmtArchivedAt(iso: string): string {
export function Review() { export function Review() {
const qc = useQueryClient() const qc = useQueryClient()
// 复盘日期:当前固定取最新交易日(后续如需日期选择可改回 useState) const [asOf, setAsOf] = useState('')
const asOf: string | undefined = undefined
const [focus, setFocus] = useState('') const [focus, setFocus] = useState('')
// 生成状态走全局 store:切走页面流不中断,回来可恢复 // 生成状态走全局 store:切走页面流不中断,回来可恢复
const { phase, content, error, meta } = useReviewState() const { phase, content, error, meta } = useReviewState()
@@ -77,8 +77,8 @@ export function Review() {
// 看板数据(与总览页同源) // 看板数据(与总览页同源)
const marketQuery = useQuery<OverviewMarket>({ const marketQuery = useQuery<OverviewMarket>({
queryKey: QK.overviewMarket(asOf), queryKey: QK.overviewMarket(asOf || undefined),
queryFn: () => api.overviewMarket(asOf), queryFn: () => api.overviewMarket(asOf || undefined),
staleTime: 5_000, staleTime: 5_000,
placeholderData: (prev) => prev, placeholderData: (prev) => prev,
}) })
@@ -138,7 +138,7 @@ export function Review() {
if (isReviewGenerating()) return if (isReviewGenerating()) return
setViewing(null) setViewing(null)
resetReview() resetReview()
startReviewGeneration(asOf, focus, (full, doneMeta) => { startReviewGeneration(asOf || undefined, focus, (full, doneMeta) => {
onGenerationDone(full, doneMeta).catch(() => { /* 静默 */ }) onGenerationDone(full, doneMeta).catch(() => { /* 静默 */ })
}) })
}, [asOf, focus, onGenerationDone]) }, [asOf, focus, onGenerationDone])
@@ -190,6 +190,7 @@ export function Review() {
subtitle={`${displayDate}${data?.emotion ? ` · 情绪 ${data.emotion.label}` : ''}`} subtitle={`${displayDate}${data?.emotion ? ` · 情绪 ${data.emotion.label}` : ''}`}
right={ right={
<div className="flex items-center gap-1"> <div className="flex items-center gap-1">
<DatePicker value={asOf} onChange={setAsOf} className="w-28" />
<button <button
onClick={() => { marketQuery.refetch() }} onClick={() => { marketQuery.refetch() }}
disabled={marketQuery.isFetching} disabled={marketQuery.isFetching}