Files
microfish/frontend/src/api/simulation.js
666ghj f8a58819fa Enhance simulation functionality and frontend components for improved user experience
- Updated the simulation API to include a new 'force' parameter, allowing users to restart simulations while cleaning up previous logs.
- Enhanced the simulation status detail retrieval to include all actions and platform-specific actions for better monitoring.
- Introduced a new SimulationRunView component to manage the simulation process, providing a clear interface for users to start and monitor simulations.
- Improved the Step3Simulation component with detailed logging and progress indicators, ensuring users receive real-time updates during the simulation.
- Added new API endpoints for retrieving simulation posts and actions, enhancing the overall functionality and user engagement.
2025-12-12 14:44:10 +08:00

155 lines
4.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import service, { requestWithRetry } from './index'
/**
* 创建模拟
* @param {Object} data - { project_id, graph_id?, enable_twitter?, enable_reddit? }
*/
export const createSimulation = (data) => {
return requestWithRetry(() => service.post('/api/simulation/create', data), 3, 1000)
}
/**
* 准备模拟环境(异步任务)
* @param {Object} data - { simulation_id, entity_types?, use_llm_for_profiles?, parallel_profile_count?, force_regenerate? }
*/
export const prepareSimulation = (data) => {
return requestWithRetry(() => service.post('/api/simulation/prepare', data), 3, 1000)
}
/**
* 查询准备任务进度
* @param {Object} data - { task_id?, simulation_id? }
*/
export const getPrepareStatus = (data) => {
return service.post('/api/simulation/prepare/status', data)
}
/**
* 获取模拟状态
* @param {string} simulationId
*/
export const getSimulation = (simulationId) => {
return service.get(`/api/simulation/${simulationId}`)
}
/**
* 获取模拟的 Agent Profiles
* @param {string} simulationId
* @param {string} platform - 'reddit' | 'twitter'
*/
export const getSimulationProfiles = (simulationId, platform = 'reddit') => {
return service.get(`/api/simulation/${simulationId}/profiles`, { params: { platform } })
}
/**
* 实时获取生成中的 Agent Profiles
* @param {string} simulationId
* @param {string} platform - 'reddit' | 'twitter'
*/
export const getSimulationProfilesRealtime = (simulationId, platform = 'reddit') => {
return service.get(`/api/simulation/${simulationId}/profiles/realtime`, { params: { platform } })
}
/**
* 获取模拟配置
* @param {string} simulationId
*/
export const getSimulationConfig = (simulationId) => {
return service.get(`/api/simulation/${simulationId}/config`)
}
/**
* 实时获取生成中的模拟配置
* @param {string} simulationId
* @returns {Promise} 返回配置信息,包含元数据和配置内容
*/
export const getSimulationConfigRealtime = (simulationId) => {
return service.get(`/api/simulation/${simulationId}/config/realtime`)
}
/**
* 列出所有模拟
* @param {string} projectId - 可选按项目ID过滤
*/
export const listSimulations = (projectId) => {
const params = projectId ? { project_id: projectId } : {}
return service.get('/api/simulation/list', { params })
}
/**
* 启动模拟
* @param {Object} data - { simulation_id, platform?, max_rounds?, enable_graph_memory_update? }
*/
export const startSimulation = (data) => {
return requestWithRetry(() => service.post('/api/simulation/start', data), 3, 1000)
}
/**
* 停止模拟
* @param {Object} data - { simulation_id }
*/
export const stopSimulation = (data) => {
return service.post('/api/simulation/stop', data)
}
/**
* 获取模拟运行实时状态
* @param {string} simulationId
*/
export const getRunStatus = (simulationId) => {
return service.get(`/api/simulation/${simulationId}/run-status`)
}
/**
* 获取模拟运行详细状态(包含最近动作)
* @param {string} simulationId
*/
export const getRunStatusDetail = (simulationId) => {
return service.get(`/api/simulation/${simulationId}/run-status/detail`)
}
/**
* 获取模拟中的帖子
* @param {string} simulationId
* @param {string} platform - 'reddit' | 'twitter'
* @param {number} limit - 返回数量
* @param {number} offset - 偏移量
*/
export const getSimulationPosts = (simulationId, platform = 'reddit', limit = 50, offset = 0) => {
return service.get(`/api/simulation/${simulationId}/posts`, {
params: { platform, limit, offset }
})
}
/**
* 获取模拟时间线(按轮次汇总)
* @param {string} simulationId
* @param {number} startRound - 起始轮次
* @param {number} endRound - 结束轮次
*/
export const getSimulationTimeline = (simulationId, startRound = 0, endRound = null) => {
const params = { start_round: startRound }
if (endRound !== null) {
params.end_round = endRound
}
return service.get(`/api/simulation/${simulationId}/timeline`, { params })
}
/**
* 获取Agent统计信息
* @param {string} simulationId
*/
export const getAgentStats = (simulationId) => {
return service.get(`/api/simulation/${simulationId}/agent-stats`)
}
/**
* 获取模拟动作历史
* @param {string} simulationId
* @param {Object} params - { limit, offset, platform, agent_id, round_num }
*/
export const getSimulationActions = (simulationId, params = {}) => {
return service.get(`/api/simulation/${simulationId}/actions`, { params })
}