- downloadUrl 提升为顶层纯函数导出, JobList 不再为此实例化整个 api 对象
- createPdfApi 返回对象移除内部用的 getJob / downloadUrl (高内聚)
- useLocale 移除未用的 isZh/pick 返回值
- 移除 4 个死 i18n key (upload.uploading/submitted/failed/networkError)
- App.vue: import {watch} 提升至顶部; onDelete 补 try/catch + console.error
- usePdfApi: pollPending 单任务失败补 console.warn; uploadFile 响应解析失败补 console.error
- docs: 新增 error-handling.md / integration.md (嵌入细节从 README 移入)
- README: 修正 dev 端口 5173->5175; 补 apache2 部署说明
1.2 KiB
1.2 KiB
错误处理与日志约定
zPDF_package 的错误处理分两层:API 客户端 fail-fast(抛错),UI 层捕获后既写控制台又给用户反馈。
API 客户端(src/composables/usePdfApi.js)
load/getJob/remove:fetch 不可用抛fetch unavailable;非 2xx 抛HTTP <status>。uploadFile:XHR 不可用抛XMLHttpRequest unavailable;网络错误 rejectnetwork error;响应非 200 时解析detail字段,无则HTTP <status>。pollPending:单个任务查询失败不中断整体轮询,但console.warn记录(避免持久故障完全不可见)。downloadUrl:纯函数,无副作用。
UI 层(src/App.vue, src/components/)
refresh()失败:捕获写入loadError,JobList 显示「加载失败」。onDelete()失败:console.error记录 + 写入loadError提示用户。Uploader.handle()失败:捕获写入errMsg显示。validateFile返回 i18n key(非抛错),由onUpload翻译后抛Error(t(key))交给 Uploader 显示。
控制台前缀
所有 [zPDF] 前缀的日志来自本子项目,便于嵌入宿主时与宿主日志区分。