fix: reopen result modal from progress bar, faster progress, handle LLM context error

- Move import modal visibility into ImportContext so the Layout
  progress pill can reopen the result dialog after the modal was closed.
- Raise LLM progress cap from 85% to 98% and drop the intermediate
  -import 88%- SSE event to eliminate the visual stall after LLM finishes.
- Detect LLM context-length errors (n_keep >= n_ctx) and surface a
  clear message instead of generic -Временная ошибка конвертации-.
This commit is contained in:
vakabunga
2026-03-14 17:05:55 +03:00
parent 22be09c101
commit e28d0f46d0
6 changed files with 36 additions and 19 deletions

View File

@@ -20,6 +20,9 @@ export interface ImportProgress {
interface ImportContextValue {
importState: ImportProgress;
showModal: boolean;
openModal: () => void;
closeModal: () => void;
startImport: (file: File) => void;
clearImport: () => void;
}
@@ -35,8 +38,12 @@ const ImportContext = createContext<ImportContextValue | null>(null);
export function ImportProvider({ children }: { children: ReactNode }) {
const [importState, setImportState] = useState<ImportProgress>(INITIAL);
const [showModal, setShowModal] = useState(false);
const runningRef = useRef(false);
const openModal = useCallback(() => setShowModal(true), []);
const closeModal = useCallback(() => setShowModal(false), []);
const startImport = useCallback((file: File) => {
if (runningRef.current) return;
runningRef.current = true;
@@ -92,7 +99,9 @@ export function ImportProvider({ children }: { children: ReactNode }) {
}, []);
return (
<ImportContext.Provider value={{ importState, startImport, clearImport }}>
<ImportContext.Provider value={{
importState, showModal, openModal, closeModal, startImport, clearImport,
}}>
{children}
</ImportContext.Provider>
);