feat(server): erp-ai 模块集成 — Config/State/路由注册

- 新增 AiConfig 到 AppConfig
- 新增 FromRef<AppState> for AiState
- 注册 AiModule 到 ModuleRegistry
- 合并 AI protected routes
- 修复 sync_module_permissions 只同步 health.% 的 bug

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
iven
2026-04-25 14:01:07 +08:00
parent fada33101c
commit 2e555ca72a
5 changed files with 64 additions and 2 deletions

View File

@@ -115,3 +115,31 @@ impl FromRef<AppState> for erp_health::HealthState {
}
}
}
/// Allow erp-ai handlers to extract their required state.
impl FromRef<AppState> for erp_ai::AiState {
fn from_ref(state: &AppState) -> Self {
let mut provider = erp_ai::provider::claude::ClaudeProvider::new(
state.config.ai.api_key.clone(),
);
if let Some(ref base_url) = state.config.ai.base_url {
provider = provider.with_base_url(base_url.clone());
}
let db = state.db.clone();
let event_bus = state.event_bus.clone();
let analysis = std::sync::Arc::new(
erp_ai::service::analysis::AnalysisService::new(Box::new(provider), db.clone()),
);
let prompt = std::sync::Arc::new(erp_ai::service::prompt::PromptService::new(db.clone()));
let usage = std::sync::Arc::new(erp_ai::service::usage::UsageService::new(db.clone()));
Self {
db,
event_bus,
analysis,
prompt,
usage,
}
}
}