Files
2026-06-12 17:34:13 +08:00

2.9 KiB

AGENTS.md - rnb Backend

Build & Run

  • Maven profiles: dev (default), prod
  • Build: mvn clean package -DskipTests -Pdev (or -Pprod)
  • Run locally: Execute RnBApplication.main() (port 10800)
  • Docker: docker-compose -f docker/docker-compose.yml -p youlai-boot up -d (MySQL 3306, Redis 6379, MinIO 9000/9001, XXL-Job 8080)

Key Configuration

  • Active profile: Set via spring.profiles.active (default: prod in application.yml)
  • Dev DB: localhost:3306/rnb (user: root, pass: 168soft.xyz)
  • Dev Redis: localhost:16378 (pass: CZwy16378, db: 2)
  • Prod DB: localhost:3308/rnb
  • Prod Redis: localhost:6379 (no password)
  • JWT secret: Must be ≥32 chars (see security.session.jwt.secret-key in profile yml)

Project Structure

src/main/java/com/rnb/
├── common/           # Shared: annotation, base, constant, enums, exception, model, result, util
├── config/           # Auto-configuration, property binding
├── core/             # Core: aspect (log, repeat-submit), filter (request-log, rate-limit), handler (data-permission, data-fill), security
├── modules/          # Business modules: member, order, product
├── shared/           # Shared modules: auth, file, codegen, mail, sms, websocket
└── system/           # System module: controller, converter, model (bo/dto/entity/form/query/vo), mapper, service

Code Generation

  • MyBatis-Plus Generator: Run SystemCodeGenerator.main() (prompts for table names, uses sys_ prefix)
  • Templates: src/test/resources/templates/*.vm (backend), codegen.yml (frontend)
  • Output: src/main/java/com/rnb/system/..., src/main/resources/mapper/...

Testing

  • Tests skipped by default: maven-surefire-plugin has <skip>true</skip>
  • Run single test: mvn test -Dtest=ClassName -DfailIfNoTests=false

Common Commands

# Build dev
mvn clean package -DskipTests -Pdev

# Build prod
mvn clean package -DskipTests -Pprod

# Run with dev profile (from IDE or)
mvn spring-boot:run -Pdev

# Start infra only
cd docker && docker-compose -f docker-compose.yml -p youlai-boot up -d

# Stop infra
cd docker && docker-compose -f docker-compose.yml -p youlai-boot down

Notable Conventions

  • Table prefix: rb_ (MyBatis-Plus config)
  • Logic delete: field isDeleted (1=deleted, 0=active)
  • Security modes: JWT (stateless) or Redis-token (stateful, multi-login control)
  • API docs: Knife4j at /doc.html (dev), /swagger-ui.html (prod)
  • Port: 10800 (both dev/prod)
  • Lombok + MapStruct: Use lombok-mapstruct-binding for compatibility

Gotchas

  • Dockerfile expects target/youlai-boot.jar but Maven builds target/rnb-<version>-dev.jar → rename or adjust Dockerfile
  • DB connection validated on startup (app exits if fails)
  • application.yml imports codegen.yml for code generator config
  • Tests require DB/Redis running (use docker-compose)