lfqian commited on
Commit
4258b89
·
1 Parent(s): 65ab199

Fix agent end_date: query DB for latest date per agent to ensure accuracy

Browse files
Files changed (1) hide show
  1. src/lib/dataService.js +26 -1
src/lib/dataService.js CHANGED
@@ -323,7 +323,7 @@ class DataService {
323
  .sort()
324
  const start_date = dates[0] || '-'
325
 
326
- // 使用 seqFiltered 的最后一条记录的日期作为 end_date,确保是实际数据的最后一天
327
  let end_date = '-'
328
  if (seqFiltered.length > 0) {
329
  const lastRow = seqFiltered[seqFiltered.length - 1]
@@ -332,6 +332,31 @@ class DataService {
332
  end_date = dates[dates.length - 1]
333
  }
334
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
335
  console.log(`[DataService] STEP3 - ${row.agent_name}|${row.asset}|${row.model}: Final end_date = ${end_date}, dates array length = ${dates.length}, seqFiltered length = ${seqFiltered.length}`)
336
  if (seqFiltered.length > 0) {
337
  const lastRowDate = seqFiltered[seqFiltered.length - 1].dateNormalized || (typeof seqFiltered[seqFiltered.length - 1].date === 'string' ? seqFiltered[seqFiltered.length - 1].date.split('T')[0] : seqFiltered[seqFiltered.length - 1].date)
 
323
  .sort()
324
  const start_date = dates[0] || '-'
325
 
326
+ // 计算 end_date:先从已获取的数据计算,然后查询数据库获取该 agent 的最新日期
327
  let end_date = '-'
328
  if (seqFiltered.length > 0) {
329
  const lastRow = seqFiltered[seqFiltered.length - 1]
 
332
  end_date = dates[dates.length - 1]
333
  }
334
 
335
+ // 查询数据库获取该 agent 的最新日期,确保 end_date 是最新的
336
+ try {
337
+ const { data: agentMaxDateData, error: agentMaxDateError } = await supabase
338
+ .from('trading_decisions')
339
+ .select('date')
340
+ .eq('agent_name', row.agent_name)
341
+ .eq('asset', row.asset)
342
+ .eq('model', row.model)
343
+ .order('date', { ascending: false })
344
+ .limit(1)
345
+
346
+ if (!agentMaxDateError && agentMaxDateData && agentMaxDateData.length > 0) {
347
+ const dbAgentMaxDate = agentMaxDateData[0].date
348
+ const dbAgentMaxDateStr = typeof dbAgentMaxDate === 'string' ? dbAgentMaxDate.split('T')[0] : dbAgentMaxDate
349
+
350
+ // 如果数据库中的日期更新,使用数据库的日期
351
+ if (dbAgentMaxDateStr && (!end_date || end_date === '-' || dbAgentMaxDateStr > end_date)) {
352
+ console.log(`[DataService] STEP3.5 - ${row.agent_name}|${row.asset}|${row.model}: DB has newer date ${dbAgentMaxDateStr} than calculated ${end_date}, using DB date`)
353
+ end_date = dbAgentMaxDateStr
354
+ }
355
+ }
356
+ } catch (e) {
357
+ console.error(`[DataService] Error querying DB for agent max date:`, e)
358
+ }
359
+
360
  console.log(`[DataService] STEP3 - ${row.agent_name}|${row.asset}|${row.model}: Final end_date = ${end_date}, dates array length = ${dates.length}, seqFiltered length = ${seqFiltered.length}`)
361
  if (seqFiltered.length > 0) {
362
  const lastRowDate = seqFiltered[seqFiltered.length - 1].dateNormalized || (typeof seqFiltered[seqFiltered.length - 1].date === 'string' ? seqFiltered[seqFiltered.length - 1].date.split('T')[0] : seqFiltered[seqFiltered.length - 1].date)