Spaces:
Running
Running
Fix agent end_date: query DB for latest date per agent to ensure accuracy
Browse files- 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 |
-
//
|
| 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)
|