feat: Script Generator Phase 1 — backend models, engine, API, and AD templates #105

Merged
chihlasm merged 78 commits from feat/script-generator into main 2026-03-15 00:19:00 +00:00
Showing only changes of commit 054f3acd67 - Show all commits

View File

@@ -65,6 +65,7 @@ export const useScriptGeneratorStore = create<ScriptGeneratorState>()((set, get)
loadTemplates: async () => { loadTemplates: async () => {
set({ isLoadingTemplates: true }) set({ isLoadingTemplates: true })
try {
const { activeCategoryId, categories, searchQuery } = get() const { activeCategoryId, categories, searchQuery } = get()
const category = categories.find(c => c.id === activeCategoryId) const category = categories.find(c => c.id === activeCategoryId)
const params: { category_slug?: string; search?: string } = {} const params: { category_slug?: string; search?: string } = {}
@@ -72,10 +73,14 @@ export const useScriptGeneratorStore = create<ScriptGeneratorState>()((set, get)
if (searchQuery) params.search = searchQuery if (searchQuery) params.search = searchQuery
const templates = await scriptsApi.getTemplates(params) const templates = await scriptsApi.getTemplates(params)
set({ templates, isLoadingTemplates: false }) set({ templates, isLoadingTemplates: false })
} catch {
set({ isLoadingTemplates: false })
}
}, },
selectTemplate: async (id: string) => { selectTemplate: async (id: string) => {
set({ isLoadingDetail: true }) set({ isLoadingDetail: true })
try {
const detail = await scriptsApi.getTemplateDetail(id) const detail = await scriptsApi.getTemplateDetail(id)
// Populate paramValues from parameter defaults // Populate paramValues from parameter defaults
const schema = detail.parameters_schema as ScriptParametersSchema const schema = detail.parameters_schema as ScriptParametersSchema
@@ -97,6 +102,9 @@ export const useScriptGeneratorStore = create<ScriptGeneratorState>()((set, get)
generateError: null, generateError: null,
isLoadingDetail: false, isLoadingDetail: false,
}) })
} catch {
set({ isLoadingDetail: false })
}
}, },
setCategory: (id: string | null) => { setCategory: (id: string | null) => {