generalbots/botserver/src/compliance/mod.rs
Rodrigo Rodriguez (Pragmatismo) 037db5c381 feat: Major workspace reorganization and documentation update
- Add comprehensive documentation in botbook/ with 12 chapters
- Add botapp/ Tauri desktop application
- Add botdevice/ IoT device support
- Add botlib/ shared library crate
- Add botmodels/ Python ML models service
- Add botplugin/ browser extension
- Add botserver/ reorganized server code
- Add bottemplates/ bot templates
- Add bottest/ integration tests
- Add botui/ web UI server
- Add CI/CD workflows in .forgejo/workflows/
- Add AGENTS.md and PROD.md documentation
- Add dependency management scripts (DEPENDENCIES.sh/ps1)
- Remove legacy src/ structure and migrations
- Clean up temporary and backup files
2026-04-19 08:14:25 -03:00

82 lines
2.9 KiB
Rust

use axum::{
response::IntoResponse,
routing::{get, post, put},
Json, Router,
};
use std::sync::Arc;
use crate::core::shared::state::AppState;
pub mod access_review;
pub mod audit;
pub mod backup_verification;
pub mod code_scanner;
pub mod evidence_collection;
pub mod handlers;
pub mod incident_response;
pub mod policy_checker;
pub mod risk_assessment;
pub mod soc2;
pub mod sop_middleware;
pub mod storage;
pub mod training_tracker;
pub mod types;
pub mod ui;
pub mod vulnerability_scanner;
pub use code_scanner::{
CodeIssue, CodeScanner, ComplianceReporter, ComplianceScanResult, IssueSeverity, IssueType,
ScanStats,
};
pub use storage::{
DbAccessReview, DbAuditLog, DbComplianceCheck, DbComplianceIssue, DbEvidence, DbRisk,
DbRiskAssessment, DbTrainingRecord,
};
pub use types::{
AccessReview, ActionResult, AuditEventType, AuditLogEntry, ComplianceCheckResult,
ComplianceFramework, ComplianceIssueResult, ComplianceReport, ComplianceStatus,
CreateAuditLogRequest, CreateIssueRequest, CreateTrainingRequest, ListAuditLogsQuery,
ListChecksQuery, ListIssuesQuery, PermissionReview, ReviewAction, ReviewStatus, Risk,
RiskAssessment, RiskCategory, RiskStatus, RunCheckRequest, Severity, TrainingRecord,
TrainingType, TreatmentStrategy, UpdateIssueRequest,
};
#[derive(Debug, thiserror::Error)]
pub enum ComplianceError {
#[error("Not found: {0}")]
NotFound(String),
#[error("Validation error: {0}")]
Validation(String),
#[error("Database error: {0}")]
Database(String),
#[error("Internal error: {0}")]
Internal(String),
}
impl IntoResponse for ComplianceError {
fn into_response(self) -> axum::response::Response {
use axum::http::StatusCode;
let (status, message) = match &self {
Self::NotFound(msg) => (StatusCode::NOT_FOUND, msg.clone()),
Self::Validation(msg) => (StatusCode::BAD_REQUEST, msg.clone()),
Self::Database(msg) | Self::Internal(msg) => {
(StatusCode::INTERNAL_SERVER_ERROR, msg.clone())
}
};
(status, Json(serde_json::json!({ "error": message }))).into_response()
}
}
pub fn configure_compliance_routes() -> Router<Arc<AppState>> {
Router::new()
.route("/api/compliance/checks", get(handlers::handle_list_checks).post(handlers::handle_run_check))
.route("/api/compliance/checks/:check_id", get(handlers::handle_get_check))
.route("/api/compliance/issues", get(handlers::handle_list_issues).post(handlers::handle_create_issue))
.route("/api/compliance/issues/:issue_id", put(handlers::handle_update_issue))
.route("/api/compliance/audit", get(handlers::handle_list_audit_logs).post(handlers::handle_create_audit_log))
.route("/api/compliance/training", post(handlers::handle_create_training))
.route("/api/compliance/report", get(handlers::handle_get_report))
.route("/api/compliance/evidence", post(handlers::handle_upload_evidence))
}