session start works

This commit is contained in:
aodulov
2025-10-10 12:48:06 +03:00
parent 556df015e8
commit 3c192b136c
51 changed files with 29002 additions and 46 deletions

View File

@@ -0,0 +1,71 @@
# Data Model
**Feature**: Anonymous Desire Aggregator
**Date**: 2025-10-09
This document defines the key data entities for the feature, with notes on where the state is managed.
---
### 1. Session
Represents a single decision-making event. **Note**: This object lives in the browser's Local Storage and is synchronized between clients via WebSocket messages.
| Attribute | Type | Description | Notes |
|---|---|---|---|
| `sessionId` | String | Unique identifier for the session. | The only piece of session data the backend is aware of. |
| `topic` | String | The subject of the session. | Set by the creator client. |
| `participantCount` | Integer | The number of expected participants. | Set by the creator client. |
| `status` | Enum | The current state of the session. | `WAITING`, `ANALYZING`, `COMPLETE`, `LOCKED`. |
| `participants` | Array\[Participant] | List of participants in the session. | Managed by clients. |
| `desireSets` | Array\[DesireSet] | List of all desire sets submitted by participants. | Managed by clients. |
| `decision` | Decision | The final calculated result. | Received from backend and stored by clients. |
---
### 2. Participant
Represents an anonymous user in the session. **Note**: Lives within the `Session` object in Local Storage.
| Attribute | Type | Description |
|---|---|---|
| `participantId` | String | Unique identifier for the participant (e.g., a random ID generated by the client). |
| `isCreator` | Boolean | Flag to identify the participant who initiated the session. |
| `hasSubmitted` | Boolean | Flag to indicate if the participant has submitted their desires. |
---
### 3. Desire Set
Represents the raw text input from a single participant. **Note**: Lives within the `Session` object in Local Storage.
| Attribute | Type | Description |
|---|---|---|
| `participantId` | String | The ID of the participant who submitted this set. |
| `wants` | Array\[String] | List of raw text desires the user wants. |
| `accepts` | Array\[String] | List of raw text desires the user accepts. |
| `noGoes` | Array\[String] | List of raw text desires the user does not want. |
---
### 4. Semantic Desire
Represents a unique conceptual desire identified by the LLM analysis. **Note**: This is a read-only, transient data structure. It exists in the `Decision` object.
| Attribute | Type | Description |
|---|---|---|
| `title` | String | The canonical name for the desire group. |
| `rawInputs` | Array\[String] | The list of original user text inputs that were grouped into this desire. |
---
### 5. Decision
Represents the final, categorized output of the analysis. **Note**: Lives within the `Session` object in Local Storage.
| Attribute | Type | Description |
|---|---|---|
| `goTos` | Array\[Semantic Desire] | Desires everyone wants. |
| `alsoGoods` | Array\[Semantic Desire] | Desires some want and others accept. |
| `considerables` | Array\[Semantic Desire] | Other desires that were wanted or accepted. |
| `noGoes` | Array\[Semantic Desire] | Desires that at least one person does not want. |