diff --git a/frontend/src/components/Step5Interaction.vue b/frontend/src/components/Step5Interaction.vue index 7c5999c..77395dc 100644 --- a/frontend/src/components/Step5Interaction.vue +++ b/frontend/src/components/Step5Interaction.vue @@ -315,6 +315,10 @@
+ +
+ ⚠️ {{ $t('step5.envNotRunning') || 'Simulation environment is not running. Survey requires an active simulation environment.' }} +
{{ $t('step5.selectSurveyTarget') }} @@ -414,7 +418,7 @@ import { ref, computed, watch, onMounted, onUnmounted, nextTick } from 'vue' import { useI18n } from 'vue-i18n' import { chatWithReport, getReport, getAgentLog } from '../api/report' -import { interviewAgents, getSimulationProfilesRealtime } from '../api/simulation' +import { interviewAgents, getSimulationProfilesRealtime, getEnvStatus } from '../api/simulation' const { t } = useI18n() @@ -445,9 +449,9 @@ const chatInputRef = ref(null) // Survey State const selectedAgents = ref(new Set()) const surveyQuestion = ref('') +const isEnvAlive = ref(false) const surveyResults = ref([]) const isSurveying = ref(false) - // Report Data const reportOutline = ref(null) const generatedSections = ref({}) @@ -782,6 +786,16 @@ const scrollToBottom = () => { } // Survey Methods +const checkEnvStatus = async () => { + if (!props.simulationId) return + try { + const res = await getEnvStatus({ simulation_id: props.simulationId }) + isEnvAlive.value = res.success && res.data?.running === true + } catch { + isEnvAlive.value = false + } +} + const toggleAgentSelection = (idx) => { const newSet = new Set(selectedAgents.value) if (newSet.has(idx)) { @@ -945,6 +959,7 @@ onMounted(() => { addLog(t('log.step5Init')) loadReportData() loadProfiles() + checkEnvStatus() document.addEventListener('click', handleClickOutside) }) @@ -2155,6 +2170,18 @@ watch(() => props.simulationId, (newId) => { /* Survey Container */ .survey-container { + /* env warning */ +} + +.survey-env-warning { + background: #FFF3CD; + color: #856404; + border: 1px solid #FFEAA7; + border-radius: 6px; + padding: 10px 14px; + margin-bottom: 12px; + font-size: 0.85rem; +} flex: 1; display: flex; flex-direction: column; diff --git a/locales/en.json b/locales/en.json index 544c68b..3108b43 100644 --- a/locales/en.json +++ b/locales/en.json @@ -75,7 +75,13 @@ "layoutGraph": "Graph", "layoutSplit": "Split", "layoutWorkbench": "Workbench", - "stepNames": ["Graph Build", "Env Setup", "Run Simulation", "Report Generation", "Deep Interaction"] + "stepNames": [ + "Graph Build", + "Env Setup", + "Run Simulation", + "Report Generation", + "Deep Interaction" + ] }, "step1": { "ontologyGeneration": "Ontology Generation", @@ -282,7 +288,8 @@ "errorOccurred": "Sorry, an error occurred: {error}", "noResponse": "No response", "requestFailed": "Request failed", - "selectAgentFirst": "Please select a simulated individual first" + "selectAgentFirst": "Please select a simulated individual first", + "envNotRunning": "Simulation environment is not running. Survey requires an active simulation environment." }, "graph": { "panelTitle": "Graph Relationship Visualization", @@ -662,4 +669,4 @@ "generateInterviewQuestionsFailed": "Failed to generate interview questions: {error}", "generateInterviewSummaryFailed": "Failed to generate interview summary: {error}" } -} +} \ No newline at end of file diff --git a/locales/th.json b/locales/th.json index fd333fb..8922f03 100644 --- a/locales/th.json +++ b/locales/th.json @@ -75,7 +75,13 @@ "layoutGraph": "กราฟ", "layoutSplit": "แบ่งหน้าจอ", "layoutWorkbench": "พื้นที่ทำงาน", - "stepNames": ["สร้างกราฟ", "ตั้งค่าสภาพแวดล้อม", "จำลอง", "สร้างรายงาน", "โต้ตอบเชิงลึก"] + "stepNames": [ + "สร้างกราฟ", + "ตั้งค่าสภาพแวดล้อม", + "จำลอง", + "สร้างรายงาน", + "โต้ตอบเชิงลึก" + ] }, "step1": { "ontologyGeneration": "การสร้างออนโทโลยี", @@ -282,7 +288,8 @@ "errorOccurred": "ขออภัย เกิดข้อผิดพลาด: {error}", "noResponse": "ไม่มีคำตอบ", "requestFailed": "คำขอล้มเหลว", - "selectAgentFirst": "กรุณาเลือกบุคคลที่จำลองก่อน" + "selectAgentFirst": "กรุณาเลือกบุคคลที่จำลองก่อน", + "envNotRunning": "สภาพแวดล้อมจำลองไม่ได้ทำงานอยู่ แบบสำรวจต้องการสภาพแวดล้อมจำลองที่ยังทำงานอยู่" }, "graph": { "panelTitle": "การแสดงผลความสัมพันธ์กราฟ", diff --git a/locales/zh.json b/locales/zh.json index cd747e2..34f5d7f 100644 --- a/locales/zh.json +++ b/locales/zh.json @@ -75,7 +75,13 @@ "layoutGraph": "图谱", "layoutSplit": "双栏", "layoutWorkbench": "工作台", - "stepNames": ["图谱构建", "环境搭建", "开始模拟", "报告生成", "深度互动"] + "stepNames": [ + "图谱构建", + "环境搭建", + "开始模拟", + "报告生成", + "深度互动" + ] }, "step1": { "ontologyGeneration": "本体生成", @@ -282,7 +288,8 @@ "errorOccurred": "抱歉,发生了错误: {error}", "noResponse": "无响应", "requestFailed": "请求失败", - "selectAgentFirst": "请先选择一个模拟个体" + "selectAgentFirst": "请先选择一个模拟个体", + "envNotRunning": "模拟环境未运行。问卷调查需要模拟环境处于运行状态。" }, "graph": { "panelTitle": "Graph Relationship Visualization", @@ -662,4 +669,4 @@ "generateInterviewQuestionsFailed": "生成采访问题失败: {error}", "generateInterviewSummaryFailed": "生成采访摘要失败: {error}" } -} +} \ No newline at end of file