File size: 1,732 Bytes
74f2b46
 
99f62cc
 
74f2b46
99f62cc
 
 
 
74f2b46
99f62cc
74f2b46
 
 
 
99f62cc
 
74f2b46
 
 
 
99f62cc
 
74f2b46
 
 
 
 
 
 
 
 
 
 
 
 
 
 
99f62cc
 
dcb7e13
99f62cc
 
4a90885
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
use axum::{routing::{get, post}, Router};
use tower_http::{cors::CorsLayer, trace::TraceLayer};
use tracing_subscriber::EnvFilter;

use rustvital_amd::{handlers, state::AppState};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    dotenvy::dotenv().ok();

    tracing_subscriber::fmt()
        .json()
        .with_env_filter(EnvFilter::from_default_env())
        .with_current_span(true)
        .with_span_events(tracing_subscriber::fmt::format::FmtSpan::CLOSE)
        .init();

    let state = AppState::from_env()?;
    let port = std::env::var("PORT").unwrap_or_else(|_| "7860".to_string());
    let addr = format!("0.0.0.0:{port}");
    tracing::info!("starting RustVital-AMD on {}", addr);

    let app = Router::new()
        .route("/", get(handlers::index))
        .route("/health", get(handlers::health))
        .route("/status", get(handlers::status))
        .route("/dashboard", get(handlers::dashboard))
        .route("/history", get(handlers::history_json))
        .route("/triage", post(handlers::triage_json))
        .route("/triage/html", post(handlers::triage_html))
        .route("/triage/stream", get(handlers::triage_stream))
        .route("/agents/status", get(handlers::agents_ws))
        .route("/dicom/redact", post(handlers::dicom_redact))
        .route("/medical/enrich", get(handlers::enrich_medical))
        .route("/trigger-federated-tune", post(handlers::trigger_federated_tune))
        .route("/federation/round", get(handlers::federation_round))
        .with_state(state)
        .layer(CorsLayer::permissive())
        .layer(TraceLayer::new_for_http());

    let listener = tokio::net::TcpListener::bind(&addr).await?;
    axum::serve(listener, app).await?;
    Ok(())
}