brighter-trading/markdown/App_UseCase-Seq_Diagrams.md

299 lines
6.7 KiB
Markdown

### Use Case Low Detail Overview:
```plantuml
@startuml
left to right direction
skinparam packageStyle rectangle
actor "User Interface" as User
rectangle "Flask App" as App {
usecase "View Homepage" as ViewHomepage
usecase "Change Settings" as ChangeSettings
usecase "Fetch Candle History" as FetchCandleHistory
usecase "Initialize Indicators" as InitializeIndicators
usecase "Sign Up" as SignUp
usecase "Sign In" as SignIn
usecase "Sign Out" as SignOut
User --> ViewHomepage
User --> ChangeSettings
User --> FetchCandleHistory
User --> InitializeIndicators
User --> SignUp
User --> SignIn
User --> SignOut
}
@enduml
```
### Use Case Medium Detail Overview:
```plantuml
@startuml
left to right direction
skinparam packageStyle rectangle
actor "User Interface" as User
rectangle "Flask App" as App {
usecase "View Homepage" as ViewHomepage
usecase "Change Settings" as ChangeSettings
usecase "Fetch Candle History" as FetchCandleHistory
usecase "Initialize Indicators" as InitializeIndicators
usecase "Sign Up" as SignUp
usecase "Sign In" as SignIn
usecase "Sign Out" as SignOut
User --> ViewHomepage
User --> ChangeSettings
User --> FetchCandleHistory
User --> InitializeIndicators
User --> SignUp
User --> SignIn
User --> SignOut
ViewHomepage --> (Log In)
ViewHomepage --> (Connect to Alpaca Exchange)
ViewHomepage --> (Retrieve Rendered Data)
ChangeSettings --> (Adjust Setting)
FetchCandleHistory --> (Retrieve Candle History)
InitializeIndicators --> (Retrieve Indicator Data)
SignUp --> (Create New User)
SignUp --> (Log In)
SignIn --> (Log In)
SignOut --> (Log Out)
}
@enduml
```
### Use Case View Homepage:
```plantuml
@startuml
left to right direction
skinparam packageStyle rectangle
actor "User Interface" as User
rectangle "Flask App" as App {
usecase "View Homepage" as ViewHomepage
usecase "Log In" as LogIn
usecase "Connect to Alpaca Exchange" as ConnectToAlpaca
usecase "Retrieve Rendered Data" as RetrieveRenderedData
usecase "Retrieve Candle History" as RetrieveCandleHistory
usecase "Retrieve Indicator Data" as RetrieveIndicatorData
usecase "Log Out" as LogOut
User --> ViewHomepage
ViewHomepage --> LogIn
ViewHomepage --> ConnectToAlpaca
ViewHomepage --> RetrieveRenderedData
ViewHomepage --> RetrieveCandleHistory
ViewHomepage --> RetrieveIndicatorData
ViewHomepage --> LogOut
LogIn --> (Authenticate User)
LogIn --> (Set User Session)
ConnectToAlpaca --> (Set Alpaca API Keys)
ConnectToAlpaca --> (Connect to Alpaca Exchange)
RetrieveRenderedData --> (Load or Create User)
RetrieveRenderedData --> (Connect User to Exchange)
RetrieveRenderedData --> (Get Rendered Data)
RetrieveCandleHistory --> (Get Candle History)
RetrieveIndicatorData --> (Get Indicator Data)
LogOut --> (Log Out User)
}
@enduml
```
### Sequence Request Homepage
```plantuml
@startuml
actor "User Interface" as User
participant App as "Flask App"
participant BrighterTrades as "BrighterTrades"
participant Config as "Config"
participant UserStorage as "User Storage"
User -> App: Request Homepage
App -> BrighterTrades: Create BrighterTrades object
App -> Config: Load server configuration
App -> UserStorage: Load or create user
App -> BrighterTrades: Connect user to exchange
BrighterTrades -> Config: Retrieve API keys
App -> BrighterTrades: Get rendered data
App -> BrighterTrades: Get JS initialization data
App --> User: Serve Homepage
@enduml
```
### Use Case Change Settings:
```plantuml
@startuml
left to right direction
skinparam packageStyle rectangle
actor "User Interface" as User
rectangle "Flask App" as App {
usecase "Change Settings" as ChangeSettings
usecase "Adjust Setting" as AdjustSetting
User --> ChangeSettings
ChangeSettings --> AdjustSetting
AdjustSetting --> (Retrieve User Session)
AdjustSetting --> (Check User Login)
AdjustSetting --> (Get Setting)
AdjustSetting --> (Update Setting)
}
@enduml
```
### Sequence Change Settings
```plantuml
@startuml
actor "User Interface" as User
participant App as "Flask App"
participant BrighterTrades as "BrighterTrades"
participant Config as "Config"
participant UserStorage as "User Storage"
User -> App: Submit Settings Change
App -> BrighterTrades: Adjust Setting
BrighterTrades -> UserStorage: Get User Data
App --> User: Redirect to Homepage
@enduml
```
### Use Case Fetch Candle History:
```plantuml
@startuml
left to right direction
skinparam packageStyle rectangle
actor "User Interface" as User
rectangle "Flask App" as App {
usecase "Fetch Candle History" as FetchCandleHistory
usecase "Retrieve Candle History" as RetrieveCandleHistory
User --> FetchCandleHistory
FetchCandleHistory --> RetrieveCandleHistory
RetrieveCandleHistory --> (Get User Session)
RetrieveCandleHistory --> (Check User Login)
RetrieveCandleHistory --> (Retrieve Chart View)
RetrieveCandleHistory --> (Fetch Candle Data)
}
@enduml
```
### Sequence Request candle history
```plantuml
@startuml
actor "User Interface" as User
participant App as "Flask App"
participant BrighterTrades as "BrighterTrades"
participant Candles as "Candles"
participant UserStorage as "User Storage"
User -> App: Request Candle History
App -> BrighterTrades: Process Incoming Message
BrighterTrades -> UserStorage: Get User Data
App -> Candles: Get Candle History
Candles --> App: Return Candle History
App --> User: Serve Candle History
@enduml
```
### Sequence Initialize Indicators:
```plantuml
@startuml
actor "User Interface"
"User Interface" -> app: Requests initialized indicators
activate app #005500
app -> Indicators: initialize indicators
activate Indicators #005500
Indicators -> app: return initialized indicators
deactivate Indicators
app -> "User Interface": Returns initialized indicators
deactivate app
@enduml
```
### Sequence Sign in:
```plantuml
@startuml
actor "User Interface"
"User Interface" -> app: requests "Sign In"
activate app #005500
app -> "Sign In": enter email and password
activate "Sign In" #005500
"Sign In" -> app: authenticate user
deactivate "Sign In"
app -> "User Interface": Return "Signed In" result
deactivate app
@enduml
```
### Sequence Sign up:
```plantuml
@startuml
actor "User Interface" as User
User -> app: send "Sign Up" request
activate app #005500
app -> "Sign Up": email, password, and confirm password
activate "Sign Up" #005500
"Sign Up" -> app: create new user
deactivate "Sign Up"
app -> User: Return "Signed Up" result
deactivate app
@enduml
```
### Sequence Sign out:
```plantuml
@startuml
actor "User Interface" as User
User -> app: send "Sign Out" request
activate app #005500
app -> "Sign Out": sign out user
activate "Sign Out" #005500
"Sign Out" -> app: clear user data
deactivate "Sign Out"
app -> User: return "Signed Out" result
deactivate app
@enduml
```