fix: resolve architecture disconnects and codebase weaknesses

- fix(backend): replace raw .parse() with proper loadConfig() + ConfigError
- fix(gateway): connect voice recording uploader to EventBroadcaster
- fix(gateway): remove dead globalThis.moderationBroadcaster path in AI analyzer
- fix(gateway): eliminate audioStream race condition by attaching handlers before pipe
- fix(gateway): enable inlineVolume by default for setMusicVolume to work
- fix(gateway): reuse persistent redisPub for command replies (no new connection per cmd)
- fix(frontend): add missing voice_active_user/voice_pcm_data to WsEventMap
- fix(frontend): correct onAttachmentUploaded handler signature to accept data
- chore: move @types/pg from dependencies to devDependencies
- chore: translate remaining Indonesian comments to English
- chore: remove stale P3 TODO comment
This commit is contained in:
MythEclipse
2026-06-09 11:06:14 +07:00
parent 4becf0d6f1
commit f84b380f4f
13 changed files with 104 additions and 93 deletions
+3 -1
View File
@@ -5,13 +5,15 @@ export interface WsEventMap {
message_updated: { data: unknown };
message_deleted: { data: { id: string } };
message_analyzed: { data: unknown };
attachment_uploaded: Record<string, never>;
attachment_uploaded: { data: unknown };
user_state: { users: unknown[] };
ui_state: { state: unknown };
media_state: { state: unknown };
voice_recording_uploaded: { data: unknown };
voice_recording_started: { data: unknown };
voice_recording_stopped: { data: unknown };
voice_pcm_data: { data: unknown };
voice_active_user: { data: unknown };
attachment_created: { data: unknown };
analysis_queue_status: { data: unknown };
}
+4 -3
View File
@@ -11,7 +11,7 @@ export interface WsHandlers {
onMessageUpdated?: (data: unknown) => void;
onMessageDeleted?: (data: unknown) => void;
onMessageAnalyzed?: (data: unknown) => void;
onAttachmentUploaded?: () => void;
onAttachmentUploaded?: (data: unknown) => void;
onUserState?: (users: unknown[]) => void;
onUiState?: (state: unknown) => void;
onMediaState?: (state: unknown) => void;
@@ -72,7 +72,7 @@ function doConnect(): WebSocket {
h.onMessageAnalyzed?.(msg.data);
break;
case "attachment_uploaded":
h.onAttachmentUploaded?.();
h.onAttachmentUploaded?.(msg.data);
break;
case "user_state":
h.onUserState?.((msg.users as unknown[]) || []);
@@ -147,7 +147,8 @@ export function useDashboardSocket(handlers: WsHandlers) {
onMessageUpdated: (d) => handlersRef.current.onMessageUpdated?.(d),
onMessageDeleted: (d) => handlersRef.current.onMessageDeleted?.(d),
onMessageAnalyzed: (d) => handlersRef.current.onMessageAnalyzed?.(d),
onAttachmentUploaded: () => handlersRef.current.onAttachmentUploaded?.(),
onAttachmentUploaded: (d) =>
handlersRef.current.onAttachmentUploaded?.(d),
onUserState: (u) => handlersRef.current.onUserState?.(u),
onUiState: (s) => handlersRef.current.onUiState?.(s),
onMediaState: (s) => handlersRef.current.onMediaState?.(s),