pub fn build_router(state: Arc<AppState>) -> RouterExpand description
Build the Axum router with all routes.
Note: Rate limiting is applied separately in serve() because it requires
real TCP connection info (peer IP) which isn’t available in oneshot tests.