fix: remove .doc support — libreoffice unavailable on Штурвал
Deploy contracts-flask / validate (push) Successful in 0s

This commit is contained in:
2026-07-16 07:01:44 +04:00
parent ea92730bd8
commit 11015fd55b
2 changed files with 27 additions and 50 deletions
+3 -26
View File
@@ -211,21 +211,14 @@ window.toggleClassifyDetail = async function(i) {
* uploadFile(file, onProgress) — загрузка одного файла на бэкенд.
*
* v2.0.1: fetch() вместо XHR — XHR давал ERR_CONNECTION_RESET (drhider v0.0.29)
* v2.0.2: убрана конвертация .doc (libreoffice недоступен на Штурвале)
* Прогресс: без процентов (fetch не поддерживает), только статус.
*
* Особенности:
* - .doc (не .docx!) конвертируется через CONVERT_URL перед загрузкой
* - onProgress(pct) — сохранён для совместимости, вызывается с 0 и 100
* - Возвращает Promise<ответ API>
* Возвращает Promise<ответ API>
*/
function uploadFile(file, onProgress, zipSource) {
// .doc → конвертация в docx (старый формат Word)
var isDoc = file.name.toLowerCase().endsWith('.doc') && !file.name.toLowerCase().endsWith('.docx');
function doUpload(uploadFile, uploadName) {
if (onProgress) onProgress(0);
var fd = new FormData();
fd.append('files', uploadFile, uploadName);
fd.append('files', file, file.name);
if (state.contractId) fd.append('contract_id', state.contractId);
fd.append('batch_id', state.batchId);
if (zipSource) fd.append('zip_source', zipSource);
@@ -243,7 +236,6 @@ function uploadFile(file, onProgress, zipSource) {
throw new Error(data.error || 'Неизвестная ошибка');
})
.catch(function(e) {
// Перезапись fetch-ошибок в понятные сообщения
if (e.message === 'Failed to fetch' || e.name === 'TypeError') {
throw new Error('Сеть');
}
@@ -251,21 +243,6 @@ function uploadFile(file, onProgress, zipSource) {
});
}
if (isDoc) {
return fetch(CONVERT_URL, { method: 'POST', body: file })
.then(function(r) {
if (!r.ok) throw new Error('Конвертация .doc');
return r.blob();
})
.then(function(blob) {
if (blob.size < 100) throw new Error('Конвертация .doc');
return doUpload(blob, file.name.replace(/\.doc$/i, '.docx'));
});
} else {
return doUpload(file, file.name);
}
}
/**
* refreshSupps() — Обновить supplement_id/type для файлов в state.files.
*
+1 -1
View File
@@ -90,7 +90,7 @@
Загрузка договоров/приложений/спецификаций
</div>
<div class="card-body">
<input type="file" id="fileInput" accept=".docx,.doc,.pdf,.zip" multiple style="margin-bottom:6px;width:100%;">
<input type="file" id="fileInput" accept=".docx,.pdf,.zip" multiple style="margin-bottom:6px;width:100%;">
<div style="text-align:right;font-size:11px;color:var(--muted);margin-bottom:6px;">Порядок определяется автоматически при классификации</div>
<div style="font-size:11px;color:var(--muted);margin-bottom:6px;">⚠ При совпадении имён — запрос на перезапись (OK / Отмена). Файлы из ZIP-архивов загружаются через тот же поток.</div>