Engine: - organize.rs: build_document(plan) core — insert/delete/rotate/crop/extract/merge/split - watermark.rs: watermark + header/footer via PdfPages::watermark, CID Unicode fonts - qpdf.rs: QPDF CLI wrapper — repair corrupt files, re-encrypt after edits, ensure_openable - edit.rs: MOAT — list_objects + apply_edits (SetText VN, Transform, Delete, Add/ReplaceImage) - Tests: organize/watermark/qpdf_safety/edit roundtrip — 43/43 engine tests green UI (Tauri): "Tổ chức trang" mode (grid + drag-reorder + multi-select), "Sửa nội dung" mode (WYSIWYG object overlay, edit-in-place), global undo/redo, robust file open. Corpus: add encrypted.pdf + corrupt-truncated.pdf fixtures. Docs: mark Phase 1-4 done in roadmap; document QPDF setup + engine module layout in 05-dev-setup; add 10-13 phase summaries & user-test checklists; README status.
3.5 KiB
3.5 KiB
11 — Checklist test thủ công Phase 3 (Tổ chức trang)
Phần kéo-thả/kéo-chuột không tự động test đầy đủ được trong WebView2 (xem ghi chú ở 08-phase2-summary.md), nên cần bạn thử bằng chuột thật, đặc biệt phần Lưu (đường GHI file là rủi ro nhất).
Chạy
cd c:\Project\FoFreeXit\app\src-tauri
cargo run
Bảng test
| # | Thao tác | Kỳ vọng | KQ |
|---|---|---|---|
| O1 | Bấm 🗂 Tổ chức trang | Viewport đổi thành lưới thumbnail lớn | |
| O2 | Click 1 trang, Ctrl+click thêm 1 trang | Cả 2 viền xanh (đã chọn) | |
| O3 | Shift+click trang khác | Chọn cả dải liên tục | |
| O4 | Kéo-thả 1 thumbnail sang vị trí khác | Thứ tự trang đổi ngay trên lưới | |
| O5 | Chọn 1 trang, bấm Xoay phải/trái | Thumbnail xoay 90° ngay | |
| O6 | Bấm Hoàn tác sau O5 | Xoay về như cũ | |
| O7 | Chọn trang, bấm Xoá | Trang biến mất khỏi lưới | |
| O8 | Chọn hết tất cả trang, bấm Xoá | Bị chặn (báo không thể xoá hết) | |
| O9 | Bấm ➕ Chèn → Trang trắng → Cuối tài liệu | Thêm 1 trang trắng cuối lưới | |
| O10 | Bấm ➕ Chèn → Từ file… → chọn 1 PDF khác | Trang từ file đó chèn đúng vị trí | |
| O11 | Chọn 1+ trang, bấm 📤 Trích → chọn nơi lưu | Tạo file PDF mới chỉ chứa trang đã chọn | |
| O12 | Chọn 1+ trang, bấm 🔁 Thay → chọn file khác | Nội dung trang đã chọn đổi thành trang từ file mới | |
| O13 | Bấm 🔀 Trộn file → thêm 2-3 file, sắp thứ tự, Trộn | Tạo 1 file PDF mới ghép đúng thứ tự | |
| O14 | Bấm ✂ Tách file → nhập số trang/file, chọn thư mục | Sinh nhiều file _part1.pdf, _part2.pdf... |
|
| O15 | Bấm 💧 Watermark, nhập chữ, bấm Xem trước | Ảnh xem trước hiện watermark đúng vị trí/màu/góc xoay | |
| O16 | Bấm Áp dụng ở Watermark → chọn nơi lưu | File mới có watermark trên các trang đã chọn | |
| O17 | Bấm 📋 Header/Footer, gõ "Trang {page}/{total}" vào ô dưới-giữa, Xem trước | Ảnh xem trước hiện đúng số trang/tổng số trang | |
| O18 | Chọn tool ✂️ Crop (thanh Chú thích), kéo 1 khung trên trang | Dialog Crop hiện 4 số margin đúng theo khung đã kéo | |
| O19 | Áp dụng Crop, vào lại Tổ chức trang | Thumbnail trang đó có dấu chấm crop ở góc | |
| O20 | Sau khi sửa vài thao tác, bấm 💾 Lưu thay đổi tổ chức trang | Hỏi nơi lưu, tạo file mới đúng với mọi thay đổi đã làm | |
| O21 | Mở file đã lưu ở O20 bằng Foxit/Adobe/Chrome | Thứ tự/xoay/crop/nội dung trang đúng như trên lưới | |
| O22 | Mở 1 file PDF bị hỏng (xref lỗi) nếu có | App tự sửa (qua QPDF) và mở được, không báo lỗi cho người dùng |
Mẫu phản hồi
[Mã] (vd O21) — Phần mềm mở: <Foxit/Adobe/Chrome> — Hiện tượng: <mô tả> —
Kỳ vọng: <...> — Ưu tiên: cao/vừa/thấp
Đặc biệt cần biết O20/O21 (lưu tổ chức trang ra file mới, mở lại ở phần mềm khác có đúng không) vì đó là đường GHI file rủi ro nhất. Engine đã test round-trip nội bộ cho từng thao tác riêng lẻ, nhưng tổ hợp nhiều thao tác liên tiếp + cross-viewer chưa có test tự động.