|
| 1 | +2. File Handling Implementation for Submission System |
| 2 | +##################################################### |
| 3 | + |
| 4 | +Status |
| 5 | +****** |
| 6 | + |
| 7 | +**Provisional** *2025-02-14* |
| 8 | + |
| 9 | +Implemented by https://github.com/openedx/edx-submissions/pull/286 |
| 10 | + |
| 11 | +Context |
| 12 | +******* |
| 13 | + |
| 14 | +As part of the XQueue migration effort detailed in ADR 0001, we need to implement a file handling system within edx-submissions. Currently, XQueue manages file submissions through a tightly coupled approach. |
| 15 | + |
| 16 | +### Current Limitations |
| 17 | + |
| 18 | +1. **Inadequate File Management**: XQueue's approach relies on JSON strings in character fields, with size constraints and manual URL manipulation for file handling. |
| 19 | + |
| 20 | +2. **Process Inefficiencies**: The current system uses synchronous HTTP for file retrieval, lacks proper validation, and tightly couples submission processing with file handling. |
| 21 | + |
| 22 | +3. **Integration Challenges**: External graders depend on specific URL formats with HTTP-based retrieval, embedding file information directly in submission payloads. |
| 23 | + |
| 24 | +Decision |
| 25 | +******** |
| 26 | + |
| 27 | +We will implement a dedicated file management system for the assessment submission process, focusing on workflow and educational needs: |
| 28 | + |
| 29 | +1. **Centralized Storage**: Create a unified repository for student-submitted files, ensuring they are properly associated with their assessments and accessible throughout the grading process. |
| 30 | + |
| 31 | +2. **Streamlined Workflow**: Design a clear process where files are automatically processed during submission creation, securely stored, and efficiently delivered to grading systems. |
| 32 | + |
| 33 | +3. **Consistent Experience**: Maintain compatibility with existing systems to ensure a smooth transition, allowing instructors and external graders to access files without changes to their established workflows. |
| 34 | + |
| 35 | +Consequences |
| 36 | +************ |
| 37 | + |
| 38 | +Positive: |
| 39 | +--------- |
| 40 | + |
| 41 | +1. **Architecture**: Clean separation of concerns, improved maintainability, better error handling, optimized database access |
| 42 | + |
| 43 | +2. **Integration**: Seamless xqueue-watcher compatibility, support for existing workflows, minimal client code changes |
| 44 | + |
| 45 | +3. **Operations**: Robust file validation, improved tracking, better error visibility, simplified lifecycle management |
| 46 | + |
| 47 | +Negative: |
| 48 | +--------- |
| 49 | + |
| 50 | +1. **Technical**: Additional database structures |
| 51 | + |
| 52 | +2. **Migration**: Temporary system complexity, additional testing needs |
| 53 | + |
| 54 | +3. **Performance**: File processing overhead |
| 55 | + |
| 56 | +References |
| 57 | +********** |
| 58 | + |
| 59 | +Current System Documentation: |
| 60 | + * XQueue Repository: https://github.com/openedx/xqueue |
| 61 | + * XQueue Watcher Repository: https://github.com/openedx/xqueue-watcher |
| 62 | + |
| 63 | +Related Repositories: |
| 64 | + * edx-submissions: https://github.com/openedx/edx-submissions |
| 65 | + * edx-platform: https://github.com/openedx/edx-platform |
| 66 | + * XQueue Repository: https://github.com/openedx/xqueue |
| 67 | + |
| 68 | +Related Documentation: |
| 69 | + * ADR 0001: Creation of ExternalGraderDetail Model for XQueue Migration |
| 70 | + |
| 71 | +Future Event Integration: |
| 72 | + * Open edX Events Framework: https://github.com/openedx/openedx-events |
| 73 | + * Event Bus Documentation: https://openedx.atlassian.net/wiki/spaces/AC/pages/124125264/Event+Bus |
| 74 | + |
| 75 | +Related Architecture Documents: |
| 76 | + * Open edX Architecture Guidelines: https://openedx.atlassian.net/wiki/spaces/AC/pages/124125264/Architecture+Guidelines |
| 77 | + |
0 commit comments