review: durée review Ollama (durationMs), timeout 15s, tooltip durée; délai min configurable via OLLAMA_MIN_REVIEW_MS
This commit is contained in:
parent
1e207f734e
commit
984c3838ae
@ -1077,6 +1077,7 @@ function generateStandardJSON(documentInfo, ocrResult, entities, processingTime)
|
|||||||
async function reviewWithOllama(payload) {
|
async function reviewWithOllama(payload) {
|
||||||
try {
|
try {
|
||||||
const http = require('http')
|
const http = require('http')
|
||||||
|
const startAt = Date.now()
|
||||||
const data = JSON.stringify({
|
const data = JSON.stringify({
|
||||||
model: process.env.OLLAMA_MODEL || 'llama3.1',
|
model: process.env.OLLAMA_MODEL || 'llama3.1',
|
||||||
prompt:
|
prompt:
|
||||||
@ -1094,7 +1095,7 @@ async function reviewWithOllama(payload) {
|
|||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json',
|
||||||
'Content-Length': Buffer.byteLength(data),
|
'Content-Length': Buffer.byteLength(data),
|
||||||
},
|
},
|
||||||
timeout: 8000,
|
timeout: 15000,
|
||||||
}
|
}
|
||||||
const responseBody = await new Promise((resolve, reject) => {
|
const responseBody = await new Promise((resolve, reject) => {
|
||||||
const req = http.request(options, (res) => {
|
const req = http.request(options, (res) => {
|
||||||
@ -1120,13 +1121,20 @@ async function reviewWithOllama(payload) {
|
|||||||
const match = String(txt).match(/\{[\s\S]*\}$/)
|
const match = String(txt).match(/\{[\s\S]*\}$/)
|
||||||
if (!match) throw new Error('Réponse non JSON')
|
if (!match) throw new Error('Réponse non JSON')
|
||||||
const parsed = JSON.parse(match[0])
|
const parsed = JSON.parse(match[0])
|
||||||
|
const durationMs = Date.now() - startAt
|
||||||
|
// Respecter un délai minimal si souhaité
|
||||||
|
const minDelay = Math.max(0, Number(process.env.OLLAMA_MIN_REVIEW_MS || 0))
|
||||||
|
if (minDelay > 0 && durationMs < minDelay) {
|
||||||
|
await new Promise((r) => setTimeout(r, minDelay - durationMs))
|
||||||
|
}
|
||||||
return {
|
return {
|
||||||
score: Math.max(0, Math.min(1, Number(parsed.score) || 0)),
|
score: Math.max(0, Math.min(1, Number(parsed.score) || 0)),
|
||||||
corrections: Array.isArray(parsed.corrections) ? parsed.corrections : [],
|
corrections: Array.isArray(parsed.corrections) ? parsed.corrections : [],
|
||||||
avis: typeof parsed.avis === 'string' ? parsed.avis : '',
|
avis: typeof parsed.avis === 'string' ? parsed.avis : '',
|
||||||
|
durationMs: Math.max(durationMs, minDelay || 0),
|
||||||
}
|
}
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
return { score: null, corrections: [], avis: '' }
|
return { score: null, corrections: [], avis: '', durationMs: null }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -163,6 +163,7 @@ const DocumentListItem = memo(({ doc, index, onPreview, onDelete, onReplace, onC
|
|||||||
(anyDoc?.metadata?.quality?.ollamaScore as number | undefined) ??
|
(anyDoc?.metadata?.quality?.ollamaScore as number | undefined) ??
|
||||||
(anyDoc?.status?.review?.score as number | undefined)
|
(anyDoc?.status?.review?.score as number | undefined)
|
||||||
const avis: string | undefined = anyDoc?.status?.review?.avis
|
const avis: string | undefined = anyDoc?.status?.review?.avis
|
||||||
|
const dur: number | undefined = anyDoc?.status?.review?.durationMs
|
||||||
if (doc.status === 'completed' && typeof score === 'number') {
|
if (doc.status === 'completed' && typeof score === 'number') {
|
||||||
const chip = (
|
const chip = (
|
||||||
<Chip
|
<Chip
|
||||||
@ -172,13 +173,12 @@ const DocumentListItem = memo(({ doc, index, onPreview, onDelete, onReplace, onC
|
|||||||
variant="outlined"
|
variant="outlined"
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
return typeof avis === 'string' && avis.length > 0 ? (
|
const tip = `${avis ? avis : ''}${dur ? (avis ? ' — ' : '') + 'durée: ' + dur + ' ms' : ''}`
|
||||||
<Tooltip title={avis}>
|
return tip ? (
|
||||||
|
<Tooltip title={tip}>
|
||||||
<span>{chip}</span>
|
<span>{chip}</span>
|
||||||
</Tooltip>
|
</Tooltip>
|
||||||
) : (
|
) : chip
|
||||||
chip
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
return null
|
return null
|
||||||
})()}
|
})()}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user