Deleted obsolete files

This commit is contained in:
aodulov
2025-10-13 11:00:02 +03:00
parent 272c4f6148
commit 7be22129f6
11 changed files with 49 additions and 1301 deletions

View File

@@ -1,39 +0,0 @@
# Data Model: Afraid to Ask
**Feature Branch**: `004-afraid-to-ask` | **Date**: 2025-10-13 | **Spec**: [../spec.md](D:\Coding\unisono\specs\004-afraid-to-ask\spec.md)
**Input**: Feature specification from `/specs/004-afraid-to-ask/spec.md`
## Entities
### Session
Represents a common session for multiple anonymous users.
- **id**: Unique identifier for the session (string)
### Idea
Represents an anonymous user's input within a session, which can be a "Want", "Accept", or "Afraid to Ask" idea.
- **id**: Unique identifier for the idea (string)
- **sessionId**: ID of the session to which the idea belongs (string, foreign key to Session.id)
- **type**: Type of the idea (enum: `Want`, `Accept`, `AfraidToAsk`)
- **content**: The raw text content of the idea (string). For `AfraidToAsk` ideas, this field will store the *encrypted* content.
- **privacyStatus**: Indicates the visibility of the idea (enum: `Private`, `Public`). `AfraidToAsk` ideas start as `Private`.
- **isCompliant**: (Boolean, optional) For `AfraidToAsk` ideas, indicates if it semantically complies with another user's "Want" or "Accept" idea within the *same session*. This is determined by the backend.
- **createdAt**: Timestamp of when the idea was created (datetime)
## Relationships
- **Session** 1:N **Idea**: A session can contain multiple ideas from different anonymous users.
## Data Flow for "Afraid to Ask" Ideas
1. **Client-side Encryption**: When an anonymous user submits an "Afraid to Ask" idea, the raw content is encrypted client-side using an ephemeral key derived from the current session. The *encrypted* content is then stored in the user's browser local storage.
2. **Server-side Processing (Ephemeral)**: When semantic comparison is required, the encrypted idea is sent to the backend via WebSocket, along with the `sessionId`.
* The backend decrypts the idea in memory (using a server-managed key or derived from the `sessionId`).
* Semantic comparison is performed using an LLM (Google Cloud Natural Language API) against other "Want" and "Accept" ideas within the *same session*.
* The raw decrypted idea is immediately discarded from memory.
* The server stores the *encrypted* idea and its `isCompliant` status (and other metadata) in an ephemeral session store or in-memory cache, tied to the `sessionId`.
3. **Session Termination**: Upon session termination (e.g., when all users leave the common session), all encrypted "Afraid to Ask" ideas and their associated metadata are purged from the server-side ephemeral storage.
4. **Result Display**: Only `Public` ideas (including `AfraidToAsk` ideas that have become `Public` due to compliance within the session) are sent to clients via WebSocket for display.