# Kylin Export

Kylin 导出包 — Excel/CSV 导出、异步导出队列、进度追踪。

## 功能特性

- **同步导出**：即时生成并下载
- **异步导出**：大数据量导出放入队列，完成后通知下载
- **多格式**：XLSX / CSV
- **进度追踪**：异步导出进度查询
- **文件清理**：自动清理过期导出文件（`file_retention_hours = 24`）
- **分块导出**：`chunk_size = 1000`，防止大数据量内存溢出
- **API 接口**：前端触发导出和下载

## 安装

```bash
composer require kylin/export
php artisan vendor:publish --tag=kylin-export-config
php artisan vendor:publish --tag=kylin-export-migrations
php artisan migrate
```

## 配置说明

```php
// config/kylin-export.php
return [
    'queue' => 'default',          // 队列名称
    'chunk_size' => 1000,          // 分块大小
    'file_retention_hours' => 24,  // 文件保留时间（小时）
    'formats' => ['xlsx', 'csv'],  // 支持格式
    'storage' => [
        'disk' => 'local',         // 存储磁盘
        'path' => 'exports/',      // 存储路径
    ],
];
```

## 使用示例

### 同步导出

```php
use Kylin\Export\Facades\KylinExport;

// 同步导出
return KylinExport::download(User::all(), 'users.xlsx');
```

### 异步导出

```php
// 异步导出
$taskId = KylinExport::asyncExport(User::class, 'users.xlsx', [
    'filters' => ['status' => 'active'],
]);

// 查询导出进度
$progress = KylinExport::getProgress($taskId);
// 返回：['status' => 'pending|processing|completed|failed', 'progress' => 45]

// 下载已完成的导出
return KylinExport::downloadByTask($taskId);
```

### API 路由

| 方法 | 路径 | 说明 |
|------|------|------|
| POST | /api/kylin/export | 创建导出任务 |
| GET | /api/kylin/export/{taskId} | 查询导出进度 |
| GET | /api/kylin/export/{taskId}/download | 下载导出文件 |

## 数据库表

| 表名 | 说明 |
|------|------|
| `kylin_exports` | 导出任务表（记录任务状态、文件路径、大小） |

## 法律合规

详见 [LEGAL.md](./LEGAL.md)，涵盖：
- 《中华人民共和国数据安全法》(2021.9.1)
- 《中华人民共和国个人信息保护法》(2021.11.1)
- 等保 2.0 (GB/T 22239-2019) — 安全审计、访问控制、数据保密性
- 《中华人民共和国网络安全法》(2017.6.1)
- 《网络数据安全管理条例》(2025.1.1)

## 依赖

- PHP ^8.5
- Laravel ^13.0
- kylin/core

## 许可证

私有软件，未经授权禁止使用。