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)
12. 單元測試
| 測試名稱 |
結果 |
| 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 品質
本次修改引入的警告已全部修正: 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 項單元測試全部通過