'Afraid to Ask' implemented

This commit is contained in:
aodulov
2025-10-13 13:14:30 +03:00
parent 09269190c1
commit 5f8541a5f3
20 changed files with 2081 additions and 190 deletions

View File

@@ -19,8 +19,8 @@
**Purpose**: Project initialization and basic structure
- [ ] T001 Verify Node.js/TypeScript project with React, Material-UI, WebSocket library, Google Cloud Natural Language API dependencies are correctly configured in `package.json` and `tsconfig.json`.
- [ ] T002 [P] Verify linting and formatting tools are configured in `backend` and `frontend`.
- [x] T001 Verify Node.js/TypeScript project with React, Material-UI, WebSocket library, Google Cloud Natural Language API dependencies are correctly configured in `package.json` and `tsconfig.json`.
- [x] T002 [P] Verify linting and formatting tools are configured in `backend` and `frontend`.
---
@@ -30,14 +30,14 @@
**⚠️ CRITICAL**: No user story work can begin until this phase is complete
- [ ] T003 Ensure ephemeral server-side storage (in-memory/session store) is configured for encrypted session data.
- [ ] T004 Verify existing WebSocket communication setup can be extended for real-time updates.
- [ ] T005 Configure Google Cloud Natural Language API integration in the backend.
- [ ] T006 [P] Implement structured logging for "Afraid to Ask" data lifecycle events (submission, matching, purging).
- [ ] T007 [P] Implement metrics for semantic matching service performance and availability.
- [ ] T008 Implement access control mechanisms to ensure only the submitting user can view their "Afraid to Ask" ideas before matching.
- [ ] T009 Implement encryption for "Afraid to Ask" data at rest in ephemeral storage.
- [ ] T010 Implement secure transmission (e.g., HTTPS/WSS) for "Afraid to Ask" data.
- [x] T003 Ensure ephemeral server-side storage (in-memory/session store) is configured for encrypted session data.
- [x] T004 Verify existing WebSocket communication setup can be extended for real-time updates.
- [x] T005 Configure Google Cloud Natural Language API integration in the backend.
- [x] T006 [P] Implement structured logging for "Afraid to Ask" data lifecycle events (submission, matching, purging).
- [x] T007 [P] Implement metrics for semantic matching service performance and availability.
- [x] T008 Implement access control mechanisms to ensure only the submitting user can view their "Afraid to Ask" ideas before matching.
- [x] T009 Implement encryption for "Afraid to Ask" data at rest in ephemeral storage.
- [x] T010 Implement secure transmission (e.g., HTTPS/WSS) for "Afraid to Ask" data.
**Checkpoint**: Foundation ready - user story implementation can now begin in parallel
@@ -51,12 +51,12 @@
### Implementation for User Story 1
- [ ] T011 [US1] Update `frontend/src/components/DesireForm.tsx` to add "Afraid to Ask" input field under "What you want".
- [ ] T012 [US1] Update `frontend/src/components/DesireForm.test.tsx` to include tests for the new input field.
- [ ] T013 [US1] Modify `backend/src/routes/sessions.ts` to accept `afraidToAsk` field in the session response submission endpoint (`/sessions/{sessionId}/responses`).
- [ ] T014 [US1] Update `backend/src/services/LLMService.ts` to handle and store "Afraid to Ask" ideas privately (ephemeral storage).
- [ ] T015 [US1] Update `backend/src/tests/sessions.test.ts` to include tests for submitting "Afraid to Ask" ideas.
- [ ] T016 [US1] Update `frontend/src/pages/SessionPage.tsx` to display the user's own "Afraid to Ask" ideas.
- [x] T011 [US1] Update `frontend/src/components/DesireForm.tsx` to add "Afraid to Ask" input field under "What you want".
- [x] T012 [US1] Update `frontend/src/components/DesireForm.test.tsx` to include tests for the new input field.
- [x] T013 [US1] Modify `backend/src/routes/sessions.ts` to accept `afraidToAsk` field in the session response submission endpoint (`/sessions/{sessionId}/responses`).
- [x] T014 [US1] Update `backend/src/services/LLMService.ts` to handle and store "Afraid to Ask" ideas privately (ephemeral storage).
- [x] T015 [US1] Update `backend/src/tests/sessions.test.ts` to include tests for submitting "Afraid to Ask" ideas.
- [x] T016 [US1] Update `frontend/src/pages/SessionPage.tsx` to display the user's own "Afraid to Ask" ideas.
**Checkpoint**: At this point, User Story 1 should be fully functional and testable independently
@@ -70,11 +70,11 @@
### Implementation for User Story 2
- [ ] T017 [US2] Implement semantic comparison logic in `backend/src/services/LLMService.ts` to compare "Afraid to Ask" ideas with "Want" or "Accept" ideas.
- [ ] T018 [US2] Update `backend/src/routes/sessions.ts` to integrate semantic matching into session results generation.
- [ ] T019 [US2] Update `backend/src/tests/LLMService.refactor.test.ts` (or create new test file) to include tests for semantic matching logic.
- [ ] T020 [US2] Update `frontend/src/components/ResultsDisplay.tsx` to correctly display harmonized results, including matched "Afraid to Ask" ideas.
- [ ] T021 [US2] Update `frontend/src/components/ResultsDisplay.refactor.test.tsx` (or create new test file) to include tests for displaying matched "Afraid to Ask" ideas.
- [x] T017 [US2] Implement semantic comparison logic in `backend/src/services/LLMService.ts` to compare "Afraid to Ask" ideas with "Want" or "Accept" ideas.
- [x] T018 [US2] Update `backend/src/routes/sessions.ts` to integrate semantic matching into session results generation.
- [x] T019 [US2] Update `backend/src/tests/LLMService.refactor.test.ts` (or create new test file) to include tests for semantic matching logic.
- [x] T020 [US2] Update `frontend/src/components/ResultsDisplay.tsx` to correctly display harmonized results, including matched "Afraid to Ask" ideas.
- [x] T021 [US2] Update `frontend/src/components/ResultsDisplay.refactor.test.tsx` (or create new test file) to include tests for displaying matched "Afraid to Ask" ideas.
**Checkpoint**: At this point, User Stories 1 AND 2 should both work independently
@@ -88,9 +88,9 @@
### Implementation for User Story 3
- [ ] T022 [US3] Implement session termination logic in `backend/src/routes/sessions.ts` to purge all "Afraid to Ask" data.
- [ ] T023 [US3] Update `backend/src/tests/sessions.test.ts` to include tests for data purging upon session termination.
- [ ] T024 [US3] Update `frontend/src/services/websocket.ts` to handle session termination events and update UI accordingly.
- [x] T022 [US3] Implement session termination logic in `backend/src/routes/sessions.ts` to purge all "Afraid to Ask" data.
- [x] T023 [US3] Update `backend/src/tests/sessions.test.ts` to include tests for data purging upon session termination.
- [x] T024 [US3] Update `frontend/src/services/websocket.ts` to handle session termination events and update UI accordingly.
**Checkpoint**: All user stories should now be independently functional
@@ -100,11 +100,11 @@
**Purpose**: Improvements that affect multiple user stories
- [ ] T025 Implement UI error handling and display for semantic matching service unavailability (`FR-010`).
- [ ] T026 Implement UI placeholder display for "Harmonizing desires" during semantic matching analysis (`FR-011`).
- [ ] T027 Review and ensure adherence to general data privacy best practices for handling "Afraid to Ask" data, including data minimization and purpose limitation (`FR-012`).
- [ ] T028 Conduct a privacy impact assessment (PIA) for the "Afraid to Ask" feature.
- [ ] T029 Run quickstart.md validation.
- [x] T025 Implement UI error handling and display for semantic matching service unavailability (`FR-010`).
- [x] T026 Implement UI placeholder display for "Harmonizing desires" during semantic matching analysis (`FR-011`).
- [x] T027 Review and ensure adherence to general data privacy best practices for handling "Afraid to Ask" data, including data minimization and purpose limitation (`FR-012`).
- [x] T028 Conduct a privacy impact assessment (PIA) for the "Afraid to Ask" feature.
- [x] T029 Run quickstart.md validation.
---