mirror of
https://dev.azure.com/globalhealthx/EMR/_git/helix-engage-server
synced 2026-04-11 18:08:16 +00:00
- Team module: POST /api/team/members (in-place employee creation with temp password + Redis cache), PUT /api/team/members/:id, GET temp password endpoint. Uses signUpInWorkspace — no email invites. - Dockerfile: rewritten as multi-stage build (builder + runtime) so native modules compile for target arch. Fixes darwin→linux crash. - .dockerignore: exclude dist, node_modules, .env, .git, data/ - package-lock.json: regenerated against public npmjs.org (was pointing at localhost:4873 Verdaccio — broke docker builds) - Doctor utils: shared DOCTOR_VISIT_SLOTS_FRAGMENT + normalizeDoctors helper for visit-slot-aware queries across 6 consumers - AI config: full admin CRUD (GET/PUT/POST reset), workspace-scoped setup-state with workspace ID isolation, AI prompt defaults overhaul - Agent config: camelCase field fix for SDK-synced workspaces - Session service: workspace-scoped Redis key prefixing for setup state - Recordings/supervisor/widget services: updated to use doctor-utils shared fragments instead of inline visitingHours queries Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
55 lines
2.1 KiB
TypeScript
55 lines
2.1 KiB
TypeScript
import { Global, Module } from '@nestjs/common';
|
|
import { AuthModule } from '../auth/auth.module';
|
|
import { PlatformModule } from '../platform/platform.module';
|
|
import { ThemeController } from './theme.controller';
|
|
import { ThemeService } from './theme.service';
|
|
import { WidgetKeysService } from './widget-keys.service';
|
|
import { WidgetConfigService } from './widget-config.service';
|
|
import { WidgetConfigController } from './widget-config.controller';
|
|
import { SetupStateService } from './setup-state.service';
|
|
import { SetupStateController } from './setup-state.controller';
|
|
import { TelephonyConfigService } from './telephony-config.service';
|
|
import { TelephonyConfigController } from './telephony-config.controller';
|
|
import { AiConfigService } from './ai-config.service';
|
|
import { AiConfigController } from './ai-config.controller';
|
|
|
|
// Central config module — owns everything in data/*.json that's editable
|
|
// from the admin portal. Today: theme, widget, setup-state, telephony, ai.
|
|
//
|
|
// Marked @Global() so the 3 new sidecar config services (setup-state, telephony,
|
|
// ai) are injectable from any module without explicit import wiring. Without this,
|
|
// AuthModule + OzonetelAgentModule + MaintModule would all need to import
|
|
// ConfigThemeModule, which would create a circular dependency with AuthModule
|
|
// (ConfigThemeModule already imports AuthModule for SessionService).
|
|
//
|
|
// AuthModule is imported because WidgetKeysService depends on SessionService
|
|
// (Redis-backed cache for widget site key storage).
|
|
@Global()
|
|
@Module({
|
|
imports: [AuthModule, PlatformModule],
|
|
controllers: [
|
|
ThemeController,
|
|
WidgetConfigController,
|
|
SetupStateController,
|
|
TelephonyConfigController,
|
|
AiConfigController,
|
|
],
|
|
providers: [
|
|
ThemeService,
|
|
WidgetKeysService,
|
|
WidgetConfigService,
|
|
SetupStateService,
|
|
TelephonyConfigService,
|
|
AiConfigService,
|
|
],
|
|
exports: [
|
|
ThemeService,
|
|
WidgetKeysService,
|
|
WidgetConfigService,
|
|
SetupStateService,
|
|
TelephonyConfigService,
|
|
AiConfigService,
|
|
],
|
|
})
|
|
export class ConfigThemeModule {}
|