diff --git a/specs/001-build-an-application/tasks.md b/specs/001-build-an-application/tasks.md index d3ce158..6ed51ed 100644 --- a/specs/001-build-an-application/tasks.md +++ b/specs/001-build-an-application/tasks.md @@ -91,31 +91,31 @@ ### Implementation for User Story 1 -- [ ] T040 [P] [US1] Create Product model in app/models/product.py with YAML loading -- [ ] T041 [P] [US1] Create Feedback model in app/models/feedback.py with validation -- [ ] T042 [US1] Implement FeedbackStorageService in app/services/feedback_storage.py (depends on T040, T041) -- [ ] T043 [US1] Implement create_feedback method in FeedbackStorageService (UUID generation, directory creation) -- [ ] T044 [US1] Implement save_metadata method in FeedbackStorageService (YAML writing) -- [ ] T045 [US1] Implement save_content method in FeedbackStorageService (text file writing) -- [ ] T046 [US1] Implement save_attachments method in FeedbackStorageService (file copying with sanitization) -- [ ] T047 [US1] Integrate ClamAV scanning in app/utils/file_validator.py with clamd library -- [ ] T048 [US1] Create submission routes blueprint in app/routes/submission.py -- [ ] T049 [US1] Implement GET /submit/{product_slug} route returning submission form template -- [ ] T050 [US1] Create submission form template in app/templates/submission_form.html -- [ ] T051 [US1] Implement POST /submit/{product_slug} route with form handling -- [ ] T052 [US1] Add validation logic in POST route (text or files required, max 3 files, etc.) -- [ ] T053 [US1] Add file type validation in POST route using file_validator -- [ ] T054 [US1] Add file size validation in POST route (max 10MB per file) -- [ ] T055 [US1] Add ClamAV virus scanning in POST route before storage -- [ ] T056 [US1] Integrate FeedbackStorageService in POST route to save feedback -- [ ] T057 [US1] Add rate limiting decorator to POST route (10/hour/IP) -- [ ] T058 [US1] Create success confirmation template in app/templates/submission_success.html -- [ ] T059 [US1] Create error display template in app/templates/submission_error.html -- [ ] T060 [US1] Add error handling for archived products (404 response) -- [ ] T061 [US1] Add error handling for non-existent products (404 response) -- [ ] T062 [US1] Register submission blueprint in app/__init__.py -- [ ] T063 [US1] Create test product config.yaml in data/products/test-product/ for testing -- [ ] T064 [US1] Verify no IP address logging in feedback metadata (FR-055 compliance) +- [X] T040 [P] [US1] Create Product model in app/models/product.py with YAML loading +- [X] T041 [P] [US1] Create Feedback model in app/models/feedback.py with validation +- [X] T042 [US1] Implement FeedbackStorageService in app/services/feedback_storage.py (depends on T040, T041) +- [X] T043 [US1] Implement create_feedback method in FeedbackStorageService (UUID generation, directory creation) +- [X] T044 [US1] Implement save_metadata method in FeedbackStorageService (YAML writing) +- [X] T045 [US1] Implement save_content method in FeedbackStorageService (text file writing) +- [X] T046 [US1] Implement save_attachments method in FeedbackStorageService (file copying with sanitization) +- [X] T047 [US1] Integrate ClamAV scanning in app/utils/file_validator.py with clamd library +- [X] T048 [US1] Create submission routes blueprint in app/routes/submission.py +- [X] T049 [US1] Implement GET /submit/{product_slug} route returning submission form template +- [X] T050 [US1] Create submission form template in app/templates/submission_form.html +- [X] T051 [US1] Implement POST /submit/{product_slug} route with form handling +- [X] T052 [US1] Add validation logic in POST route (text or files required, max 3 files, etc.) +- [X] T053 [US1] Add file type validation in POST route using file_validator +- [X] T054 [US1] Add file size validation in POST route (max 10MB per file) +- [X] T055 [US1] Add ClamAV virus scanning in POST route before storage +- [X] T056 [US1] Integrate FeedbackStorageService in POST route to save feedback +- [X] T057 [US1] Add rate limiting decorator to POST route (10/hour/IP) +- [X] T058 [US1] Create success confirmation template in app/templates/submission_success.html +- [X] T059 [US1] Create error display template in app/templates/submission_error.html +- [X] T060 [US1] Add error handling for archived products (404 response) +- [X] T061 [US1] Add error handling for non-existent products (404 response) +- [X] T062 [US1] Register submission blueprint in app/__init__.py +- [X] T063 [US1] Create test product config.yaml in data/products/test-product/ for testing +- [X] T064 [US1] Verify no IP address logging in feedback metadata (FR-055 compliance) **Checkpoint**: At this point, User Story 1 should be fully functional - anonymous feedback submission works end-to-end