# Telfax 測試報告 — V1.0 正式版 ## 測試日期 2026-07-23 ## 測試環境 | 項目 | 規格 | |---|---| | **主機** | macOS, Apple Silicon | | **Modem 1** | Agere USR5637 USB (`/dev/cu.usbmodem00000021`), 電話: 2528**** | | **Modem 2** | CONEXANT V90 CX93001 USB (`/dev/cu.usbmodem123456781`), 電話: 2748**** | | **電話線路** | 兩條獨立 POTS 線路 | | **遠端傳真機** | 電話: 2515**** | | **作業系統** | macOS (Darwin) | | **編譯器** | Rust 1.95, release profile | ## 測試項目與結果 ### 1. Modem 偵測 | 測試 | 結果 | |---|---| | USR5637 偵測 (`AT+GMI`) | ✅ Agere Systems U.S. Robotics 56K FAX | | V90 CX93001 偵測 (`AT+GMI`) | ✅ CONEXANT V92 | | Class 1 支援 | ✅ 兩台皆支援 | | TX/RX 速率查詢 | ✅ V.21/V.27ter/V.29/V.17 | ### 2. 單頁迴圈測試 (Modem ↔ Modem) | 測試 | 方向 | 連結數 | 結果 | |---|---|---|---| | test15 | V90 → USR5637 | 2 | ✅ 100% 像素吻合 | | test20 | USR5637 → V90 | 2 | ✅ 100% 像素吻合 | ### 3. 多頁迴圈測試 (Modem ↔ Modem) | 測試 | 方向 | 頁數 | 結果 | |---|---|---|---| | test_multi_forward | V90 → USR5637 | 4 | ✅ 4/4 頁 100% 像素吻合 | | test_multi_reverse | USR5637 → V90 | 4 | ✅ 4/4 頁 100% 像素吻合 | ### 4. 不同輸入格式 | 格式 | 測試檔 | 頁數 | 結果 | |---|---|---|---| | TIFF | `fax_full.tif` | 4 | ✅ 直接傳輸成功 | | PDF | `Warren113114.pdf` | 3 | ✅ Ghostscript 轉換 + 傳輸成功 | | PNG | `Screenshot 2026-04-01.png` | 1 | ✅ 縮放至 1728px + 傳輸成功 | ### 5. 標準解析度傳輸 | 測試 | 檔案 | 解析度 | 結果 | |---|---|---|---| | cover_cn.tif | `cover_cn.tif` | Standard | ✅ 100% 像素吻合 | ### 6. 封面頁 (Cover Page) | 測試 | 格式 | 結果 | |---|---|---| | cover-create | TIFF | ✅ 1728×2291, 3,959,094 bytes | | cover-create | HTML | ✅ 正確產生 HTML 預覽 | | cover-create | Both | ✅ 同時產生 TIFF + HTML | | 中文內容 | 張三/測試文件 | ✅ CJK 字型正確渲染 | ### 7. OCR 封面頁驗證 | 測試 | 結果 | |---|---| | Tesseract OCR 安裝 | ✅ v5.5.2, 含 eng/chi_tra/chi_sim/jpn | | PSM 參數正確分離 | ✅ `--psm 3` 修正為 `--psm` + `3` | | 多語言 OCR | ✅ eng + chi_tra 預設啟用 | | CJK 空格處理 | ✅ `張 三` → `張三` 比對成功 | | 全欄位驗證 | ✅ FACSIMILE, TO, FROM, DATE, PAGES, SUBJECT, NOTES 全部通過 | ### 8. PDF 轉換 | 測試 | 結果 | |---|---| | Ghostscript 可用 | ✅ GPL Ghostscript 10.07.1 | | 3 頁 PDF 轉換 | ✅ 1728×2291, 3 pages | | 寬度 clamping (1734→1728) | ✅ 修正 US Letter 寬度溢位 | | Pixel re-encoding | ✅ 超寬頁面自動裁切 | ### 9. 預覽功能 | 測試 | 結果 | |---|---| | preview 命令 | ✅ 產生 HTML 預覽, base64 內嵌圖片 | ### 10. API Server | 端點 | 方法 | 結果 | |---|---|---| | `/api/health` | GET | ✅ 回傳 modem 狀態 + 佇列統計 | | `/api/fax/send` | POST | ✅ 佇列工作成功 | | `/api/fax/jobs` | GET | ✅ 列出所有工作 | | `/api/fax/jobs/{id}` | GET | ✅ 取得工作詳情 | | `/api/fax/jobs/{id}/cover` | PUT | ✅ 更新封面頁欄位 (含中文) | | `/api/fax/jobs/{id}/retry` | POST | ✅ 重設為 Queued 狀態 | | `/api/fax/jobs/{id}` | DELETE | ✅ 取消工作 | | Worker 自動啟動 | — | ✅ 收到佇列任務後自動撥號傳輸 | ### 11. ⭐ 正式外線傳真測試 (Real-World) | 項目 | V90 (2748****) | USR5637 (2528****) | |---|---|---| | **目的地** | 2515**** | 2515**** | | **協定** | Class 1 | Class 1 | | **解析度** | Fine (196 LPI) | Fine (196 LPI) | | **談判速率** | V.17 12000 bps | V.17 12000 bps | | **頁數** | 4/4 | 4/4 | | **時間** | ~2:33 | ~2:26 | | **DIS 收到** | ✅ | ✅ (跳過 NSF/CSI 直接收到) | | **DCS + TCF 發送** | ✅ | ✅ | | **CFR 確認** | ✅ | ✅ | | **每頁 MCF** | ✅ 4/4 | ✅ 4/4 | | **EOP + DCN** | ✅ | ✅ | | **遠端確認收到** | ✅ **確認收到** | ✅ **確認收到** | #### 傳輸時序 (V90) ``` 01:17:47 撥號開始 01:18:04 連線建立 (CONNECT) 01:18:13 DIS 收到 → V17_12000 談判 01:18:19 CFR 確認 → Page 1 開始 (14,217 bytes) 01:18:29 Page 1 完成 → MCF 01:18:33 Page 2 開始 (49,391 bytes) 01:19:06 Page 2 完成 → MCF 01:19:10 Page 3 開始 (43,273 bytes) 01:19:39 Page 3 完成 → MCF 01:19:43 Page 4 開始 (49,558 bytes) 01:20:16 Page 4 完成 → MCF 01:20:20 EOP → MCF → DCN 01:20:22 傳輸完成 ``` ### 12. 單元測試 ``` test result: ok. 13 passed; 0 failed; 0 ignored ``` | 測試名稱 | 結果 | |---|---| | test_compute_fcs | ✅ | | test_compute_fcs_known | ✅ | | test_hdlc_build_and_parse | ✅ | | test_dle_roundtrip | ✅ | | test_dle_unstuff_stops_at_dle_etx | ✅ | | test_parse_hdlc_strips_dle_etx_and_trailing_crlf | ✅ | | test_parse_hdlc_with_dle_in_fif | ✅ | | test_t4_group4_decode_simple | ✅ | | test_document_from_image | ✅ | | test_mh_encode_decode_roundtrip | ✅ | | test_mh_encode_single_line | ✅ | | test_mh_encode_all_white | ✅ | | test_mh_encode_all_black | ✅ | ### 13. Clippy 品質 ``` lib: 6 warnings (pre-existing: deprecated base64, unused config fields) bin: 3 warnings (pre-existing: too-many-args, clone ref) ``` 本次修改引入的警告已全部修正: 0 new warnings. ## 已知限制 | 項目 | 說明 | |---|---| | Class 2 (V90) | 發送失敗 — FDT 返回 OK 但內部 T.30 協定失敗 (FHNG:025) | | 解析度旗標 | `-r` 參數僅影響 PDF/GS 轉換,對已有 TIFF 無效 | | Worker 設定 | 使用舊版 `FaxConfig`,尚未整合至新版 `AppConfig` | ## 結論 **Telfax V1.0 第一版正式通過全部測試。** - 單頁 / 多頁迴圈測試: 100% 像素吻合 - 正式外線傳真: 兩台 modem (USR5637 + V90) 皆成功送達 2515**** - 4 頁完整傳輸,V.17 12000 bps,全程無錯誤 - API Server、Worker、封面頁、OCR 驗證、PDF 轉換、預覽功能全部正常 - 13 項單元測試全部通過