# Planting Service 文档中心

## 概述

Planting Service 是 RWA Durian Queen 平台的核心微服务，负责处理榴莲树认种业务的完整生命周期。

### 核心功能

- **认种订单管理** - 创建、支付、取消订单
- **省市选择机制** - 5秒确认机制防止误操作
- **资金分配** - 10种目标的精确分配（2199 USDT/棵）
- **持仓管理** - 用户认种持仓统计与追踪
- **资金池注入** - 5天批次管理机制

### 技术栈

| 技术 | 版本 | 用途 |
|-----|------|------|
| NestJS | 10.x | Web 框架 |
| TypeScript | 5.x | 开发语言 |
| PostgreSQL | 16 | 数据库 |
| Prisma | 5.x | ORM |
| Jest | 29.x | 测试框架 |
| Docker | 24.x | 容器化 |

---

## 文档索引

| 文档 | 描述 | 适用人员 |
|-----|------|---------|
| [ARCHITECTURE.md](./ARCHITECTURE.md) | 系统架构设计 | 架构师、技术负责人 |
| [API.md](./API.md) | API 接口文档 | 前端开发、测试 |
| [DEVELOPMENT.md](./DEVELOPMENT.md) | 开发指南 | 后端开发 |
| [TESTING.md](./TESTING.md) | 测试文档 | 开发、测试 |
| [DEPLOYMENT.md](./DEPLOYMENT.md) | 部署文档 | DevOps、运维 |

---

## 快速开始

### 1. 环境准备

```bash
# 要求
Node.js >= 20.x
PostgreSQL >= 16
Docker >= 24.x (可选)
```

### 2. 安装依赖

```bash
npm install
```

### 3. 配置环境

```bash
cp .env.example .env
# 编辑 .env 文件配置数据库等
```

### 4. 初始化数据库

```bash
npx prisma generate
npx prisma migrate dev
```

### 5. 启动服务

```bash
# 开发模式
npm run start:dev

# 生产模式
npm run build
npm run start:prod
```

### 6. 访问服务

- 服务地址: http://localhost:3003
- API 文档: http://localhost:3003/api/docs
- 健康检查: http://localhost:3003/api/v1/health

---

## 常用命令

```bash
# 开发
make dev              # 启动开发服务器
make build            # 构建项目

# 测试
make test-unit        # 单元测试
make test-integration # 集成测试
make test-e2e         # E2E 测试
make test-cov         # 覆盖率测试
make test-all         # 所有测试

# 数据库
make prisma-generate  # 生成 Prisma Client
make prisma-migrate   # 运行迁移
make prisma-studio    # 打开 Prisma Studio

# Docker
make docker-build     # 构建镜像
make docker-up        # 启动容器
make test-docker-all  # Docker 测试

# 代码质量
make lint             # 代码检查
make format           # 代码格式化
```

---

## 项目结构

```
planting-service/
├── docs/                    # 文档目录
│   ├── README.md           # 文档索引
│   ├── ARCHITECTURE.md     # 架构文档
│   ├── API.md              # API 文档
│   ├── DEVELOPMENT.md      # 开发指南
│   ├── TESTING.md          # 测试文档
│   └── DEPLOYMENT.md       # 部署文档
├── prisma/                  # 数据库
│   ├── schema.prisma       # 模型定义
│   └── migrations/         # 迁移文件
├── src/                     # 源代码
│   ├── api/                # API 层
│   ├── application/        # 应用层
│   ├── domain/             # 领域层
│   ├── infrastructure/     # 基础设施层
│   └── main.ts             # 入口
├── test/                    # E2E 测试
├── docker-compose.yml       # Docker 编排
├── Dockerfile              # 生产镜像
└── Makefile                # 构建脚本
```

---

## 业务规则概览

### 定价

- 单价: **2199 USDT/棵**
- 单次限制: 1-1000 棵
- 个人限制: 最多 1000 棵

### 资金分配

| 目标 | 比例 | 金额 (USDT) |
|-----|------|------------|
| 资金池 | 90% | 1979.1 |
| 运营 | 5% | 109.95 |
| 省代 | 0.6% | 13.194 |
| 市代 | 0.3% | 6.597 |
| 社区长 | 0.5% | 10.995 |
| 一级推荐 | 1.5% | 32.985 |
| 二级推荐 | 1.0% | 21.99 |
| 三级推荐 | 0.5% | 10.995 |
| 平台 | 0.3% | 6.597 |
| 储备 | 0.3% | 6.597 |

### 订单状态流转

```
CREATED → PROVINCE_CITY_SELECTED → PROVINCE_CITY_CONFIRMED
        → PAID → FUND_ALLOCATED → POOL_SCHEDULED
        → POOL_INJECTED → MINING_ENABLED

任意状态(PAID前) → CANCELLED
```

---

## 测试报告

### 测试概览

| 类型 | 数量 | 状态 |
|-----|------|-----|
| 单元测试 | 45+ | ✅ 通过 |
| 集成测试 | 12+ | ✅ 通过 |
| E2E 测试 | 17+ | ✅ 通过 |

### 覆盖率

| 模块 | 覆盖率 |
|-----|-------|
| 应用服务 | 89% |
| 领域服务 | 93% |
| 聚合根 | 69% |

---

## 贡献指南

1. Fork 项目
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'feat: Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 创建 Pull Request

### 提交规范

使用 [Conventional Commits](https://www.conventionalcommits.org/):

- `feat`: 新功能
- `fix`: Bug 修复
- `docs`: 文档更新
- `test`: 测试
- `refactor`: 重构

---

## 相关链接

- [NestJS 文档](https://docs.nestjs.com/)
- [Prisma 文档](https://www.prisma.io/docs/)
- [TypeScript 文档](https://www.typescriptlang.org/docs/)

---

## 联系方式

如有问题或建议，请通过以下方式联系:

- 项目 Issues
- 技术负责人邮箱
