MicroFish/backend/app/services
FeelRatchanons 6686011f91 fix(simulation): make create_simulation idempotent to prevent duplicate sims
Creating a simulation was not idempotent: each POST /api/simulation/create
minted a fresh sim_<uuid>. The frontend wraps createSimulation in
requestWithRetry(..., 3, 1000), so a slow/timed-out first request triggers a
retry that creates a second identical simulation for the same project+graph
(observed: two sims created ~2s apart).

Guard against this by reusing an existing, not-yet-run simulation for the same
project_id + graph_id (and matching platform flags) when status is
CREATED/PREPARING/READY and current_round == 0. A force_new=True escape hatch
preserves the ability to intentionally create a fresh simulation.

Verified: repeated /create calls now return the same simulation_id instead of
spawning duplicates.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-13 10:22:11 +07:00
..
__init__.py Implement Interview feature for agent interactions in simulations 2025-12-08 15:55:39 +08:00
graph_builder.py fix(i18n): pass locale to background threads via thread-local storage 2026-04-01 16:55:51 +08:00
oasis_profile_generator.py feat(i18n): replace remaining Chinese in config generator and profile generator 2026-04-01 17:19:12 +08:00
ontology_generator.py Merge pull request #428 from Ghostubborn/feat/i18n 2026-04-02 14:27:04 +08:00
report_agent.py feat(i18n): replace all user-visible Chinese in report_agent.py 2026-04-01 17:44:52 +08:00
simulation_config_generator.py feat(i18n): replace remaining Chinese in config generator and profile generator 2026-04-01 17:19:12 +08:00
simulation_ipc.py Implement Interview feature for agent interactions in simulations 2025-12-08 15:55:39 +08:00
simulation_manager.py fix(simulation): make create_simulation idempotent to prevent duplicate sims 2026-06-13 10:22:11 +07:00
simulation_runner.py fix(i18n): pass locale to background threads via thread-local storage 2026-04-01 16:55:51 +08:00
text_processor.py Introduce Project ID for context management, finalizing the stateful API pipeline from file submission to graph construction. 2025-11-28 17:21:08 +08:00
zep_entity_reader.py feat(graph): implement pagination for fetching nodes and edges; add utility functions for streamlined data retrieval 2026-02-27 15:53:29 +08:00
zep_graph_memory_updater.py fix(i18n): pass locale to background threads via thread-local storage 2026-04-01 16:55:51 +08:00
zep_tools.py feat(i18n): replace all user-visible Chinese logger messages in zep_tools.py 2026-04-01 17:46:39 +08:00