# 🏠 AI 家居装修 App

基于 AI 的家居装修方案生成平台，支持智能设计、材料推荐、预算估算。

## ✨ 核心功能

### 1. AI 装修方案生成
- 上传户型图（支持 PNG/JPG/Web格式）
- 选择装修风格（现代简约、北欧、中式等）
- AI 自动生成 **3套完整装修方案**
- 每套方案包含：**效果图 + 材料清单 + 预算估算**

### 2. 智能材料推荐
- **33+ 种材料**，覆盖地面、墙面、厨卫、灯具、门窗等
- 支持 **中美双市场**（CN/US）
  - 🇨🇳 中国市场：圣象、多乐士、立邦等 10+ 品牌
  - 🇺🇸 北美市场：Pergo、Behr、Kohler 等 13+ 品牌
- 根据装修风格、房间类型智能筛选
- 自动计算面积预算

### 3. AI 生成装修效果图
- 使用 **Stability AI** 生成真实装修效果图（1024x1024）
- 支持风格：现代简约、北欧、工业风、中式古典等
- 成本仅 **$0.002-0.005/张**，比 DALL-E 3 便宜 10 倍

## 🛠️ 技术栈

| 模块 | 技术 | 说明 |
|------|------|------|
| **前端** | Flutter + Dart | 跨平台（Android/iOS/Web） |
| **后端** | FastAPI + Python 3.11 | RESTful API，自动生成文档 |
| **AI 服务** | Python + Stability AI | 装修效果图生成 |
| **数据库** | JSON 文件（可扩展 PostgreSQL） | 材料数据库 |
| **部署** | Docker + Docker Compose | 容器化部署 |
| **云服务** | Oracle Cloud Infrastructure (OCI) | ARM64 实例 |

## 📂 项目结构

```
home-renovation-app/
├── backend/                 # FastAPI 后端
│   ├── main.py            # 主应用（材料推荐、方案生成）
│   ├── requirements.txt   # Python 依赖
│   ├── data/              # 材料数据库
│   │   ├── materials_cn.json  # 中国市场（22种材料）
│   │   └── materials_us.json  # 北美市场（26种材料）
│   └── Dockerfile        # 后端容器
├── frontend/              # Flutter 前端
│   ├── lib/
│   │   ├── main.dart                 # 入口
│   │   ├── pages/
│   │   │   ├── upload_page.dart     # 户型图上传页
│   │   │   └── plan_display_page.dart  # 方案展示页
│   └── .github/workflows/  # GitHub Actions（Flutter 构建）
├── ai-service/            # AI 推理服务
│   ├── app.py            # Stability AI 集成
│   ├── leonardo_ai.py    # Leonardo AI（备选，便宜50%）
│   ├── requirements.txt
│   └── Dockerfile
├── docker-compose.yml    # 编排后端 + AI 服务
├── scripts/
│   ├── build_and_push.sh # 构建镜像推送到 OCI Registry
│   └── deploy.sh         # OCI 实例部署脚本
└── docs/
    └── HYBRID_STRATEGY.md # 混合方案文档
```

## 🚀 快速开始

### 1. 克隆项目
```bash
git clone git@github.com:davidyin/home-renovation-app.git
cd home-renovation-app
```

### 2. 配置环境变量
```bash
# AI 服务配置
cd ai-service
cp .env.example .env
# 编辑 .env，填入 Stability AI API Key
echo "STABILITY_API_KEY=your_key_here" > .env
```

### 3. 使用 Docker Compose 启动（推荐）
```bash
docker-compose up -d --build
```

访问：
- 后端 API：http://localhost:8000
- API 文档：http://localhost:8000/docs
- AI 服务：http://localhost:8001
- 前端测试页：http://localhost:8080/test-frontend.html

### 4. 手动启动（开发模式）

#### 后端
```bash
cd backend
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn main:app --host 0.0.0.0 --port 8000
```

#### AI 服务
```bash
cd ai-service
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
uvicorn app:app --host 0.0.0.0 --port 8001
```

## 📡 API 接口

### 健康检查
```bash
GET /health
Response: {"status": "healthy"}
```

### 获取材料列表
```bash
GET /api/v1/materials?market=CN
Response: [
  {
    "id": "floor-001",
    "name": "圣象强化地板",
    "brand": "圣象",
    "category": "地面材料",
    "estimated_price": 4.99,
    "unit": "平米",
    "room": ["客厅", "卧室"],
    "supplier": "圣象官方旗舰店",
    "purchase_url": "https://..."
  },
  ...
]
```

### 上传户型图
```bash
POST /api/v1/upload-layout
Content-Type: multipart/form-data
File: layout.png

Response: {
  "layout_id": "667bacd4-786a-42ac-ac6b-16ec209ea096",
  "filename": "layout.png",
  "size": 102400
}
```

### 生成装修方案
```bash
POST /api/v1/generate-plan
{
  "layout_id": "667bacd4-786a-42ac-ac6b-16ec209ea096",
  "style": "现代简约",
  "room_type": "客厅"
}

Response: {
  "plans": [
    {
      "name": "现代简约方案 A",
      "description": "简洁明亮，注重功能性...",
      "image_base64": "iVBORw0KGgo...",  # 1024x1024 PNG
      "materials": [
        {"name": "圣象地板", "brand": "圣象", "price": 4.99, ...},
        ...
      ]
    },
    ...  # 共3套方案
  ]
}
```

完整 API 文档见 [API.md](./docs/API.md)

## 🌐 部署到 OCI

### 1. 构建并推送镜像
```bash
cd scripts
chmod +x build_and_push.sh
./build_and_push.sh
# 需要配置 OCI Registry 环境变量
```

### 2. 部署到 OCI 实例
```bash
./deploy.sh
# 需要配置 OCI 实例 SSH 访问
```

### 3. 开放端口（OCI 安全列表）
- **8000**：后端 API
- **8001**：AI 服务
- **8080**：前端测试页

公网访问：http://house.openmenu.app

## 💰 成本分析

| 项目 | 成本 |
|------|------|
| **OCI ARM64 实例** | 免费套餐（4 OCPU, 24GB RAM） |
| **Stability AI** | $0.002-0.005/张效果图 |
| **材料数据库** | $0（本地 JSON） |
| **域名 + CDN** | 可选（约 $10/月） |
| **总计** | **~$0-10/月** ✅ |

## 🎯 路线图

- [x] MVP：AI 生成装修方案（3套）
- [x] 材料数据库（中美双市场）
- [x] Stability AI 集成
- [ ] 用户账号系统（JWT 认证）
- [ ] 保存方案到数据库（PostgreSQL）
- [ ] 社交分享功能
- [ ] 与收据扫描 App 数据互通

## 📄 许可证

MIT License

## 👤 作者

**David Yin** - [GitHub](https://github.com/davidyin)

---
📱 配套 App：[收据扫描 App](https://github.com/davidyin/receipt-scan-app) - AI 驱动的收据管理工具
