feat: AI API Setting page with 4 provider sections and toggles

Add OpenAI, Claude AI, and DentalManagement AI sections to the AI API
Setting page, each with a masked API key input and an on/off toggle
(defaulting to off). Rename sidebar label from "Google AI Settings" to
"AI API Setting". Add provider-key and provider-enabled backend endpoints
and extend the AiSettings schema with 6 new fields.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
ff
2026-06-05 16:36:01 -04:00
parent 1bbca38344
commit 2457e12b5c
50 changed files with 930 additions and 102 deletions

View File

@@ -13,6 +13,13 @@ const aisettingswhereinputSchema = z.object({
id: z.union([z.lazy(() => IntFilterObjectSchema), z.number().int()]).optional(),
userId: z.union([z.lazy(() => IntFilterObjectSchema), z.number().int()]).optional(),
apiKey: z.union([z.lazy(() => StringFilterObjectSchema), z.string()]).optional(),
aiEnabled: z.union([z.lazy(() => BoolFilterObjectSchema), z.boolean()]).optional(),
openAiKey: z.union([z.lazy(() => StringFilterObjectSchema), z.string()]).optional(),
openAiEnabled: z.union([z.lazy(() => BoolFilterObjectSchema), z.boolean()]).optional(),
claudeAiKey: z.union([z.lazy(() => StringFilterObjectSchema), z.string()]).optional(),
claudeAiEnabled: z.union([z.lazy(() => BoolFilterObjectSchema), z.boolean()]).optional(),
dentalMgmtKey: z.union([z.lazy(() => StringFilterObjectSchema), z.string()]).optional(),
dentalMgmtEnabled: z.union([z.lazy(() => BoolFilterObjectSchema), z.boolean()]).optional(),
afterHoursEnabled: z.union([z.lazy(() => BoolFilterObjectSchema), z.boolean()]).optional(),
openPhoneReply: z.union([z.lazy(() => BoolFilterObjectSchema), z.boolean()]).optional(),
user: z.union([z.lazy(() => UserScalarRelationFilterObjectSchema), z.lazy(() => UserWhereInputObjectSchema)]).optional()