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>
- Dockerfile installs graphiti optional extras so any GRAPH_BACKEND works at runtime
- container-app.bicep adds graphBackend, neo4jUri/User/Password and llmProvider params
- 2-build-deploy.sh validates graph backend config and passes all new vars to Bicep
- config.sh.example documents new variables with inline guidance
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>