Files
ai_english/client/lib/features/speaking/data/scenario_data.dart
2025-11-17 14:09:17 +08:00

304 lines
11 KiB
Dart

import '../models/conversation_scenario.dart';
/// 对话场景静态数据
class ScenarioData {
static final List<ConversationScenario> _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<ConversationScenario> 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<ConversationScenario> getScenariosByType(ScenarioType type) {
return _scenarios.where((scenario) => scenario.type == type).toList();
}
/// 根据难度级别获取场景
static List<ConversationScenario> getScenariosByLevel(String level) {
return _scenarios.where((scenario) => scenario.level == level).toList();
}
}