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(())
}
|