import { DynamicForm } from '@/components/forms/dynamic-form'; import { ResultDisplay } from '@/components/template-run/result-display'; import { RunProgressView } from '@/components/template-run/run-progress'; import { ThemedText } from '@/components/themed-text'; import { ThemedView } from '@/components/themed-view'; import { useTemplateFormData, useTemplateRun } from '@/hooks/use-template-run'; import { getTemplateById } from '@/lib/api/templates'; import { subscription } from '@/lib/auth/client'; import { Template } from '@/lib/types/template'; import { RunFormSchema, RunTemplateData } from '@/lib/types/template-run'; import { transformWorkflowToFormSchema, validateFormSchema } from '@/lib/utils/form-schema-transformer'; import { Image } from 'expo-image'; import { LinearGradient } from 'expo-linear-gradient'; import { Stack, useLocalSearchParams, useRouter } from 'expo-router'; import { useCallback, useEffect, useState } from 'react'; import { Alert, BackHandler, Platform, StyleSheet, TouchableOpacity, View } from 'react-native'; type RunStep = 'form' | 'progress' | 'result'; // 转换表单数据为 API 期望的格式 function transformFormData(formData: RunTemplateData): RunTemplateData { const transformed: RunTemplateData = {}; Object.entries(formData).forEach(([fieldName, value]) => { // 根据字段名称判断类型并转换 if (fieldName.startsWith('image_')) { // 图片字段转换为对象格式 transformed[fieldName] = { url: value, type: 'image' }; } else if (fieldName.startsWith('text_')) { // 文本字段转换为对象格式 transformed[fieldName] = { content: value, type: 'text' }; } else if (fieldName.startsWith('video_')) { // 视频字段转换为对象格式 transformed[fieldName] = { url: value, type: 'video' }; } else if (fieldName.startsWith('color_')) { // 颜色字段转换为对象格式 transformed[fieldName] = { value: value, type: 'color' }; } else { // 其他类型保持原样 transformed[fieldName] = value; } }); return transformed; } export default function TemplateRunScreen() { const { id } = useLocalSearchParams<{ id: string }>(); const router = useRouter(); const [template, setTemplate] = useState