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