当队列为空时,需要检查state.tasks中的任务是否都已完成
This commit is contained in:
parent
ae22ffd36e
commit
a96006ae15
|
|
@ -119,7 +119,7 @@ reportTurn(sessionId, assistantMessage.uuid, cwd)
|
||||||
| 字段 | 来源 | 说明 |
|
| 字段 | 来源 | 说明 |
|
||||||
|-----|------|------|
|
|-----|------|------|
|
||||||
| `task_id` | `sessionID` | 会话唯一标识 |
|
| `task_id` | `sessionID` | 会话唯一标识 |
|
||||||
| `request_id` | `message.id` 或 `message.uuid` | assistant message ID |
|
| `request_id` | `message.uuid` | assistant message ID |
|
||||||
| `prompt_mode` | `user.variant` | 用户消息变体(如 `normal` / `plan`) |
|
| `prompt_mode` | `user.variant` | 用户消息变体(如 `normal` / `plan`) |
|
||||||
| `mode` | `assistant.mode` / `assistant.agent` | 默认 `"code"` |
|
| `mode` | `assistant.mode` / `assistant.agent` | 默认 `"code"` |
|
||||||
| `model` | `assistant.message.model` | 使用的模型 |
|
| `model` | `assistant.message.model` | 使用的模型 |
|
||||||
|
|
|
||||||
|
|
@ -63,8 +63,15 @@ async function runBatch() {
|
||||||
const newTasks = getQueue()
|
const newTasks = getQueue()
|
||||||
|
|
||||||
if (newTasks.length === 0) {
|
if (newTasks.length === 0) {
|
||||||
log.debug('queue empty')
|
// 队列为空时,检查 state.tasks 是否有未完成的任务
|
||||||
return
|
const hasIncomplete = Object.values(state.tasks).some(
|
||||||
|
r => !r.lastUploadAt,
|
||||||
|
)
|
||||||
|
if (!hasIncomplete) {
|
||||||
|
log.debug('queue empty, no incomplete tasks')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.debug('queue empty, but has incomplete tasks in state')
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info(`processing ${newTasks.length} new tasks`)
|
log.info(`processing ${newTasks.length} new tasks`)
|
||||||
|
|
|
||||||
|
|
@ -107,14 +107,12 @@ export async function loadSessionMessages(
|
||||||
const hasSession = lines.some(
|
const hasSession = lines.some(
|
||||||
m =>
|
m =>
|
||||||
m.sessionId === sessionId ||
|
m.sessionId === sessionId ||
|
||||||
m.session_id === sessionId ||
|
m.session_id === sessionId
|
||||||
m.uuid === sessionId,
|
|
||||||
)
|
)
|
||||||
const hasMessage = messageId
|
const hasMessage = messageId
|
||||||
? lines.some(
|
? lines.some(
|
||||||
m =>
|
m =>
|
||||||
m.uuid === messageId ||
|
m.uuid === messageId,
|
||||||
(m.message as Record<string, unknown>)?.id === messageId,
|
|
||||||
)
|
)
|
||||||
: false
|
: false
|
||||||
if (hasSession || hasMessage) {
|
if (hasSession || hasMessage) {
|
||||||
|
|
|
||||||
|
|
@ -689,13 +689,10 @@ export async function uploadConversation(
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
const SUMMARY_DEDUP_WINDOW_MS = 5 * 60 * 1000 // 同一 session 5 分钟内 summary 只上报一次
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 上报一个 session 的摘要信息到 /raw-store/task-summary
|
* 上报一个 session 的摘要信息到 /raw-store/task-summary
|
||||||
* 摘要以 session 为维度,5 分钟内同一 session 只上报一次(通过 state.summary 去重)
|
* SummaryPayload 的信息不会更新,同一 session 只上报一次(通过 state.summary 去重)
|
||||||
* 包含 session 的起止时间、用户信息、客户端信息等
|
|
||||||
* 即使 conversation 上报失败,summary 仍会独立上报
|
|
||||||
*/
|
*/
|
||||||
export async function uploadSummary(
|
export async function uploadSummary(
|
||||||
payload: {
|
payload: {
|
||||||
|
|
@ -711,15 +708,9 @@ export async function uploadSummary(
|
||||||
messageCount: payload.messages.length,
|
messageCount: payload.messages.length,
|
||||||
})
|
})
|
||||||
|
|
||||||
const lastReported = state.summary[payload.sessionID]
|
if (state.summary[payload.sessionID]) {
|
||||||
if (
|
log.info('summary skipped: already uploaded', {
|
||||||
lastReported &&
|
|
||||||
Date.now() - new Date(lastReported).getTime() < SUMMARY_DEDUP_WINDOW_MS
|
|
||||||
) {
|
|
||||||
log.info('summary skipped: reported recently', {
|
|
||||||
task_id: payload.sessionID,
|
task_id: payload.sessionID,
|
||||||
lastReported,
|
|
||||||
windowMs: SUMMARY_DEDUP_WINDOW_MS,
|
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user