Step 02/03 UX:
- Remove duplicate simulation params (total_hours, minutes_per_round) from Fase B form
- Add following_probability + recsys_type to step 03 config panel instead
- Step 03 now read-only by default with Edit / Save toolbar toggle
- Add common.edit and log.configSaved i18n keys to all 4 locales
Backend - Azure OpenAI fix (run_parallel_simulation.py):
- create_model() now detects Azure URLs (cognitiveservices.azure.com / openai.azure.com)
and uses ModelPlatformType.AZURE with AzureOpenAIModel, passing api_version and
azure_deployment_name explicitly — fixes 404 "Resource not found" from camel-ai
Backend - offline report interviews (simulation_runner.py):
- interview_agents_batch() falls back to _offline_batch_interview() when OASIS env is
closed (simulation finished), reading posts from SQLite DB instead of failing with
"No successful interviews / check OASIS environment status"
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>