# Kylin Catering

智慧餐饮管理系统业务扩展包 — 提供餐饮行业核心领域模型、枚举、API 路由。

## 功能模块

| 模块 | 说明 | 核心模型 |
|------|------|----------|
| 桌台管理 | 桌台信息维护、区域分类、状态管理 | Table, TableArea |
| 菜品管理 | 菜品 CRUD、分类、规格、定价 | Dish, DishCategory, DishSpec |
| 订单管理 | 点餐下单、订单状态流转、结算 | Order, OrderItem |
| 库存管理 | 食材入库/出库、库存盘点、供应商管理 | Stock, StockLog, Supplier |
| 食品安全 | 食品留样、餐具消毒、添加剂管理、过期预警 | InspectionRecord, SampleRecord |
| 营业统计 | 日/周/月营业额统计、菜品销量排行 | Statistic |

## 安装

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

## 配置说明

### 食品安全配置

```php
// config/kylin-catering.php
return [
    'sample' => [
        'min_weight_g' => 125,    // 食品留样最小重量（克）
        'min_hours'    => 48,     // 食品留样最短时间（小时）
    ],
    'expiry_alert_days' => 7,     // 食品过期预警天数
    'max_dishes_per_person' => 8, // 人均最大菜品数量（反浪费）
    'supplier_record_retention_days' => 730, // 供应商记录保留天数（2年）
    'disinfection' => [
        'enabled' => true,        // 启用餐具消毒记录
        'methods' => ['高温', '紫外线', '化学消毒剂'],
    ],
    'additive' => [
        'enabled' => true,        // 启用食品添加剂管理
    ],
];
```

## 使用示例

### 桌台管理

```php
use Kylin\Catering\Models\Table;

// 查询可用桌台
$available = Table::where('status', 'available')->get();

// 桌台状态变更
$table = Table::find(1);
$table->update(['status' => 'occupied']);
```

### 库存管理

```php
use Kylin\Catering\Models\Stock;
use Kylin\Catering\Models\StockLog;

// 入库
$stock = Stock::firstOrCreate(['sku' => 'MEAT001'], ['name' => '猪肉', 'unit' => 'kg']);
$stock->increment('quantity', 10);
StockLog::create([
    'stock_id' => $stock->id,
    'type'     => 'in',
    'quantity' => 10,
    'remark'   => '供应商进货',
]);

// 过期检测
$expiring = Stock::where('expired_at', '<=', now()->addDays(config('kylin-catering.expiry_alert_days')))->get();
```

### 食品安全

```php
use Kylin\Catering\Models\SampleRecord;

// 食品留样记录
SampleRecord::create([
    'dish_name'  => '宫保鸡丁',
    'weight_g'   => 130,
    'sampled_at' => now(),
    'operator_id'=> auth()->id(),
]);
```

## 数据库表

| 表名 | 说明 |
|------|------|
| `kc_catering_tables` | 桌台表 |
| `kc_catering_dishes` | 菜品表 |
| `kc_catering_categories` | 菜品分类表 |
| `kc_catering_orders` | 订单表 |
| `kc_catering_order_items` | 订单明细表 |
| `kc_catering_stocks` | 库存表 |
| `kc_catering_stock_logs` | 库存流水表 |
| `kc_catering_suppliers` | 供应商表 |
| `kc_catering_sample_records` | 食品留样记录表 |
| `kc_catering_inspection_records` | 食品安全检查表 |

## 法律合规

详见 [LEGAL.md](./LEGAL.md)，涵盖：
- 《中华人民共和国食品安全法》(2021.4.29 修订)
- 《中华人民共和国反食品浪费法》(2021.4.29)
- 《餐饮服务食品安全操作规范》(2018.10.1)
- 《中华人民共和国个人信息保护法》(2021.11.1)
- 《中华人民共和国数据安全法》(2021.9.1)

## 依赖

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

## 许可证

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