3.3 KiB
3.3 KiB
PLAN: Drawings & Documents Module Implementation
🎯 Goal
Implement a robust Drawings & Documents functionality within the standalone Modules/DocumentManagement module. This module will serve as the central repository for construction documents (CAD drawings, PDFs, BIM models, contracts, specs, schedules). It will feature file upload to local storage/database, version control, categorization, and an approval workflow governed by the Contractor Admin.
🔴 User Review Required
Please review the proposed schema and the plan.
- The documents will be stored using Laravel's local storage for now (as requested), and the metadata in the database.
- Approval workflow will enforce that uploaded documents are set to a "Pending" status and only a user with the
Contractor Adminrole can change them to "Approved".
🛠️ Proposed Changes
1. 🏗️ Database & Models (database-architect)
DocumentCategoryModel:name(e.g., Site Plans, Floor Plans, MEP Drawings, Contracts, Specs)description
DocumentModel:title,description,category_id,project_id,status(Pending, Approved, Rejected)uploaded_by(User ID)
DocumentVersionModel:document_idversion_number(e.g., v1.0, v2.0)file_path(Local storage path)file_size,file_typeuploaded_by,uploaded_at
DocumentApprovalModel (Optional but good for audit logs):document_id,approved_by(Contractor Admin ID),status,comments,approved_at
2. ⚙️ Backend (backend-specialist)
DocumentController:- Standard resource methods for listing, creating, and deleting documents.
- Integration with Laravel's local filesystem to store large files securely.
- Implement versioning logic (uploading a new file to an existing document creates a new
DocumentVersion).
DocumentApprovalController:- Endpoints to approve or reject a document.
- Form Requests:
StoreDocumentRequest(validating file sizes, types).ApproveDocumentRequest.
- Policies:
- Restrict approval actions strictly to the Contractor Admin role.
3. 🎨 Frontend (frontend-specialist)
- Pages:
DocumentIndex: Data table/grid view of all documents, filterable by category, status, and project.DocumentShow: Detailed view showing document metadata, history/version list, and a preview/download button.DocumentUpload: Drag-and-drop file upload interface.
- Components:
ApprovalWorkflowComponent: UI for the Contractor Admin to review and approve/reject a document.VersionHistoryTable: A sub-table inside the document detail view to track all revisions.
4. 🧪 Testing (test-engineer)
- Feature tests for document uploads and versioning.
- Authorization tests to ensure only Contractor Admins can approve documents.
5. 🔍 Security & Verification (security-auditor)
- Ensure proper file validation (prevent malicious file uploads like
.phpor.exe). - Ensure local storage files are protected and served securely via authenticated routes, not public assets.
- Run
security_scan.pyandlint_runner.pyat the end of orchestration.
❓ Open Questions
- None at this moment. The plan covers local storage, standalone module, and the Contractor Admin approval workflow.