feat: productionize learning engine and classroom
This commit is contained in:
1 parent
2d04197f3f
commit
ba35adfbfa
124 files changed
+9071
-796
No files matched your search
@@ -0,0 +1,74 @@
|
||||
import { mkdtemp, rm } from 'node:fs/promises';
|
||||
import os from 'node:os';
|
||||
import path from 'node:path';
|
||||
import { afterEach, describe, expect, it, vi } from 'vitest';
|
||||
|
||||
const DIRECTORY_ENV = [
|
||||
'CLASSROOM_DATA_DIR',
|
||||
'CLASSROOM_JOBS_DIR',
|
||||
'COURSE_FRAMEWORK_DIR',
|
||||
'COURSE_MANIFEST_DIR',
|
||||
'COURSEWARE_DATA_DIR',
|
||||
'COURSEWARE_BUNDLE_DIR',
|
||||
'LEARNING_COURSE_PACKAGE_DIR',
|
||||
'LEARNING_COURSE_STORE_DIR',
|
||||
] as const;
|
||||
|
||||
const TTS_ENV = [
|
||||
'TTS_OPENAI_API_KEY',
|
||||
'TTS_AZURE_API_KEY',
|
||||
'TTS_GLM_API_KEY',
|
||||
'TTS_QWEN_API_KEY',
|
||||
'TTS_VOXCPM_API_KEY',
|
||||
'TTS_DOUBAO_API_KEY',
|
||||
'TTS_ELEVENLABS_API_KEY',
|
||||
'TTS_MINIMAX_API_KEY',
|
||||
'TTS_LEMONADE_BASE_URL',
|
||||
] as const;
|
||||
|
||||
const temporaryRoots: string[] = [];
|
||||
|
||||
afterEach(async () => {
|
||||
vi.unstubAllEnvs();
|
||||
vi.resetModules();
|
||||
await Promise.all(temporaryRoots.splice(0).map((root) => rm(root, { recursive: true, force: true })));
|
||||
});
|
||||
|
||||
async function configureEngine() {
|
||||
const root = await mkdtemp(path.join(os.tmpdir(), 'openmaic-learning-health-'));
|
||||
temporaryRoots.push(root);
|
||||
vi.stubEnv('NODE_ENV', 'production');
|
||||
vi.stubEnv('OPENMAIC_DEPLOYMENT_ROLE', 'server');
|
||||
vi.stubEnv('LEARNING_ENGINE_TOKEN', 'test-runtime-token');
|
||||
vi.stubEnv('OPENAI_API_KEY', 'test-llm-key');
|
||||
DIRECTORY_ENV.forEach((name) => vi.stubEnv(name, path.join(root, name.toLowerCase())));
|
||||
TTS_ENV.forEach((name) => vi.stubEnv(name, ''));
|
||||
}
|
||||
|
||||
describe('Learning Engine readiness', () => {
|
||||
it('fails closed when default narration has no managed TTS provider', async () => {
|
||||
await configureEngine();
|
||||
const { inspectLearningReadiness } = await import('@/lib/makelore-runtime/health');
|
||||
|
||||
const readiness = await inspectLearningReadiness();
|
||||
|
||||
expect(readiness.ready).toBe(false);
|
||||
expect(readiness.checks.llmProvider).toEqual({ ok: true });
|
||||
expect(readiness.checks.ttsProvider).toEqual({
|
||||
ok: false,
|
||||
detail: 'No enabled server-managed TTS provider is configured',
|
||||
});
|
||||
});
|
||||
|
||||
it('becomes ready when both LLM and TTS providers are managed', async () => {
|
||||
await configureEngine();
|
||||
vi.stubEnv('TTS_OPENAI_API_KEY', 'test-tts-key');
|
||||
vi.resetModules();
|
||||
const { inspectLearningReadiness } = await import('@/lib/makelore-runtime/health');
|
||||
|
||||
const readiness = await inspectLearningReadiness();
|
||||
|
||||
expect(readiness.ready).toBe(true);
|
||||
expect(readiness.checks.ttsProvider).toEqual({ ok: true });
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user