im so tired man
This commit is contained in:
@@ -46,16 +46,14 @@ package "③ Facade Pattern [Structural]" #FFF8E1 {
|
||||
class "VoiceCommandHandler\n<<Facade>>" as VoiceCommandHandler {
|
||||
- _ttsService : TtsService
|
||||
- _sttService : SttService
|
||||
- _router : GoRouter
|
||||
- _walkGuideBloc : WalkGuideBloc
|
||||
- _sosBloc : SosBloc
|
||||
- _notifBloc : NotificationBloc
|
||||
- _router : CommandRouter
|
||||
- _actions : Map<VoiceCommandKey, CommandAction>
|
||||
+ processText(String command) : void
|
||||
- _matchCommand(String) : VoiceCommandKey?
|
||||
- _executeCommand(VoiceCommandKey) : void
|
||||
}
|
||||
|
||||
class "WalkGuideBloc\n<<Client>>" as WalkGuideBlocFacade {
|
||||
class "WalkGuideCubit\n<<Client>>" as WalkGuideCubitFacade {
|
||||
+ onVoiceCommand(String text)
|
||||
}
|
||||
|
||||
@@ -69,8 +67,8 @@ package "③ Facade Pattern [Structural]" #FFF8E1 {
|
||||
|
||||
class "SttService " as SttServiceFacade <<Subsystem>>
|
||||
class "TtsService " as TtsServiceFacade <<Subsystem>>
|
||||
class "GoRouter\n<<Router>>" as GoRouterFacade <<Subsystem>>
|
||||
class "SosBloc " as SosBlocFacade <<Subsystem>>
|
||||
class "CommandRouter\n<<Router Adapter>>" as GoRouterFacade <<Subsystem>>
|
||||
class "CommandAction\n<<Cubit Callback>>" as CommandActionFacade <<Subsystem>>
|
||||
|
||||
class "LocationService\n<<Service>>" as LocationService <<Subsystem>>
|
||||
class "ActivityLogService\n<<Service>>" as ActivityService <<Subsystem>>
|
||||
@@ -82,11 +80,11 @@ package "③ Facade Pattern [Structural]" #FFF8E1 {
|
||||
' GET /api/v1/guardian/dashboard
|
||||
}
|
||||
|
||||
WalkGuideBlocFacade --> VoiceCommandHandler : processText()
|
||||
WalkGuideCubitFacade --> VoiceCommandHandler : processText()
|
||||
VoiceCommandHandler --> SttServiceFacade : delegates
|
||||
VoiceCommandHandler --> TtsServiceFacade : delegates
|
||||
VoiceCommandHandler --> GoRouterFacade : delegates
|
||||
VoiceCommandHandler --> SosBlocFacade : delegates
|
||||
VoiceCommandHandler --> CommandActionFacade : delegates
|
||||
|
||||
GuardianDashboardController --> GuardianDashboardService : getDashboard()
|
||||
GuardianDashboardService --> LocationService : aggregates
|
||||
|
||||
@@ -57,8 +57,8 @@ package "④ Repository Pattern [Structural — Proxy]" #FFF3E0 {
|
||||
}
|
||||
|
||||
class "WalkGuideRepositoryImpl\n<<Proxy>>" as WalkGuideRepoImpl {
|
||||
- _remoteDataSource : WalkGuideRemoteDataSource
|
||||
- _localDataSource : WalkGuideLocalDataSource
|
||||
- _apiClient : ApiClient
|
||||
- _offlineQueue : OfflineQueueService
|
||||
- _connectivity : ConnectivityPlus
|
||||
+ startSession() : Either<Failure, void>
|
||||
+ logObstacle(req) : Either<Failure, void>
|
||||
@@ -72,16 +72,16 @@ package "④ Repository Pattern [Structural — Proxy]" #FFF3E0 {
|
||||
+ syncPending() : Either<Failure, void>
|
||||
}
|
||||
|
||||
class "WalkGuideRemoteDataSource\n<<Remote>>" as RemoteDSWalk {
|
||||
class "ApiClient\n<<Remote>>" as RemoteDSWalk {
|
||||
+ startSession() : void
|
||||
+ logObstacle(req) : void
|
||||
' POST /api/v1/user/obstacle
|
||||
}
|
||||
|
||||
class "WalkGuideLocalDataSource\n<<SQLite/Drift>>" as LocalDSWalk {
|
||||
class "OfflineQueueService + LocalDatabase\n<<SQLite Cache>>" as LocalDSWalk {
|
||||
+ cacheObstacle(ObstacleLog) : void
|
||||
+ getPendingLogs() : List<ObstacleLog>
|
||||
' Drift ORM — offline first
|
||||
' SQLite-backed offline first
|
||||
}
|
||||
|
||||
WalkGuideRepo <|.. WalkGuideRepoImpl : implements
|
||||
|
||||
@@ -43,30 +43,27 @@ skinparam note {
|
||||
|
||||
package "⑤ Observer Pattern [Behavioral]" #F3E5F5 {
|
||||
|
||||
abstract class "Bloc<Event, State>\n<<Subject>>" as BlocSubject {
|
||||
abstract class "Cubit<State>\n<<Subject>>" as BlocSubject {
|
||||
# stateController : StreamController<State>
|
||||
+ {abstract} on<E>(EventHandler)
|
||||
+ add(Event event)
|
||||
+ emit(State state)
|
||||
+ stream : Stream<State>
|
||||
}
|
||||
|
||||
class "WalkGuideBloc\n<<ConcreteSubject>>" as WalkGuideBlocObs {
|
||||
+ on<StartWalkGuide>(_onStart)
|
||||
+ on<StopWalkGuide>(_onStop)
|
||||
+ on<CameraFrameReceived>(_onFrame)
|
||||
+ on<ObstacleDetected>(_onObstacle)
|
||||
class "WalkGuideCubit\n<<ConcreteSubject>>" as WalkGuideCubitObs {
|
||||
+ start()
|
||||
+ stop()
|
||||
+ logObstacle()
|
||||
- _yoloDetector : YoloDetector
|
||||
- _ttsService : TtsService
|
||||
- _hapticService : HapticService
|
||||
}
|
||||
|
||||
class "BlocBuilder<WalkGuideBloc, WalkGuideState>\n<<Observer / Widget>>" as BlocBuilderWidget {
|
||||
class "BlocBuilder<WalkGuideCubit, WalkGuideState>\n<<Observer / Widget>>" as BlocBuilderWidget {
|
||||
+ builder(ctx, state) : Widget
|
||||
' Rebuilds UI on every state emission
|
||||
}
|
||||
|
||||
class "BlocListener<WalkGuideBloc, WalkGuideState>\n<<Observer / SideEffect>>" as BlocListenerWidget {
|
||||
class "BlocListener<WalkGuideCubit, WalkGuideState>\n<<Observer / SideEffect>>" as BlocListenerWidget {
|
||||
+ listener(ctx, state) : void
|
||||
' Side effects: TTS, haptic, navigation
|
||||
}
|
||||
@@ -84,9 +81,9 @@ package "⑤ Observer Pattern [Behavioral]" #F3E5F5 {
|
||||
' Updates flutter_map markers in real-time
|
||||
}
|
||||
|
||||
BlocSubject <|-- WalkGuideBlocObs : extends
|
||||
WalkGuideBlocObs --> BlocBuilderWidget : emits state\n(rebuilds UI)
|
||||
WalkGuideBlocObs --> BlocListenerWidget : emits state\n(side effects)
|
||||
BlocSubject <|-- WalkGuideCubitObs : extends
|
||||
WalkGuideCubitObs --> BlocBuilderWidget : emits state\n(rebuilds UI)
|
||||
WalkGuideCubitObs --> BlocListenerWidget : emits state\n(side effects)
|
||||
WebSocketObs --> GuardianMapObs : notifies\nlive location
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user