## 科技大脑展示平台（technological-brain）

面向高校/企业的人才与科研信息管理与展示后端服务，基于 Spring Boot 构建，集成权限认证、参数配置、科研与成果管理等功能模块，并提供在线 API 文档。

### 技术栈
- **后端框架**: Spring Boot 2.5.14, Spring MVC, Spring Security (JWT)
- **持久层**: MyBatis-Plus, MyBatis XML 映射
- **数据库/连接池**: MySQL 8.x, Druid
- **缓存**: Redis (Lettuce)
- **对象映射**: MapStruct
- **工具库**: Hutool, Guava, Apache Commons
- **文档**: Springfox Swagger2 2.9.2, Knife4j
- **云存储**: 阿里云 OSS SDK

### 目录结构（关键路径）
```text
src/
  main/
    java/com/CUST/brain/
      BrainApplication.java               # 应用入口
      common/                             # 通用配置、拦截器、异常、工具
        config/                           # Security / Swagger / Redis 等配置
        security/                         # JWT 过滤器、异常处理器
        dto/ enums/ utils/ ...
      dao/
        domain/                           # 实体对象
        mapper/                           # MyBatis-Plus Mapper 接口
      service/                            # 业务接口与实现
      web/controller/                     # REST 控制器
    resources/
      application.yml                     # 应用配置
      mapper/*.xml                        # MyBatis 映射 XML
      db/schema.sql                       # 库表结构初始化
      db/data.sql                         # 基础数据（菜单/用户/角色/参数等）
```

### 功能模块
- **系统管理**: 用户、角色、权限、参数（类型/值）
- **人才管理**: 人才基本信息、工作单位（高校/企业）、履历、工作领域
- **科研管理**: 科研项目、立项项目、科技报告
- **成果管理**: 论文专著、专利、学术奖励、荣誉称号

以上模块的导航/菜单初始化见 `src/main/resources/db/data.sql`。

### 环境要求
- JDK 1.8
- Maven 3.6+
- MySQL 8.x
- Redis 5+

### 快速开始
1) 克隆并进入项目目录
```bash
git clone <your-repo-url>
cd technological_brain
```

2) 配置数据库与中间件
- 新建数据库 `technological_brain`（或使用自定义库名）
- 启动 Redis 服务
- 根据实际环境修改 `src/main/resources/application.yml` 中的以下配置项（建议改为环境变量或外部化配置）：
  - spring.datasource.url / username / password
  - spring.redis.host / port / password
  - jwt.secret / expiration
  - oss.endpoint / access-key-id / access-key-secret / bucket-name / domain

3) 初始化数据库
```sql
-- 执行库表结构
src/main/resources/db/schema.sql

-- 初始化菜单/用户/角色/参数等数据
src/main/resources/db/data.sql
```

4) 启动服务
```bash
mvn clean package -DskipTests
java -jar target/brain-1.0.0.jar
```

默认服务端口与上下文路径见 `application.yml`:
- 端口: 8090
- 上下文: /brain

因此应用根地址为: `http://localhost:8090/brain`

### API 文档与调试
- 文档入口: `http://localhost:8090/brain/doc.html`
- Swagger/Knife4j 可通过 `swagger.enable` 与 `knife4j.enable` 开关控制
- 文档扫描基础包: `com.CUST.brain.web.controller`

### 认证与授权
- 统一认证接口（放行）: `POST /api/system/auth/login`
- 其他接口默认需要认证，携带 JWT:
  - Header: `Authorization: Bearer <token>`
- 安全配置参考 `common/config/SecurityConfig.java`

### 配置说明（节选）
`src/main/resources/application.yml` 包含以下关键配置：
- **server**: `port`, `servlet.context-path`
- **spring.datasource**: Druid 数据源与连接池参数
- **spring.redis**: Redis 连接与池参数
- **mybatis-plus**: `mapper-locations`, `type-aliases-package`, 驼峰映射、逻辑删除
- **logging**: 各包日志级别
- **swagger/knife4j**: 文档开关与显示项
- **jwt**: `secret`, `expiration`, `tokenHeader`, `tokenHead`
- **oss**: 阿里云 OSS 访问配置（请勿在仓库中明文提交敏感信息）

> 安全提示：强烈建议将数据库、Redis、JWT、OSS 等敏感配置改为环境变量或外部化配置文件，避免明文泄露。

### 构建与部署
- 构建命令：`mvn clean package -DskipTests`
- 运行命令：`java -jar target/brain-1.0.0.jar`
- 常用 JVM/运行参数：
```bash
java -Xms512m -Xmx1024m \
  -Dspring.profiles.active=prod \
  -Dserver.port=8090 \
  -jar target/brain-1.0.0.jar
```

### 常见问题
- 文档页无法访问：确认 `swagger.enable=true`、`knife4j.enable=true`，并使用带有上下文路径的地址 `/brain/doc.html`。
- 登录失败：检查初始化数据是否执行、用户密码是否匹配、JWT `secret` 是否与生成 token 的配置一致。
- 数据源/Redis 连接失败：核对主机、端口、用户名密码与防火墙/容器网络。

### 版权与声明
本项目仅用于教学/演示目的，涉及的账号、密钥配置请在实际部署前更换为安全的私有配置。





