feat: document versioning, templates, ZIP backup/restore, and Open/Edit workflow
Backend: - schema.js: add document_templates, template_versions, document_versions tables; migrate documents with template_id/template_version_id columns; auto-seed Version 1 for all 190 existing documents - templateController.js (NEW): full CRUD + file upload/download for templates and template versions - templates.js route (NEW): /api/templates endpoints - documentController.js: add getDocumentVersions, uploadDocumentVersion, downloadDocumentVersion; uploadDocument now seeds Version 1 on creation - documents.js: wire GET /:id/versions, POST /:id/upload-version - backupController.js: upgrade backup to ZIP archive (DB + student files + template files + SHA-256 manifest); restore handles ZIP and legacy .db; safety backup taken before every restore - package.json: add archiver + unzipper dependencies Frontend: - template_model.dart (NEW): DocumentTemplateModel + TemplateVersionModel entities - document_version_model.dart (NEW): DocumentVersionModel entity - template_repository.dart (NEW): Dio-based template API client - document_repository.dart: add getDocumentVersions, uploadDocumentVersion, downloadDocumentVersion methods - document_preview_modal.dart: add Open / Open With (Windows rundll32 OpenAs_RunDLL / Android chooser) / Edit (download-temp -> open -> upload prompt) / Upload New Version (FilePicker) / Version History actions - document_version_history_sheet.dart (NEW): draggable bottom sheet listing all document versions with per-version Preview + Download - file_folder_card.dart: add Open With, Edit, Upload New Version, Version History items to context menu - documents_screen.dart: wire open_with, edit, upload_version, version_history, restore action cases; import version history sheet Bugfix: - student_profile_modal.dart: remove enrollment.status access that caused NoSuchMethodError (enrollments table has no status column)
This commit is contained in:
1 parent
e2f10f6260
commit
1a20994749
19 files changed
+2548
-297
No files matched your search
@@ -19,6 +19,7 @@
|
||||
"license": "ISC",
|
||||
"type": "commonjs",
|
||||
"dependencies": {
|
||||
"archiver": "^8.0.0",
|
||||
"bcrypt": "^6.0.0",
|
||||
"better-sqlite3": "^12.9.0",
|
||||
"cors": "^2.8.6",
|
||||
@@ -30,7 +31,8 @@
|
||||
"morgan": "^1.10.1",
|
||||
"multer": "^2.1.1",
|
||||
"nodemailer": "^9.0.6",
|
||||
"sharp": "^0.35.4"
|
||||
"sharp": "^0.35.4",
|
||||
"unzipper": "^0.12.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"nodemon": "^3.1.14"
|
||||
|
||||
Reference in new issue
Block a user