1.8 KiB
1.8 KiB
DATAFLOW
Signal Planner Flow (Post-Commit Async)
AIPMOKernelServicecreates signal (signal.create) in transaction.- Transaction commits.
- Background task triggers
SignalPlannerService.analyze(signal_id, tenant_id, ...). - Planner service opens isolated
AsyncSessionLocaland loads context:- signal content/project context
- project members (
user_projects -> users -> user_workloads -> user_skill_bindings -> skill_tags)
- Planner calls
llm_service.generate_structured_object(function_name="signal_planner_analyze")with hard wait timeout (25s). - Structured success:
SignalStrategicAnalysisService.merge_and_save(...)- update
signals.planner_status=completed - write planner payload into
strategic_analysis.ai_planner
- Structured invalid / timeout fallback:
- build degraded planner payload (
fallback_mode=true) - still
merge_and_save(...)and marksignals.planner_status=completed
- build degraded planner payload (
- Hard failure (DB write / unexpected exception):
SignalStrategicAnalysisService.mark_failed(...)- update
signals.planner_status=failed - try enqueue compensate reply via
FeishuOutboxService.enqueue(...)
Model Routing Flow
- Frontend
ModelRoutingConfigPagereads current mapping via/model-routing/functions/{function_name}. - Manager updates mapping via PUT API.
- Backend persists override into
integrations(type='model_routing'). LLMServiceresolves function-level override at runtime before default openclaw rules.
Task Brief Flow
- Frontend chooses template / trigger generate.
- Backend
task_brief_servicestores template and run records inintegrations(type='task_briefs'). - Generation run writes summary + artifact path.
/task-briefs/centeraggregates latest generated cards for sidebar center.