server: port: 18087 mode: release # debug, release read_timeout: 30s read_header_timeout: 10s write_timeout: 30s idle_timeout: 60s shutdown_timeout: 15s max_header_bytes: 1048576 database: type: sqlite # current runtime support: sqlite sqlite: path: "D:/project/docs/evidence/ops/2026-03-24/rollback/20260324-103758/user_management.stable.db" postgresql: host: localhost port: 5432 database: user_management username: postgres password: "" ssl_mode: disable max_open_conns: 100 max_idle_conns: 10 mysql: host: localhost port: 3306 database: user_management username: root password: "" charset: utf8mb4 max_open_conns: 100 max_idle_conns: 10 cache: l1: enabled: true max_size: 10000 ttl: 5m l2: enabled: false type: redis redis: addr: localhost:6379 password: "" db: 0 pool_size: 50 ttl: 30m redis: enabled: false addr: localhost:6379 password: "" db: 0 jwt: algorithm: RS256 secret: "" private_key_path: "./data/jwt/private.pem" public_key_path: "./data/jwt/public.pem" private_key_pem: "" public_key_pem: "" access_token_expire: 2h refresh_token_expire: 168h # 7澶?= 168灏忔椂 security: password_min_length: 8 password_require_special: true password_require_number: true login_max_attempts: 5 login_lock_duration: 30m ratelimit: enabled: true login: enabled: true algorithm: token_bucket capacity: 5 rate: 1 window: 1m register: enabled: true algorithm: leaky_bucket capacity: 3 rate: 1 window: 1h api: enabled: true algorithm: sliding_window capacity: 1000 window: 1m monitoring: prometheus: enabled: true path: /metrics tracing: enabled: false endpoint: http://localhost:4318 service_name: user-management-system logging: level: info # debug, info, warn, error format: json # json, text output: - stdout - ./logs/app.log rotation: max_size: 100 # MB max_age: 30 # days max_backups: 10 admin: username: "" password: "" email: "" cors: enabled: true allowed_origins: - "*"