User Module
Overview
The User module manages user profiles and test result history in the MS-dTMT application. It provides functionality for creating, viewing, and managing user profiles along with storing and displaying their test performance results.
Module Structure
The User module follows a clean architecture approach with three distinct layers:
Architectural Layers:
Key Features
User profile creation and management
Selection of active user from multiple profiles
Storage of TMT test results by user
Viewing test history with performance metrics
Deletion of user profiles with associated test results
Core Components
Presentation Layer
Screens: -
RegisterUserScreen: Form for creating new user profiles -CurrentUserDataScreen: View and manage existing user profile -UserResultHistoryScreen: Display test results history -UserScreenBase: Base class for shared screen functionalityControllers: -
UserProfileController: Manages user profile state and operations -TestResultLocalDataController: Handles test result data operationsBindings: -
UserProfileBinding: Dependency injection for user profile components -UserHistoryBinding: Dependency injection for history components
Domain Layer
Entities: -
UserProfile: Core domain entity with user identification and demographic information -UserTestLocalDataResult: Domain entity for test result dataRepository Interfaces: -
UserProfileRepository: Interface for user profile data operations -TestResultLocalDataRepository: Interface for test result operations
Data Layer
Models: -
UserProfileModel: Data model for user profile serialization -UserTestResultLocalDataModel: Data model for test result serializationData Sources: -
UserProfileDataSource: Interface for user data storage operations -TestResultLocalDataSource: Interface for test result storage operations
Database Design
The User module utilizes SQLite database with the following tables:
- userProfilesTable:
userId (TEXT PRIMARY KEY)
nickname (TEXT)
sex (TEXT)
birthDate (TEXT)
educationLevel (TEXT)
- userTestResultsTable:
referenceCode (TEXT)
userId (TEXT FOREIGN KEY)
date (TEXT)
tmtATime (REAL)
tmtBTime (REAL)
User Registration Flow
User enters profile information (nickname, sex, birth date, education level)
System validates input (required fields, unique nickname)
On validation success, system: - Generates UUID for the user - Creates UserProfile entity - Converts to UserProfileModel - Stores in SQLite database - Sets as current active user
Integration Points
The User module integrates with:
Home Module: For user selection and navigation to user screens
TMT Test Module: For recording test results associated with users
Database Services: For persistent storage of user data
Navigation System: For routing between user-related screens