amicaLifeDiagnosis.ts 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { AmicaLife } from "@/types/backend";
  2. import { EvaluationResult } from "./diagnosisScript";
  3. const backendHandlers: Record<
  4. string,
  5. (params: AmicaLife) => Promise<EvaluationResult>
  6. > = {
  7. amicaLife: async (params) => {
  8. const { amica_life_enabled, min_time_interval_sec, max_time_interval_sec, time_to_sleep_sec, idle_text_prompt } = params.amicaLife || {};
  9. if (!amica_life_enabled || !min_time_interval_sec || !max_time_interval_sec || !time_to_sleep_sec || !idle_text_prompt ) return {status: "fail", score: 0};
  10. try {
  11. const parsed = JSON.parse(idle_text_prompt);
  12. if (
  13. !(amica_life_enabled === "true" || amica_life_enabled === "false") ||
  14. isNaN(Number(min_time_interval_sec)) ||
  15. isNaN(Number(max_time_interval_sec)) ||
  16. isNaN(Number(time_to_sleep_sec)) ||
  17. typeof parsed !== "object" ||
  18. !parsed.idleTextPrompt
  19. ) {
  20. return {status: "fail", score: 0};
  21. }
  22. } catch {
  23. return {status: "fail", score: 0};
  24. }
  25. return {status: "pass", score: 100};
  26. },
  27. };
  28. // Dispatcher function
  29. export async function amicaLifeDiagnosis(
  30. backend: string,
  31. params: AmicaLife
  32. ): Promise<EvaluationResult> {
  33. const handler = backendHandlers[backend];
  34. if (!handler) return {status: "fail", score: 0};
  35. return await handler(params);
  36. }