# PDF文档生成系统 - 西班牙海牙文件自动生成

企业文档自动化处理平台，为中国大陆及香港公司生成西班牙海牙认证（Hague Apostille）所需的合并PDF文档。

## 快速开始

```bash
# 1. 安装依赖
composer install
cd python && pip install -r requirements.txt && cd ..

# 2. 配置环境
cp .env.example .env        # 编辑数据库凭证和API密钥

# 3. 初始化
php scripts/init_project.php
```

### 必需软件

| 软件 | 用途 |
|------|------|
| PHP 7.4+ | 运行时（扩展：sqlsrv, pdo_sqlsrv, zip, gd） |
| LibreOffice | Word转PDF |
| Ghostscript | PDF合并、PDF转图片 |
| SQL Server | 数据库 |
| Python 3.x | 高级文档处理脚本 |

## 使用方式

### 异步队列处理器（推荐）

```bash
php task/queue_processor.php             # 交互式模式
php task/queue_processor.php --daemon     # 守护进程模式
php task/queue_processor.php --interval=60 --max-tasks=3
```

### API接口

- **ES 海牙文档生成**（异步受理）：POST 到 `public/es_hague_api.php`，接口文档见 `docs/ES_HAGUE_API.md`（Data 字段定义见 `UNIFIED_API_DESIGN.md`）
- **VAT 文档生成**（异步）：POST 到 `public/generate_api.php`（传业务记录 id）

文件由 `task/queue_processor.php` 后台生成，结果写入 `AsyncVATTasks` 任务记录。

### 命令行

```bash
php scripts/example_usage.php
```

## 支持的公司类型

### 大陆公司

生成授权书 + 企业信用报告 + 营业执照 + 身份证翻译件。

- **海牙流程**：4份授权书（西/英） + 信用报告 + 营业执照 + 身份证（原件+翻译件）
- **免海牙流程**：免海牙授权书 + 信用报告 + 营业执照 + 身份证（原件+翻译件）

### 香港公司

自动检测（CompanyCountry 含 "香港"/"HK"/"Hong Kong"），始终走海牙流程。

- 授权书（西/英） + CR/BR翻译件 + 身份证（原件+翻译件）
- HagueType=1/2 时额外生成查册文件，HagueType=3 跳过

## 核心架构

### 主要组件

| 类 | 职责 |
|---|------|
| `VATDocumentGenerator.php` | 海牙文档生成主编排器 |
| `VATDataService.php` | VAT业务数据查询 |
| `VATAsyncProcessor.php` | 异步VAT文档生成 |
| ~~`DocumentGenerator.php`~~ | 通用文档生成编排器（**已废弃**，勿用；在用链路为 VATDocumentGenerator + VATDataService） |
| `LibreOfficeConverter.php` | Word→PDF转换 |
| `WordTemplateProcessor.php` | `{{placeholder}}`模板处理 |
| `ImageToPdfConverter.php` | 图片→PDF（Python Pillow/FPDF） |
| `PdfMerger.php` | PDF合并 |

### OCR & 翻译

| 类 | 职责 |
|---|------|
| `OCRDataProcessor.php` | OCR数据处理（百度OCR） |
| `BaiduOCR.php` | 百度云OCR集成 |
| `HKCompanyOCR.php` | 香港公司CR/BR的OCR |
| `PortraitExtractor.php` | 身份证人像提取（腾讯云OCR） |
| `TranslatorWithFallback.php` | 翻译（火山→DeepL降级） |
| `TranslationCache.php` | 翻译缓存 |

### 其他服务

| 类 | 职责 |
|---|------|
| `WeChatWorkNotifier.php` | 企业微信Webhook通知 |
| `QrCodeGenerator.php` / `QrCodeManager.php` / `QrCodeExtractor.php` | 二维码操作 |
| `CosUploader.php` | 腾讯云COS上传 |
| `TempFileCleanupManager.php` | 临时文件自动清理 |
| `Logger.php` | UTF-8日志（支持控制台输出级别） |

完整类列表（44个）见 `CLAUDE.md`。

## 数据库

**双数据库架构：**

1. **VAT Database** - 业务数据（`database.development/production` 配置）
2. **RPA Database** - 异步任务队列（`rpa_database.development/production` 配置）

**主要表：**

| 表 | 用途 |
|---|------|
| `VATBusinessRecord` / `VATRegInfo` | VAT注册记录 |
| `AsyncVATTasks` | 异步任务队列 |
| `BusinessLicenseInfo`, `IdCardInfo` | 证件数据 |
| `ShareholderInfo`, `DirectorInfo` | 人员数据 |

## 测试

```bash
php scripts/test_system.php               # 系统组件验证
php scripts/test_complete.php              # 完整端到端流程
php scripts/test_database.php              # 数据库连接
php scripts/test_ocr.php                   # OCR功能
php scripts/test_translate.php             # 翻译功能
php scripts/test_hague_complete.php        # 海牙文档生成
```

100+ 测试脚本在 `scripts/test_*.php`。

## 日志

UTF-8编码日志在 `logs/` 目录：

```powershell
# 查看错误
Get-Content 'logs\*.log' -Encoding UTF8 | Select-String 'ERROR'

# 按Application ID搜索
php -r "require_once 'src/Logger.php'; echo Haiya\Logger::searchByApplicationId('logs', 12345, 7);"
```

## 目录结构

```
src/          核心源代码（44个类）
config/       配置文件
database/     数据库脚本
public/       Web界面和API
scripts/      测试和工具脚本
docs/         文档
python/       Python处理脚本
template/     Word模板
task/         异步队列处理器
output/       PDF输出
temp/         临时文件（自动清理）
uploads/      上传文件
```

## 常见问题

| 问题 | 解决方案 |
|------|---------|
| LibreOffice未找到 | 检查config中的安装路径 |
| 数据库连接失败 | 验证.env中的凭证 |
| PDF合并错误 | 安装Ghostscript |
| OCR识别失败 | 检查百度/腾讯云API凭证 |
| Python脚本失败 | `pip install -r python/requirements.txt` |
| 临时文件堆积 | 自动清理（24小时过期），见 `docs/AUTO_CLEANUP_IMPROVEMENTS.md` |

## 文档

见 `docs/` 目录和 `CLAUDE.md` 获取完整技术文档。
