# 灵越智报 Starter

## 概述

`lingyue-starter` 是灵越智报的单体应用启动器，整合了所有微服务模块为一个可独立运行的应用。

## 功能特性

- **单体应用架构**: 整合所有微服务模块（auth、document、parse、ai、graph、notification）
- **统一配置**: 集中管理所有服务的配置
- **API文档**: 集成 SpringDoc OpenAPI（Swagger UI）
- **请求日志**: 自动记录HTTP请求参数
- **热部署**: 支持Spring Boot DevTools热部署
- **国际化**: 支持多语言消息

## 项目结构

```
lingyue-starter/
├── pom.xml
└── src/main/
    ├── java/com/lingyue/
    │   ├── LingyueApplication.java      # 主启动类
    │   └── config/                      # 配置类
    │       ├── SpringDocConfig.java     # API文档配置
    │       ├── RequestParameterLoggingConfig.java  # 请求日志配置
    │       └── interceptor/
    │           └── RequestParameterLoggingInterceptor.java
    └── resources/
        ├── application.yml              # 主配置文件
        ├── application-dev.yml          # 开发环境配置
        ├── application-prod.yml         # 生产环境配置
        ├── mybatis/
        │   └── mybatis-config.xml      # MyBatis配置
        ├── i18n/
        │   └── messages.properties      # 国际化资源
        └── banner.txt                   # 启动Banner
```

## 快速开始

### 1. 编译项目

```bash
cd backend
mvn clean install
```

### 2. 启动应用

```bash
cd lingyue-starter
mvn spring-boot:run
```

或者直接运行jar包：

```bash
java -jar lingyue-starter.jar
```

### 3. 访问应用

- **应用地址**: http://localhost:8000
- **API文档**: http://localhost:8000/swagger-ui.html
- **Druid监控**: http://localhost:8000/druid/

## 配置说明

### 应用配置

在 `application.yml` 中配置：

```yaml
app:
  name: 灵越智报
  version: 2.0.0
  uploadBaseDir: /tmp/lingyue-zhibao
```

### 数据库配置

```yaml
spring:
  datasource:
    druid:
      url: jdbc:postgresql://localhost:5432/lingyue_zhibao
      username: postgres
      password: postgres
```

### API文档配置

开发环境默认启用API文档，生产环境自动禁用：

```yaml
springdoc:
  api-docs:
    enabled: true  # dev环境启用，prod环境禁用
```

## 环境配置

### 开发环境

使用 `application-dev.yml`，包含本地开发配置。

### 生产环境

使用 `application-prod.yml`，通过环境变量配置：

```bash
export DB_USERNAME=postgres
export DB_PASSWORD=your_password
export JWT_SECRET=your_jwt_secret
export REDIS_HOST=localhost
export REDIS_PORT=6379
```

## API分组

API文档按服务分组：

- **auth-api**: 认证服务 API
- **document-api**: 文档管理 API
- **parse-api**: 解析服务 API
- **ai-api**: AI处理服务 API
- **graph-api**: 关系网络服务 API

## 注意事项

1. **服务发现**: 单体应用默认禁用Nacos服务发现（`spring.cloud.nacos.discovery.enabled: false`）
2. **端口**: 默认端口8000，可在配置文件中修改
3. **数据库**: 确保PostgreSQL数据库已创建并执行初始化脚本
4. **Redis**: 确保Redis服务已启动
5. **RabbitMQ**: 确保RabbitMQ服务已启动（如使用消息队列功能）

## 与微服务架构的区别

| 特性 | 微服务架构 | 单体应用（Starter） |
|------|-----------|-------------------|
| 部署方式 | 多个独立服务 | 单个应用 |
| 服务发现 | 需要Nacos | 不需要 |
| API网关 | 需要Gateway | 不需要 |
| 配置管理 | 分散在各服务 | 统一配置 |
| 适用场景 | 大型项目、分布式 | 中小型项目、快速开发 |

## 开发建议

1. **开发阶段**: 使用 `lingyue-starter` 快速开发和调试
2. **生产环境**: 根据实际需求选择单体应用或微服务架构
3. **迁移**: 可以轻松从单体应用迁移到微服务架构（代码无需修改）

