docs: 更新全部 markdown 文档 — 加入解码器内容
- README: 解码功能说明 + CLI/Web/GUI 解码示例 + 项目结构树 + 规格表 - CHANGELOG: 解码器条目(9 模块 + 三端入口 + RS/BCH 算法) - ROADMAP: 解码移至已交付 + 前端工程化 + RS 纠错解码 - CLAUDE.md: 解码器架构 + Web API decode 端点 + IPC 接口
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
|
||||
## 项目概述
|
||||
|
||||
QRGen — 从零手搓的 QR 码生成器,Rust workspace (core + cli + gui + web),完整实现 ISO/IEC 18004 国际标准。GUI + CLI + Web + Library 四种使用方式。
|
||||
QRGen — 从零手搓的 QR 码生成/解码器,Rust workspace (core + cli + gui + web),完整实现 ISO/IEC 18004 国际标准。GUI + CLI + Web + Library 四种使用方式,支持编码+解码双向闭环。
|
||||
|
||||
## 构建命令
|
||||
|
||||
@@ -27,6 +27,9 @@ cargo run -p qrgen -- "Hello World"
|
||||
# Web 服务
|
||||
cargo run -p qrgen-web # → http://localhost:3000
|
||||
|
||||
# CLI 解码
|
||||
cargo run -p qrgen -- --decode test.png
|
||||
|
||||
# GUI 开发模式
|
||||
cd gui/src-frontend && pnpm dev # 终端1: Vite 热更新
|
||||
cargo run -p qrgen-gui # 终端2: Tauri 窗口
|
||||
@@ -71,12 +74,22 @@ QRGen/
|
||||
│ ├── qr.rs # 顶层 API — QrCode::encode(),9 步流水线
|
||||
│ ├── version.rs # 40 版本容量表 + 自动选择
|
||||
│ ├── ecc/
|
||||
│ │ ├── galois.rs # GF(2⁸) 运算 + exp/log 预计算表
|
||||
│ │ ├── galois.rs # GF(2⁸) 运算 + exp/log 预计算表 + poly_eval
|
||||
│ │ └── reed_solomon.rs # RS 纠错码 + 数据交错
|
||||
│ ├── encoder/
|
||||
│ │ ├── mode.rs # 4 种编码模式 (数字/字母/字节/汉字 Shift JIS)
|
||||
│ │ ├── segment.rs # 字符串分析 + 自动分段
|
||||
│ │ └── bitstream.rs # 比特流拼接 + 终止符/填充
|
||||
│ ├── decoder/ # QR 解码器(从零手写)
|
||||
│ │ ├── mod.rs # 顶层 API — decode_image() + decode_matrix()
|
||||
│ │ ├── bch.rs # BCH(15,5)+BCH(18,6) 查表解码
|
||||
│ │ ├── format.rs # 格式信息 + 版本信息读取
|
||||
│ │ ├── extract.rs # 逆向蛇形排列提取码字
|
||||
│ │ ├── deinterleave.rs # 逆向 RS 数据交错
|
||||
│ │ ├── rs_decode.rs # RS 纠错流水线
|
||||
│ │ ├── mode_decode.rs # 逆向 4 种编码模式
|
||||
│ │ ├── detect.rs # 定位图案检测 + 采样网格
|
||||
│ │ └── image.rs # 图像加载 + 二值化
|
||||
│ ├── matrix/
|
||||
│ │ ├── grid.rs # 模块矩阵 (含 reserved 保留区)
|
||||
│ │ ├── patterns.rs # 定位/对齐/时序图案 + BCH(15,5) + BCH(18,6)
|
||||
@@ -122,6 +135,7 @@ QRGen/
|
||||
|---------|------|--------|------|
|
||||
| `encode_qr` | `text: String, level: String, margin: u8` | `Result<QrResponse, String>` | 编码文本为 QR,返回 SVG + 版本/尺寸/掩码 |
|
||||
| `export_png` | `text: String, level: String, margin: u8, module_size: u8` | `Result<Vec<u8>, String>` | 编码并导出 PNG 字节 |
|
||||
| `decode_qr` | `image_bytes: Vec<u8>` | `Result<String, String>` | 解码图片为文本 |
|
||||
| `save_history` | `entry: HistoryEntry` | `Result<(), String>` | 添加历史记录(最多 50 条) |
|
||||
| `load_history` | — | `Result<Vec<HistoryEntry>, String>` | 加载全部历史记录 |
|
||||
| `clear_history` | — | `Result<(), String>` | 清空历史记录 |
|
||||
@@ -132,6 +146,7 @@ QRGen/
|
||||
|----------|------|------|
|
||||
| `GET /` | — | HTML 页面(内嵌 7 种编码模式) |
|
||||
| `GET /api/qr` | `text`, `level`(L/M/Q/H), `margin`(1-20), `size`(2-20), `fmt`(svg) | PNG 或 SVG |
|
||||
| `POST /api/decode` | multipart `file` (PNG/JPEG/WebP) | JSON `{text, version, level, mask, errors_corrected}` |
|
||||
|
||||
## 前端状态管理
|
||||
|
||||
@@ -181,9 +196,9 @@ Action: SET_MODE | SET_FORM_DATA | SET_CONFIG | SET_PREVIEW | SET_LOADING
|
||||
|
||||
| 层级 | 数量 | 说明 |
|
||||
|------|------|------|
|
||||
| 单元测试 | 58 | Galois 运算、RS 编码、模式编码、掩码评分、格式信息等 |
|
||||
| 单元测试 | 72 | Galois 运算、RS 编解码、模式编解码、掩码评分、格式/版本信息 roundtrip、BCH 容错、蛇形提取等 |
|
||||
| 集成测试 | 24 | 端到端编码、渲染输出验证、边距、特殊字符、自动版本选择、格式信息 roundtrip |
|
||||
| 总计 | 82 | `cargo test` 全部通过 |
|
||||
| 总计 | 96 | `cargo test` 全部通过 |
|
||||
|
||||
## 版本号升级清单
|
||||
|
||||
|
||||
Reference in New Issue
Block a user