Files
deepdata/backend/README.md

138 lines
3.7 KiB
Markdown

# DeepData Backend
## Overview
DeepData Backend is a microservices architecture based on Spring Boot 3.5 + Java 21, providing core functions such as data management, RAG indexing, and API gateway.
## Architecture
```
backend/
├── api-gateway/ # API Gateway + Authentication
├── services/
│ ├── data-management-service/ # Dataset management
│ ├── rag-indexer-service/ # RAG indexing
│ └── main-application/ # Main application entry
└── shared/
├── domain-common/ # DDD building blocks, exception handling
└── security-common/ # JWT utilities
```
## Services
| Service | Port | Description |
|---------|-------|-------------|
| **main-application** | 8080 | Main application, includes data management, data cleaning, operator marketplace modules |
| **api-gateway** | 8080 | API Gateway, route forwarding and authentication |
## Technology Stack
- **Framework**: Spring Boot 3.5.6, Spring Cloud 2025.0.0
- **Language**: Java 21
- **Database**: PostgreSQL 8.0.33 + MyBatis-Plus 3.5.14
- **Cache**: Redis 3.2.0
- **Vector DB**: Milvus (via SDK 2.6.6)
- **Documentation**: SpringDoc OpenAPI 2.2.0
- **Build**: Maven
## Dependencies
### External Services
- **PostgreSQL**: `deepdata-database:5432`
- **Redis**: `deepdata-redis:6379`
- **Milvus**: Vector database (RAG indexing)
### Shared Libraries
- **domain-common**: Business exceptions, system parameters, domain entity base classes
- **security-common**: JWT utilities, auth helpers
## Quick Start
### Prerequisites
- JDK 21+
- Maven 3.8+
- PostgreSQL 12+
- Redis 6+
### Build
```bash
cd backend
mvn clean install
```
### Run Main Application
```bash
cd backend/services/main-application
mvn spring-boot:run
```
### Run API Gateway
```bash
cd backend/api-gateway
mvn spring-boot:run
```
## Development
### Module Structure (DDD)
```
com.deepdata.{module}/
├── interfaces/
│ ├── rest/ # Controllers
│ ├── dto/ # Request/Response DTOs
│ ├── converter/ # MapStruct converters
│ └── validation/ # Custom validators
├── application/ # Application services
├── domain/
│ ├── model/ # Entities
│ └── repository/ # Repository interfaces
└── infrastructure/
├── persistence/ # Repository implementations
├── client/ # External API clients
└── config/ # Service configuration
```
### Code Conventions
- **Entities**: Extend `BaseEntity<ID>`, use `@TableName("t_*")`
- **Controllers**: `@RestController` + `@RequiredArgsConstructor`
- **Services**: `@Service` + `@Transactional`
- **Error Handling**: `throw BusinessException.of(ErrorCode.XXX)`
- **MapStruct**: `@Mapper(componentModel = "spring")`
## Testing
```bash
# Run all tests
mvn test
# Run specific test
mvn test -Dtest=ClassName#methodName
# Run specific module tests
mvn -pl services/data-management-service -am test
```
## Configuration
### Environment Variables
- `DB_USERNAME`: Database username
- `DB_PASSWORD`: Database password
- `REDIS_PASSWORD`: Redis password
- `JWT_SECRET`: JWT secret key
### Profiles
- `application.yml`: Default configuration
- `application-dev.yml`: Development overrides
## Documentation
- **API Docs**: http://localhost:8080/api/swagger-ui.html
- **AGENTS.md**: See `backend/shared/AGENTS.md` for shared libraries documentation
- **Service Docs**: See individual service READMEs
## Related Links
- [Spring Boot Documentation](https://docs.spring.io/spring-boot/)
- [MyBatis-Plus Documentation](https://baomidou.com/)
- [PostgreSQL Documentation](https://www.postgresql.org/docs/)