# 分享链接导入并同步关联计划功能 - 实现计划

## 功能概述

采购商（布行）在计划总览页面可以为每个计划生成分享链接，发送给纺织厂/水洗厂。对方通过链接打开系统后，自动导入并关联该计划到自己的公司，实现跨角色协作。

## 核心流程

1. **采购商生成分享链接**：在计划总览页面，点击"分享链接"按钮，生成包含计划ID的URL（如 `#/import?plan=xxx&type=textile`）
2. **工厂方打开链接**：纺织厂/水洗厂用户收到链接后打开，系统识别URL参数，展示计划详情和导入确认页面
3. **确认导入**：工厂方确认后，系统在 `plan_factories` 表中创建关联记录，将计划绑定到工厂公司
4. **同步生效**：导入成功后，工厂方的工作台和计划总览自动显示该计划

## 实现步骤

### 步骤1：新增路由和导入页面

- 在 `App.tsx` 中添加路由：`/import` → `ImportPlanPage`
- 创建 `src/pages/ImportPlanPage.tsx`，处理URL参数中的 `plan` 和 `type`

### 步骤2：采购商计划总览 - 生成分享链接

修改 `src/pages/purchaser/PlanOverview.tsx`：
- 将现有的"分享链接"按钮从工厂级别移到计划级别
- 点击后生成链接：`#/import?plan={planId}&type={factoryType}`
- 显示复制链接的弹窗，支持一键复制

### 步骤3：创建 ImportPlanPage 导入确认页面

创建 `src/pages/ImportPlanPage.tsx`：
- 从URL参数读取 `plan`（计划ID）和 `type`（工厂类型：textile/washing）
- 检查用户是否已登录且角色匹配（纺织厂用户只能导入textile类型，水洗厂只能导入washing类型）
- 展示计划详情（产品名、颜色、坯布码、计划产量、纱线配比等）
- 提供"确认导入"按钮
- 导入逻辑：向 `plan_factories` 表插入 `{plan_id, factory_id: 当前公司ID, factory_type: type}`
- 导入成功后跳转到对应工作台

### 步骤4：防重复导入

- 导入前检查 `plan_factories` 是否已存在相同关联
- 如果已存在，提示"该计划已导入"并跳转到工作台

### 步骤5：更新 AGENTS.md 路由表

添加 `/import` 路由记录

## 涉及文件

| 文件 | 操作 | 说明 |
|------|------|------|
| `src/App.tsx` | 编辑 | 添加 `/import` 路由 |
| `src/pages/ImportPlanPage.tsx` | 新建 | 导入确认页面 |
| `src/pages/purchaser/PlanOverview.tsx` | 编辑 | 分享链接按钮改为计划级别，添加复制链接弹窗 |
| `AGENTS.md` | 编辑 | 添加路由记录 |

## 数据库变更

无需新增表或字段。使用现有的 `plan_factories` 表存储关联关系。

## URL格式设计

```
#/import?plan={planId}&type={textile|washing}
```

- `plan`: 生产计划的UUID
- `type`: 工厂类型，决定纺织厂还是水洗厂可以导入

## ImportPlanPage 页面设计

1. 未登录 → 提示登录并跳转到 `/login`
2. 已登录但角色不匹配 → 提示角色不匹配
3. 已登录且角色匹配 → 展示计划详情 + 确认导入按钮
4. 已导入 → 提示已导入 + 跳转工作台