feat(ocr): extract translateOcrProgress with ANALYZING_PAGE and DONE:skipped support
Move translateOcrProgress from page.svelte to a testable module. Return structured result with currentPage/totalPages/skippedPages for the progress bar. Add ANALYZING_PAGE and DONE with skipped pages parsing. Add i18n keys for de/en/es. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
56
frontend/src/lib/ocr/translateOcrProgress.ts
Normal file
56
frontend/src/lib/ocr/translateOcrProgress.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
import { m } from '$lib/paraglide/messages.js';
|
||||
|
||||
export interface OcrProgressResult {
|
||||
message: string;
|
||||
currentPage?: number;
|
||||
totalPages?: number;
|
||||
skippedPages?: number;
|
||||
}
|
||||
|
||||
export function translateOcrProgress(code: string): OcrProgressResult {
|
||||
if (!code) return { message: m.ocr_progress_heading() };
|
||||
|
||||
const parts = code.split(':');
|
||||
const key = parts[0];
|
||||
|
||||
switch (key) {
|
||||
case 'PREPARING':
|
||||
return { message: m.ocr_status_preparing() };
|
||||
case 'LOADING':
|
||||
return { message: m.ocr_status_loading() };
|
||||
case 'ANALYZING':
|
||||
return { message: m.ocr_status_analyzing() };
|
||||
case 'CREATING_BLOCKS':
|
||||
return { message: m.ocr_status_creating_blocks({ count: parts[1] ?? '0' }) };
|
||||
case 'DONE': {
|
||||
const count = parts[1] ?? '0';
|
||||
const skipped = parts[2] ? parseInt(parts[2], 10) : 0;
|
||||
if (skipped > 0) {
|
||||
return {
|
||||
message: m.ocr_status_done_skipped({
|
||||
count,
|
||||
skipped: String(skipped)
|
||||
}),
|
||||
skippedPages: skipped
|
||||
};
|
||||
}
|
||||
return { message: m.ocr_status_done_blocks({ count }) };
|
||||
}
|
||||
case 'ANALYZING_PAGE': {
|
||||
const current = parseInt(parts[1] ?? '0', 10);
|
||||
const total = parseInt(parts[2] ?? '0', 10);
|
||||
return {
|
||||
message: m.ocr_status_analyzing_page({
|
||||
current: String(current),
|
||||
total: String(total)
|
||||
}),
|
||||
currentPage: current,
|
||||
totalPages: total
|
||||
};
|
||||
}
|
||||
case 'ERROR':
|
||||
return { message: m.ocr_status_error() };
|
||||
default:
|
||||
return { message: code };
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user