chore: remove obsolete feature inventory documentationl
This commit is contained in:
@@ -1,43 +0,0 @@
|
||||
# DocQube (PDF Engine) Feature Inventory
|
||||
|
||||
## STEP 1 — SCOPE
|
||||
- **Product Name:** DocQube (Internal project name: "PDF Engine")
|
||||
- **Tech Stack:**
|
||||
- **Frontend:** React (TSX), Vite, Tailwind CSS, custom PDF viewer components (no off-the-shelf PDF.js renderer wrapper).
|
||||
- **Backend:** FastAPI (Python), interacting with a custom C++ PDF engine via Python bindings (WASM/C++ bridge).
|
||||
- **Structure:** Monorepo containing a `frontend` and `gateway` directory. Auditing the entire cohesive product (the web-based PDF editor).
|
||||
|
||||
## STEP 2 & 3 — VERIFIED INVENTORY
|
||||
|
||||
| Feature Name | What it does | Build Status | Evidence | Demoable end-to-end? | Gating / dependencies | Docs mismatch | Assessment confidence |
|
||||
|---|---|---|---|---|---|---|---|
|
||||
| **Document Upload & Open** | Allows users to upload a local PDF file into the web editor. | LIVE | `App.tsx` (`handleUpload`), `crud.py` (`upload_document`) | Yes | Requires backend engine | None | High, core flow fully wired. |
|
||||
| **Password Protected PDFs** | Prompts for a password when attempting to open an encrypted PDF document. | LIVE | `PasswordModal.tsx`, `App.tsx` (`passwordPrompt`), `crud.py` catches "Password required" | Yes | None | None | High, error handling and UI modal exist. |
|
||||
| **Document Export / Save** | Downloads the modified PDF document back to the user's device. | LIVE | `App.tsx` (`handleExport`), `edits.py` (`save_full` / `save_incremental`) | Yes | None | None | High, backend saving mechanisms are implemented. |
|
||||
| **Print Document** | Prints the current state of the document using the browser's native print dialog. | LIVE | `App.tsx` (`handlePrint`), creates hidden iframe | Yes | None | None | High, standard browser API implementation. |
|
||||
| **Text Search** | Searches the document for specific text (supports case-sensitive and whole-word modes). | LIVE | `App.tsx` (`searchQuery`), `content.py` (`search_document`), `SearchOverlayLayer.tsx` | Yes | None | None | High, search API and UI overlay implemented. |
|
||||
| **Undo / Redo** | Reverts or reapplies recent edits and annotations. | LIVE | `App.tsx` (`hist.stack`), relies on immutable document IDs | Yes | None | None | High, tracks document versions gracefully. |
|
||||
| **Page Rotation** | Rotates a specific page by 90 degrees. | LIVE | `App.tsx` (`handleRotate`), `edits.py` (`PageRotationOperation`) | Yes | Requires `canAssemble` permission | None | High. |
|
||||
| **Page Deletion** | Removes a specific page from the document. | LIVE | `App.tsx` (`handleDeletePage`), `edits.py` (`PageDeletionOperation`) | Yes | Requires `canAssemble` permission | None | High. |
|
||||
| **Page Reordering** | Moves a page to a new index within the document. | LIVE | `App.tsx` (`handleReorderPage`), `edits.py` (`PageReorderOperation`) | Yes | Requires `canAssemble` permission | None | High. |
|
||||
| **Highlight Annotation** | Draws a colored, semi-transparent highlight over selected text. | LIVE | `PDFViewer.tsx` (`handleTextSelection`), `edits.py` (`HighlightOperation`) | Yes | Requires `canAnnotate` permission | None | High. |
|
||||
| **Text Decorations** | Applies underline, strikeout, or squiggly lines to selected text. | LIVE | `App.tsx` (`handleDecorateText`), `edits.py` (`UnderlineOperation` etc.) | Yes | Requires `canAnnotate` permission | None | High. |
|
||||
| **Freehand Drawing (Ink)** | Allows freehand drawing with adjustable color and thickness. | LIVE | `Toolbar.tsx` (draw tool), `edits.py` (`FreehandOperation`) | Yes | Requires `canAnnotate` permission | None | High. |
|
||||
| **Sticky Notes / Comments** | Places a clickable comment icon with an author and text content. | LIVE | `App.tsx` (`handleAnnotationAdded`), `edits.py` (`CommentOperation`) | Yes | Requires `canAnnotate` permission | None | High. |
|
||||
| **Text Box (Free Text)** | Overlays custom text with adjustable font size and color anywhere on the page. | LIVE | `App.tsx` (`handlePlaceText`), `edits.py` (`TextOverlayOperation`) | Yes | Requires `canAnnotate` permission | None | High. |
|
||||
| **Stamps** | Places pre-configured text stamps (e.g., "APPROVED") with bold styling. | LIVE | `Toolbar.tsx` (`STAMP_PRESETS`), `App.tsx` (`handlePlaceStamp`) | Yes | Requires `canAnnotate` permission | None | High, reuses TextOverlay under the hood. |
|
||||
| **Visual Signatures** | Allows users to create (draw, type, upload) and place a visual signature. | LIVE | `SignatureModal.tsx`, `App.tsx` (`handlePlaceSignature`), `edits.py` (`ImageOverlayOperation`) | Yes | Requires `canAnnotate` permission | None | High, includes base64 image processing in backend. |
|
||||
| **Permanent Redaction** | Blacks out areas and permanently removes underlying text, images, and vectors. | LIVE | `App.tsx` (`handleMarkRedaction`, `handleApplyRedactions`), `edits.py` (`RedactionOperation`) | Yes | Requires `canModify` permission | None | High, recently updated to support hover preview and batch apply. |
|
||||
| **Form Filling** | Allows users to fill out interactive PDF form fields. | LIVE | `PDFViewer.tsx` (`onFieldChange`), `edits.py` (`UpdateFieldOperation`) | Yes | Requires `canFillForms` permission | None | High. |
|
||||
| **Paragraph Text Editing** | Click to edit existing PDF text with automatic paragraph reflow and justification. | LIVE | `Toolbar.tsx` (`edit_text`), `edits.py` (`ReflowParagraphOperation` / `ReplaceTextOperation`) | Yes | Requires `canModify` permission | None | High, complex reflow logic wired to backend. |
|
||||
| **Stream / Raw Text Edit** | Advanced byte-level surgical text editing without reflow. | IN-DEV | `Toolbar.tsx` (labeled as "Beta"), `StreamEditLayer.tsx` | Yes | None | None | High, explicitly marked as Beta in the UI. |
|
||||
| **Document Inspector** | Side panel showing pages, outline/bookmarks, annotations list, document metadata, and fonts. | LIVE | `InspectorPanel.tsx`, `content.py` (`get_document_annotations`, `get_page_model`) | Yes | None | None | High. |
|
||||
|
||||
|
||||
### A) Docs/marketing claims NOT supported by code
|
||||
*No significant `README.md` marketing claims were evaluated since none were present in the immediate workspace, but within the code, the "Signature" tool clearly flags itself as "Visual signature — not certified" (`Toolbar.tsx:145`). If marketing claims "digital signatures" or "cryptographic signing", the code does not support it.*
|
||||
|
||||
### B) Open questions for the team
|
||||
1. **Stream Edit (Beta):** The `stream_edit` tool is explicitly marked as beta for "surgical byte-level edit". Is this intended to be promoted to sales, or kept as a power-user/developer toggle?
|
||||
2. **Signature Storage:** Signatures are maintained in local state (`pendingSignature`). If a user refreshes the page, they must recreate their signature. Are there plans to persist visual signatures to a user profile?
|
||||
3. **Collaboration:** The architecture passes an `author` string to annotations, but there is no apparent multiplayer or auth/login system wired up in the immediate frontend logic (the default author is hardcoded to `'Current User'` in `PDFViewer.tsx:325`). Does sales intend to sell this as a collaborative tool?
|
||||
Reference in New Issue
Block a user