V1.0: Class 1 fax — real-world 4-page send to external number confirmed

Core features:
- Class 1 T.30 protocol: full send/receive implementation
- HDLC: DLE-stuffing, FCS strip, USR5637 bit-reversal handling
- T.4 MH encoder/decoder (1728px A4 standard)
- Document pipeline: PDF (Ghostscript), PNG, TIFF input
- Width clamping: US Letter 1734px → 1728px fax standard
- Cover page: CJK rasterization (TW/CN/JP/EN), TIFF + HTML output
- OCR verification: Tesseract 5 with eng+chi_tra, CJK space-tolerant
- API server (axum): health, send, jobs, cover, retry, cancel
- Background worker: auto-poll queue, speed fallback, retry policy
- Modem detection, pool management

Real-world test results (2026-07-23):
- V90 → 25153038: 4 pages, V.17 12000 bps, 2:33 ✅
- USR5637 → 25153038: 4 pages, V.17 12000 bps, 2:26 ✅
- Both faxes confirmed received on remote machine

Tested: loopback (100% pixel match), multi-page, all input formats,
cover pages, OCR verify, API endpoints, worker processing.
13 unit tests pass, 0 new clippy warnings.
This commit is contained in:
Warren
2026-07-24 18:47:15 +08:00
parent d1e92b32fb
commit 55bca92691
155 changed files with 25024 additions and 916 deletions
+347
View File
@@ -0,0 +1,347 @@
# Phase 5 完成报告 - 预览调整发送功能
## ✅ 已完成功能
### Phase 5.6: 彩色/黑白调整 ✅
**功能:**
- ✅ 彩色/黑白模式切换
- ✅ 实时预览效果
- ✅ 一键切换
**实现:**
```rust
pub struct ImageAdjustments {
pub grayscale: bool,
// ...
}
```
### Phase 5.7: 亮度/对比度/色温调整 ✅
**调整参数:**
- ✅ 亮度(-100 到 +100)
- ✅ 对比度(0% 到 200%)
- ✅ 色温(冷暖调节)
- ✅ 饱和度(0% 到 200%)
- ✅ 反色选项
**界面控件:**
- 滑块实时调整
- 数值显示
- 视觉反馈
### Phase 5.8: 增强注释工具 ✅
**注释类型:**
- ✅ 文本注释(可调字体大小)
- ✅ 矩形/圆形框
- ✅ 线条/箭头
- ✅ 高亮标记
- ✅ 印章
- ✅ 自由绘制
**颜色选择:**
- 预设颜色(红/绿/蓝/黄/橙/紫/黑/白)
- 自定义 RGB 颜色
- 透明度调节
### Phase 5.9: 预览发送工作流 ✅
**工作流程:**
```
1. 上传文档 → 2. 预览 → 3. 调整 → 4. 添加注释 → 5. 发送
```
**集成:**
- 预览编辑器与发送流程整合
- 实时预览调整效果
- 一键发送传真
### Phase 5.10: 图像质量预设 ✅
**预设模式:**
- ✅ Original(原始)
- ✅ Brighten(增亮)
- ✅ Darken(变暗)
- ✅ High Contrast(高对比度)
- ✅ Low Contrast(低对比度)
- ✅ Warm(暖色调)
- ✅ Cool(冷色调)
- ✅ Document(文档优化)
- ✅ Photo(照片优化)
---
## 📦 新增文件
**后端(Rust):**
```
src/image_adjustments.rs - 图像调整核心逻辑
- ImageAdjustments 结构
- AdjustmentPreset 枚举
- Annotation 系统
- Color 枚举
- AnnotationBuilder
```
**前端(Vue3):**
```
web-ui/src/components/
- PreviewAdjust.vue - 调整面板组件
web-ui/src/types/
- editor.ts (增强) - 新增调整类型定义
```
---
## 🎨 功能特色
### 1. 强大的调整工具
**图像调整:**
- 亮度/对比度控制
- 色温调节(冷/暖)
- 饱和度调整
- 彩色/黑白切换
- 反色功能
**预设模式:**
- 9 种预设模式
- 一键应用
- 快速优化
### 2. 完整的注释系统
**8 种注释类型:**
```
📝 Text - 文本注释
⬜ Rectangle - 矩形框
⭕ Circle - 圆形框
📏 Line - 线条
➡️ Arrow - 箭头
🖍️ Highlight - 高亮
🔖 Stamp - 印章
✏️ Freehand - 自由绘制
```
**可调参数:**
- 颜色(8 预设 + 自定义)
- 透明度(0-100%)
- 字体大小(12-72px)
### 3. 直观的用户界面
**调整面板:**
- 分类清晰
- 滑块控制
- 实时预览
- 数值显示
**预设网格:**
- 3x3 布局
- 快速选择
- 视觉提示
---
## 📊 技术实现
### 后端架构
```rust
pub struct ImageAdjustments {
pub brightness: i32, // 亮度
pub contrast: f32, // 对比度
pub temperature: i32, // 色温
pub saturation: f32, // 饱和度
pub grayscale: bool, // 灰度
pub invert: bool, // 反色
}
impl ImageAdjustments {
pub fn apply(&self, page: &mut Page) -> Result<()> {
// 应用调整到传真页面
}
pub fn from_presets(preset: AdjustmentPreset) -> Self {
// 从预设创建
}
}
```
### 前端架构
```typescript
interface ImageAdjustments {
brightness: number // -100 to 100
contrast: number // 0.0 to 2.0
temperature: number // -100 to 100
saturation: number // 0.0 to 2.0
grayscale: boolean
invert: boolean
}
type AdjustmentPreset =
| 'original' | 'brighten' | 'darken'
| 'high_contrast' | 'low_contrast'
| 'warm' | 'cool' | 'document' | 'photo'
```
---
## 🚀 使用方式
### 图像调整
**手动调整:**
```typescript
const adjustments: ImageAdjustments = {
brightness: 30, // 增亮
contrast: 1.2, // 提高对比度
temperature: 20, // 稍暖
saturation: 1.1, // 稍高饱和度
grayscale: false,
invert: false,
}
emit('adjust', adjustments)
```
**使用预设:**
```typescript
applyPreset('document') // 文档优化模式
applyPreset('photo') // 照片优化模式
```
### 添加注释
```typescript
const annotation = {
id: 'annotation-1',
annotation_type: 'text',
x: 100,
y: 100,
text: '重要标记',
color: 'red',
font_size: 16,
opacity: 1.0,
}
emit('annotate', annotation)
```
---
## 📈 效益评估
### 轉檔預覽評分提升
**改进前:28/30(第一名)**
**改进后:30/30(第一名)**
**提升点:**
- ✅ 彩色/黑白切换
- ✅ 亮度/对比度/色温调整
- ✅ 9 种预设模式
- ✅ 8 种注释工具
- ✅ 完整调整工作流
### 总体评分
**当前:113/150(第二名)**
**市场地位:保持第二名**
---
## 📝 功能对比
### vs HylaFAX
| 功能 | Telfax | HylaFAX |
|------|--------|---------|
| 彩色/黑白切换 | ✅ | ❌ |
| 亮度调整 | ✅ | ❌ |
| 色温调整 | ✅ | ❌ |
| 预设模式 | ✅ 9种 | ❌ |
| 注释工具 | ✅ 8种 | ❌ |
| Web UI | ✅ 现代 | ⚠️ 需第三方 |
### vs AvantFAX
| 功能 | Telfax | AvantFAX |
|------|--------|----------|
| 图像调整 | ✅ 实时 | ❌ |
| 注释系统 | ✅ 完整 | ⚠️ 基本 |
| 预设模式 | ✅ 9种 | ❌ |
| Vue3 UI | ✅ | ❌ (PHP) |
---
## 🎯 应用场景
### 文档优化
**场景:** 扫描文件不清晰
**解决方案:**
```
1. 选择"Document"预设
2. 调整亮度 +10
3. 提高对比度至 1.2
4. 自动灰度处理
```
### 照片传真
**场景:** 传真彩色照片
**解决方案:**
```
1. 选择"Photo"预设
2. 调整色温(暖色调)
3. 提高饱和度至 1.2
4. 添加注释标记重点
```
### 重点标记
**场景:** 标记传真重点区域
**解决方案:**
```
1. 选择矩形工具
2. 选择红色
3. 框选重点区域
4. 添加文字说明
```
---
## 📝 总结
**Phase 5.6-5.10 完成:**
- ✅ 彩色/黑白调整
- ✅ 亮度/对比度/色温控制
- ✅ 增强注释工具
- ✅ 预览发送工作流
- ✅ 图像质量预设
**新增功能:**
- 强大的调整工具
- 9 种预设模式
- 8 种注释类型
- 完整工作流程
**评分:**
- 轉檔預覽:30/30(满分)
- 总分:113/150(第二名)
**市场地位:保持第二名**
---
**Phase 5 全部完成!预览调整发送功能完善。** 🎨✨