Timer implemented. No working tests.

This commit is contained in:
AG
2025-12-10 23:07:31 +02:00
parent 3df4abba47
commit b86664816d
24 changed files with 806 additions and 116 deletions

View File

@@ -29,7 +29,7 @@ The system relies on JWT-based authentication.
* **Input**: Email, Password.
* **Logic**:
* Email must be unique.
* Creates a `UserProfile` with default values (e.g., default weight 70kg) upon account creation.
* Creates a `UserProfile` with default values (e.g., default weight 70kg, default rest timer 120s) upon account creation.
* Sets `isFirstLogin` to true.
* **3.1.3 First-Time Setup (Password Change)**
* **Trigger**: If `User.isFirstLogin` is true.
@@ -50,6 +50,7 @@ Users can structure their training via Plans.
* User selects exercises from the global/personal library.
* **Ordering**: Exercises must be ordered (0-indexed).
* **Weighted Flag**: specific exercises in a plan can be marked as `isWeighted` (visual indicator).
* **Rest Time**: specific exercises can have a defined `restTime` (seconds).
* **Logic**: Supports reordering capabilities via drag-and-drop in UI.
* **3.2.2 Plan Deletion**
* Standard soft or hard delete (Cascades to PlanExercises).
@@ -98,7 +99,32 @@ The core feature. States: **Idle**, **Active Session**, **Sporadic Mode**.
* `POST /sessions/quick-log/set`:
* Finds OR Creates the daily Quick Log session.
* Appends the set.
* **UI**: Separate "Sporadic Mode" view specialized for fast, one-off entries without a timer or plan context.
* **UI**: Separate "Sporadic Mode" view specialized for fast, one-off entries without a timer or plan context. Matches "Free Session" timer logic (see 3.4.3).
* **3.4.3 Rest Timer**
* **Concept**: A configurable timer to track rest periods between sets.
* **Contexts**:
* **Free Session / Quick Log**:
* Manual setup.
* Default value: 2 minutes (120s).
* **Persistence**: The last manually set value becomes the new default for the user.
* **Planned Session**:
* **Config**: Each step in a plan can have a specific `restTime` (seconds).
* **Auto-Set**: When a set is logged, the timer resets to the value defined for the *current* step.
* **Fallback**: If plan step has no `restTime`, use User's default.
* **Behavior**:
* **Start**: Manual trigger by user.
* **Countdown**: Visual display.
* **Completion**:
* Audio signal (3 seconds).
* Visual alert (Red color for 3 seconds).
* Auto-reset to next expected rest time.
* **UI Component**:
* Floating Action Button (FAB).
* **Idle**: Green Icon.
* **Running**: Shows digits.
* **Finished**: Red animation.
### 3.5. History & Analysis
* **3.5.1 Session History**