[workspace]
resolver = "2"
members = [
    "crates/erp-core",
    "crates/erp-server",
    "crates/erp-auth",
    "crates/erp-workflow",
    "crates/erp-message",
    "crates/erp-config",
    "crates/erp-server/migration",
    "crates/erp-plugin",
]

[workspace.package]
version = "0.1.0"
edition = "2024"
license = "MIT"

[workspace.dependencies]
# Async
tokio = { version = "1", features = ["full"] }

# Web
axum = { version = "0.8", features = ["multipart"] }
tower = "0.5"
tower-http = { version = "0.6", features = ["cors", "trace", "compression-gzip", "fs", "set-header"] }

# Database
sea-orm = { version = "1.1", features = [
    "sqlx-postgres", "runtime-tokio-rustls", "macros", "with-uuid", "with-chrono", "with-json"
] }
sea-orm-migration = { version = "1.1", features = ["sqlx-postgres", "runtime-tokio-rustls"] }
sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "postgres", "uuid"] }

# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"

# UUID & Time
uuid = { version = "1", features = ["v7", "serde"] }
chrono = { version = "0.4", features = ["serde"] }

# Error handling
thiserror = "2"
anyhow = "1"

# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] }

# Config
config = "0.14"

# Redis
redis = { version = "0.27", features = ["tokio-comp", "connection-manager"] }

# JWT
jsonwebtoken = "9"

# Password hashing
argon2 = "0.5"

# Cryptographic hashing (token storage)
sha2 = "0.10"

# API docs
utoipa = { version = "5", features = ["axum_extras", "uuid", "chrono"] }
# utoipa-swagger-ui 需要下载 GitHub 资源，网络受限时暂不使用
# utoipa-swagger-ui = { version = "8", features = ["axum"] }

# Validation
validator = { version = "0.19", features = ["derive"] }

# Async trait
async-trait = "0.1"

# HTTP client
reqwest = { version = "0.12", features = ["json", "stream"] }

# Crypto
aes = "0.8"
cbc = "0.1"
hex = "0.4"
regex-lite = "0.1"

# CSV and Excel export
csv = "1"
rust_xlsxwriter = "0.82"

# Internal crates
erp-core = { path = "crates/erp-core" }
erp-auth = { path = "crates/erp-auth" }
erp-workflow = { path = "crates/erp-workflow" }
erp-message = { path = "crates/erp-message" }
erp-config = { path = "crates/erp-config" }
erp-plugin = { path = "crates/erp-plugin" }

# Async streaming
futures = "0.3"
tokio-stream = "0.1"
async-stream = "0.3"
dashmap = "6"

# Template engine
handlebars = "6"

# HTML sanitization
ammonia = "4"

# Document parsing
pdf-extract = "0.7"

# Metrics
metrics = "0.24"
metrics-exporter-prometheus = "0.16"
