import '../models/conversation_scenario.dart'; /// 对话场景静态数据 class ScenarioData { static final List _scenarios = [ ConversationScenario( id: 'restaurant_ordering', title: 'Ordering Food at Restaurant', subtitle: '餐厅点餐对话', description: '学习在餐厅点餐的常用英语表达,包括询问菜单、下订单、特殊要求等。', duration: '10分钟', level: 'B1', type: ScenarioType.restaurant, objectives: [ '学会阅读英文菜单', '掌握点餐的基本表达', '学会提出特殊要求', '了解餐厅服务流程', ], keyPhrases: [ 'I\'d like to order...', 'What do you recommend?', 'Could I have the menu, please?', 'I\'m allergic to...', 'Could you make it less spicy?', 'Check, please.', ], steps: [ ScenarioStep( stepNumber: 1, title: '入座问候', description: '服务员引导您入座并提供菜单', role: 'npc', content: 'Good evening! Welcome to our restaurant. How many people are in your party?', options: [ 'Just one, please.', 'Table for two, please.', 'We have a reservation under Smith.', ], correctOption: null, ), ScenarioStep( stepNumber: 2, title: '查看菜单', description: '服务员询问您是否需要时间看菜单', role: 'npc', content: 'Here\'s your table. Would you like to see the menu, or do you need a few minutes?', options: [ 'Could I have the menu, please?', 'I need a few minutes to decide.', 'What do you recommend?', ], correctOption: null, ), ScenarioStep( stepNumber: 3, title: '点餐', description: '服务员准备为您点餐', role: 'npc', content: 'Are you ready to order, or would you like to hear about our specials?', options: [ 'I\'d like to hear about the specials.', 'I\'m ready to order.', 'Could you give me a few more minutes?', ], correctOption: null, ), ScenarioStep( stepNumber: 4, title: '下订单', description: '告诉服务员您想要什么', role: 'user', content: 'What would you like to order?', options: [ 'I\'d like the grilled salmon, please.', 'Could I have the pasta with marinara sauce?', 'I\'ll have the chicken Caesar salad.', ], correctOption: null, ), ScenarioStep( stepNumber: 5, title: '特殊要求', description: '提出任何特殊的饮食要求', role: 'npc', content: 'How would you like that cooked? Any special requests?', options: [ 'Medium rare, please.', 'Could you make it less spicy?', 'I\'m allergic to nuts, please make sure there are none.', ], correctOption: null, ), ], createdAt: DateTime.now(), ), ConversationScenario( id: 'job_interview', title: 'Job Interview Practice', subtitle: '工作面试练习', description: '模拟真实的英语工作面试场景,练习自我介绍、回答常见问题和提问技巧。', duration: '15分钟', level: 'B2', type: ScenarioType.interview, objectives: [ '掌握自我介绍技巧', '学会回答常见面试问题', '练习询问公司信息', '提高面试自信心', ], keyPhrases: [ 'Tell me about yourself.', 'What are your strengths?', 'Why do you want this job?', 'Where do you see yourself in 5 years?', 'Do you have any questions for us?', 'Thank you for your time.', ], steps: [ ScenarioStep( stepNumber: 1, title: '面试开始', description: '面试官欢迎您并开始面试', role: 'npc', content: 'Good morning! Please have a seat. Thank you for coming in today.', options: [ 'Good morning! Thank you for having me.', 'Hello! I\'m excited to be here.', 'Thank you for the opportunity.', ], correctOption: null, ), ScenarioStep( stepNumber: 2, title: '自我介绍', description: '面试官要求您进行自我介绍', role: 'npc', content: 'Let\'s start with you telling me a little bit about yourself.', options: [ 'I have 5 years of experience in marketing...', 'I\'m a recent graduate with a degree in...', 'I\'m currently working as a... and looking for new challenges.', ], correctOption: null, ), ScenarioStep( stepNumber: 3, title: '优势询问', description: '面试官询问您的优势', role: 'npc', content: 'What would you say are your greatest strengths?', options: [ 'I\'m very detail-oriented and organized.', 'I work well under pressure and meet deadlines.', 'I\'m a strong team player with good communication skills.', ], correctOption: null, ), ScenarioStep( stepNumber: 4, title: '职业规划', description: '面试官询问您的职业规划', role: 'npc', content: 'Where do you see yourself in five years?', options: [ 'I see myself in a leadership role, managing a team.', 'I want to become an expert in my field.', 'I hope to have grown professionally and taken on more responsibilities.', ], correctOption: null, ), ScenarioStep( stepNumber: 5, title: '提问环节', description: '面试官询问您是否有问题', role: 'npc', content: 'Do you have any questions about the company or the position?', options: [ 'What does a typical day look like in this role?', 'What are the opportunities for professional development?', 'What do you enjoy most about working here?', ], correctOption: null, ), ], createdAt: DateTime.now(), ), ConversationScenario( id: 'business_meeting', title: 'Business Meeting Discussion', subtitle: '商务会议讨论', description: '参与英语商务会议,学习表达观点、提出建议和进行专业讨论。', duration: '20分钟', level: 'C1', type: ScenarioType.business, objectives: [ '学会在会议中表达观点', '掌握商务讨论技巧', '练习提出建议和反对意见', '提高商务英语水平', ], keyPhrases: [ 'I\'d like to propose...', 'From my perspective...', 'I agree with your point, however...', 'Could we consider...', 'Let\'s move on to the next item.', 'To summarize...', ], steps: [ ScenarioStep( stepNumber: 1, title: '会议开始', description: '会议主持人开始会议并介绍议程', role: 'npc', content: 'Good morning, everyone. Let\'s begin today\'s meeting. Our main agenda is to discuss the new marketing strategy.', options: [ 'Good morning! I\'m looking forward to the discussion.', 'Thank you for organizing this meeting.', 'I have some ideas I\'d like to share.', ], correctOption: null, ), ScenarioStep( stepNumber: 2, title: '观点表达', description: '主持人邀请您分享观点', role: 'npc', content: 'What are your thoughts on our current marketing approach?', options: [ 'I think we should focus more on digital marketing.', 'From my perspective, we need to target younger demographics.', 'I believe our current strategy is effective, but we could improve...', ], correctOption: null, ), ScenarioStep( stepNumber: 3, title: '建议提出', description: '有人提出了一个建议,您需要回应', role: 'npc', content: 'I propose we increase our social media budget by 30%. What do you think?', options: [ 'That\'s an interesting proposal. Could we see some data first?', 'I agree, but we should also consider the ROI.', 'I have some concerns about that approach.', ], correctOption: null, ), ScenarioStep( stepNumber: 4, title: '讨论深入', description: '深入讨论具体实施方案', role: 'npc', content: 'How do you suggest we implement this new strategy?', options: [ 'We could start with a pilot program.', 'I recommend we form a dedicated team.', 'Let\'s set clear milestones and deadlines.', ], correctOption: null, ), ScenarioStep( stepNumber: 5, title: '会议总结', description: '总结会议要点和下一步行动', role: 'npc', content: 'Let\'s summarize what we\'ve discussed and assign action items.', options: [ 'I can take responsibility for the market research.', 'Should we schedule a follow-up meeting?', 'I\'ll prepare a detailed proposal by next week.', ], correctOption: null, ), ], createdAt: DateTime.now(), ), ]; /// 获取所有场景 static List getAllScenarios() { return List.from(_scenarios); } /// 根据ID获取场景 static ConversationScenario? getScenarioById(String id) { try { return _scenarios.firstWhere((scenario) => scenario.id == id); } catch (e) { return null; } } /// 根据类型获取场景 static List getScenariosByType(ScenarioType type) { return _scenarios.where((scenario) => scenario.type == type).toList(); } /// 根据难度级别获取场景 static List getScenariosByLevel(String level) { return _scenarios.where((scenario) => scenario.level == level).toList(); } }