# Contract-Manager 项目报告

## 项目概述
Contract-Manager是一个企业级合同管理系统，提供完整的合同生命周期管理，包括合同的创建、审批、执行、归档等功能，同时集成了供应商管理、客户管理、项目管理等相关业务模块。

## 项目架构

### 模块划分
项目采用模块化设计，分为三个主要模块：

- **common**：公共模块，包含实体类、枚举、异常、工具类等共享组件
- **server**：服务端模块，基于Spring Boot开发，提供HTTP服务和WebSocket通信
- **client**：客户端模块，基于JavaFX开发，提供图形用户界面

### 技术栈

#### 服务端技术栈
- Java 21
- Spring Boot 3.3.7
- Spring Data JPA 3.3.7
- MySQL 8.0.33
- Lombok 1.18.32
- POI 5.2.5 (Office文档处理)
- PDFBox 3.0.1 (PDF文档处理)
- Redis (缓存)
- WebSocket (实时通信)

#### 客户端技术栈
- Java 21
- JavaFX 21
- ControlsFX 11.1.2 (UI控件增强)
- Lombok 1.18.32
- Caffeine 3.1.8 (本地缓存)
- WebSocket (与服务端通信)

## 目录结构

```
Contract-Manager/
├── common/                 # 公共模块
│   ├── src/main/java/com/ecep/contract/
│   │   ├── model/          # 实体类
│   │   ├── vo/             # 值对象
│   │   ├── util/           # 工具类
│   │   ├── constant/       # 常量定义
│   │   └── msg/            # 消息相关
├── server/                 # 服务端模块
│   ├── src/main/java/com/ecep/contract/
│   │   ├── api/            # API接口
│   │   ├── controller/     # 控制器
│   │   ├── service/        # 服务层
│   │   ├── ds/             # 数据访问层
│   │   ├── config/         # 配置类
│   │   ├── util/           # 工具类
│   │   ├── handler/        # WebSocket处理器
│   │   ├── cloud/          # 云端服务集成
│   │   └── ui/             # 服务端UI组件
├── client/                 # 客户端模块
│   ├── src/main/java/com/ecep/contract/
│   │   ├── controller/     # 控制器
│   │   ├── service/        # 服务层
│   │   ├── vm/             # 视图模型
│   │   ├── util/           # 工具类
│   │   ├── task/           # 任务处理
│   │   ├── converter/      # 类型转换器
│   │   └── serializer/     # 序列化器
│   └── src/main/resources/ui/  # FXML界面文件
└── docs/                   # 文档目录
    └── db/                 # 数据库相关文件
    └── task/               # 任务
```

## 核心功能模块

### 1. 公司管理
- 公司基本信息管理
- 公司联系方式管理
- 公司银行账户管理
- 公司文件管理
- 公司黑名单管理

### 2. 供应商管理
- 供应商信息管理
- 供应商资质审核
- 供应商分类管理
- 供应商文件管理
- 供应商评估

### 3. 客户管理
- 客户信息管理
- 客户分类管理
- 客户满意度调查
- 客户文件管理

### 4. 合同管理
- 合同创建与编辑
- 合同审批流程
- 合同执行跟踪
- 合同付款计划
- 合同文件管理
- 合同分类与归档

### 5. 项目管理
- 项目信息管理
- 项目成本管理
- 项目报价管理
- 项目文件管理
- 项目资金计划

### 6. 库存管理
- 库存物品管理
- 库存价格历史
- 库存分类管理

### 7. 员工与权限管理
- 员工信息管理
- 角色权限管理
- 登录历史记录

### 8. 云端服务集成
- 天眼查企业信息集成
- 用友U8系统集成
- 其他云端服务集成

## 数据模型设计

系统采用JPA注解式实体类设计，主要实体类包括：

- **基础实体类**：BasedEntity, IdentityEntity, NamedEntity等
- **公司相关**：Company, CompanyContact, CompanyBankAccount等
- **供应商相关**：Vendor, VendorApproved, VendorFile等
- **客户相关**：CompanyCustomer, CustomerSatisfactionSurvey等
- **合同相关**：Contract, ContractItem, ContractPayPlan等
- **项目相关**：Project, ProjectCost, ProjectFundPlan等
- **枚举实体类**：各种类型的本地枚举实体，如VendorTypeLocal, ContractFileTypeLocal等

## 通信机制

系统采用WebSocket进行客户端与服务端的实时通信，主要组件包括：

- **服务端**：WebSocketController, WebSocketServerHandler
- **客户端**：WebSocketClientService, WebSocketClientSession

## 任务处理机制

系统实现了异步任务处理机制，支持长时间运行的任务监控和管理：

- **TaskMonitorCenter**：任务监控中心
- **MonitoredTask**：可监控的任务基类
- **TaskHistory**：任务历史记录

## 扩展性设计

系统采用良好的分层架构和接口设计，具有较强的扩展性：

1. **服务接口标准化**：通过IEntityService等接口统一服务访问方式
2. **模块化设计**：各功能模块相对独立，便于扩展和维护
3. **配置管理**：支持动态配置和属性绑定
4. **国际化支持**：通过messages.properties实现多语言支持

## 安全机制

系统实现了基本的安全机制：

- **用户认证与授权**：基于角色的权限控制
- **登录历史记录**：记录用户登录信息
- **异常处理**：全局异常处理机制

## 部署说明

### 服务端部署
1. 配置application.properties中的数据库连接和Redis连接信息
2. 打包为jar文件：`mvn clean package`
3. 运行jar文件：`java -jar server.jar`

### 客户端部署
1. 确保安装Java 21运行环境
2. 配置连接到服务端的WebSocket地址
3. 打包为可执行jar或使用jpackage创建安装包

## Tasker实现规范指南

有关Tasker框架的详细实现规范，请参阅 [Tasker实现规范指南](docs/task/tasker_implementation_guide.md)。

## 开发环境要求
- JDK 21
- Maven 3.6+
- MySQL 8.0+
- Redis 6.0+
- IntelliJ IDEA或Eclipse（推荐使用IDEA）

## 后续优化方向

1. 完善单元测试和集成测试
2. 优化数据库查询性能
3. 增强系统安全机制
4. 改进用户界面体验
5. 扩展更多云端服务集成