# 程序开发文档 (技术架构与数据字典)

## 一、 技术栈选型
1. **前端 (小程序)**：Taro 或 Uni-app (Vue3/React语法)，一套代码可编译到微信、字节等多个小程序平台。
2. **前端 (PC官网 & Web后台)**：Vue3 + TypeScript + Element Plus / Tailwind CSS。
3. **后端 API 服务**：
   - 主业务逻辑：Node.js (NestJS) 或 Go (Gin)，高并发处理。
   - AI推理/图像处理网关：Python (FastAPI)，方便对接各类深度学习模型库。
4. **数据库**：MySQL 8.0 (主业务数据) + Redis (缓存与会话) + PostgreSQL (若需复杂空间查询，可选)。
5. **云存储**：阿里云 OSS 或 腾讯云 COS（存储海量用户衣物图片，必须开启CDN加速与WebP压缩）。

## 二、 核心业务流程 (衣物入库与AI识别)
1. **客户端**：小程序调用 `wx.chooseMedia` 拍照或选图。
2. **直传OSS**：小程序请求后端获取OSS临时上传凭证 (STS)，将原图直传至云存储，获取 URL。
3. **调用AI网关**：小程序将 URL 提交给后端业务服务，后端调用 Python AI 服务。
4. **AI处理**：
   - 图像分割 (Segment Anything / U-Net)：去除背景，生成透明底 PNG。
   - 图像分类 (ResNet/ViT)：识别主颜色、类别（上衣/裤子）、季节属性。
5. **返回与保存**：AI返回结果及新图片URL，后端落库，客户端展示识别结果供用户确认。

## 三、 数据库设计 (核心表结构)

### 1. 用户表 (`users`)
| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| id | BIGINT | 主键 |
| openid | VARCHAR | 微信OpenID |
| nickname | VARCHAR | 昵称 |
| avatar_url | VARCHAR | 头像 |
| created_at | DATETIME | 注册时间 |

### 2. 空间节点表 (`locations` - 树状结构)
| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| id | BIGINT | 空间ID |
| user_id | BIGINT | 归属用户 |
| parent_id | BIGINT | 父节点ID (如为0则是顶层，如“卧室”) |
| name | VARCHAR | 空间名称 (如“左侧衣柜”、“3号箱”) |
| level | INT | 层级深度 |

### 3. 衣物资产表 (`clothes`)
| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| id | BIGINT | 衣物唯一ID |
| user_id | BIGINT | 所属用户 |
| original_image | VARCHAR | 原图URL |
| cutout_image | VARCHAR | 抠图后透明图URL |
| category | VARCHAR | 分类 (上装/下装/鞋/包) |
| sub_category | VARCHAR | 子分类 (T恤/牛仔裤) |
| color_hex | VARCHAR | 主色调HEX值 |
| season | VARCHAR | 季节 (春/夏/秋/冬/四季) |
| location_id | BIGINT | 当前所在的空间节点ID |
| status | TINYINT | 状态 (1:在穿 2:收纳 3:送洗 4:闲置) |
| buy_price | DECIMAL | 购买价格 |
| buy_date | DATE | 购买日期 |
| created_at | DATETIME | 录入时间 |

### 4. 穿搭日历/方案表 (`outfits`)
| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| id | BIGINT | 搭配方案ID |
| user_id | BIGINT | 所属用户 |
| name | VARCHAR | 搭配名称 (如“周一通勤”) |
| cover_image | VARCHAR | 搭配画布合成的预览图 |
| wear_date | DATE | 计划/实际穿着日期 |
| created_at | DATETIME | 创建时间 |

### 5. 穿搭-衣物关联表 (`outfit_clothes_rel`)
| 字段名 | 类型 | 描述 |
| --- | --- | --- |
| outfit_id | BIGINT | 方案ID |
| cloth_id | BIGINT | 衣物ID |
| z_index | INT | 画布图层层级 |
| scale | FLOAT | 画布缩放比例 |
| pos_x | FLOAT | 画布X坐标 |
| pos_y | FLOAT | 画布Y坐标 |

## 四、 关键技术难点与解决方案
1. **图片加载慢/耗流量**：单用户衣橱可能有几百件衣服。
   - **方案**：所有列表页图片强制请求 WebP 格式，并附带缩略图参数（如 `?x-oss-process=image/resize,w_300/format,webp`），详情页才加载高清大图。
2. **AI抠图准确率与成本**：
   - **方案**：前期可接入成熟的第三方 API（如皮卡智能、阿里视觉开放平台），后期数据量大后，自行使用开源模型（如 RMBG-1.4 或 DIS）在 GPU 服务器上部署推理服务以降低成本。
3. **搭配画布的实现**：
   - **方案**：前端使用 HTML5 Canvas (小程序用对应的 Canvas API) 或 Fabric.js 的封装，处理拖拽、缩放、图层排序，并最终导出 Base64 图片上传服务器。
