---
# System prepended metadata

title: ChatSQL_PRD
tags: [PRD]

---

---
title: 'ChatSQL_PRD'
tags: 'PRD'
---
## iMGenie 產品需求文檔
![Uploading file..._3iguugdvt]()


醫療數據解決方案規劃

## 版本修訂記錄

<table>
    <thead>
        <tr>
            <th>版號</th>
            <th>修訂日期</th>
            <th>修訂內容</th>
            <th>修訂原因</th>
            <th>修訂者</th>
            <th>審核</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>v1.0</td>
            <td>2023/4/28</td>
            <td>新建文檔</td>
            <td></td>
            <td>李皓禎</td>
            <td></td>
        </tr>
        <tr>
            <td>v2.0</td>
            <td>2023/5/5</td>
            <td>將chatsql從genie_prd獨立成一個文件</td>
            <td></td>
            <td>李皓禎</td>
            <td></td>
        </tr>
        <tr>
            <td>v2.1</td>
            <td>2023/5/26</td>
            <td>將jira已確定的定案整理成文件</td>
            <td>5/26開會討論</td>
            <td>李皓禎</td>
            <td></td>
        </tr>
        <tr>
            <td>v2.2</td>
            <td>2023/5/29</td>
            <td>更新ch3 flows流程圖</td>
            <td>5/29開會討論</td>
            <td>李皓禎</td>
            <td></td>
        </tr>
        <tr>
            <td>v2.3</td>
            <td>2023/6/1</td>
            <td>新增参考鏈接</td>
            <td></td>
            <td>李皓禎</td>
            <td></td>
        </tr>
        <tr>
            <td>v2.4</td>
            <td>2023/6/6</td>
            <td>新增table schema、權限；調整 chapter 位置</td>
            <td>6/6開會討論</td>
            <td>李皓禎</td>
            <td></td>
        </tr>
    </tbody>
</table>

---

## 1 產品概述

### 1.1 產品介紹

ChatSQL

醫療數據解決方案規劃

### 1.3 用戶需求

<table>
    <thead>
        <tr>
            <th>用戶故事</th>
            <th>需求描述</th>
            <th>討論方案</th>
            <th>優先級</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td></td>
            <td></td>
            <td></td>
            <td></td>
        </tr>
    </tbody>
</table>

### 1.4 產品開發里程碑

[]()

---

## 2 系統需求

<table>
    <thead>
        <tr>
            <th>類型</th>
            <th>需求描述</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td rowspan="2" >技術組建要求</td>
            <td>採用GCP雲端技術、Python版本3.9，Flask框架。</td>
        </tr>
        <tr>
            <td>資料庫採用PostgreSQL, Mongodb, Big Query。</td>
        </tr>
        <tr>
            <td>性能要求</td>
            <td></td>
        </tr>
        <tr>
            <td rowspan="3" >安全性要求</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
        </tr>
        <tr>
            <td></td>
        </tr>
        <tr>
            <td rowspan="3" >可用性要求</td>
            <td></td>
        </tr>
        <tr>
            <td></td>
        </tr>
        <tr>
            <td></td>
        </tr>
    </tbody>
</table>

## 3 系統架構

[genie_structure.drawio - diagrams.net](https://drive.google.com/file/d/1clOtzsG3kS_8Ah1ITG3Drcw4-f9Xsx99/view?usp=sharing)

DB：
- Chat聊天用DB分為temp與persistence
- temp負責未save時候的對話內容，包括左側的對話記錄（依時間或數量定期刪除），或右側的主對話框
- persistence負責若使用者save對話內容，則持久化保存
  - 保存時間：永遠（除非使用者自行刪除）
  - 保存格式：同temp欄位格式
  - 保存內容：sql，resultset

---

## 4 產品與技術說明

### 4.1 Sitemap

[genie_sitemap.drawio - diagrams.net](https://drive.google.com/file/d/1-2kzk0k7q-hnt2RmUlkhl5ld2PbqZYd2/view?usp=sharing)

### 4.2 User flow

[ChatSQL_userflow](https://whimsical.com/chatsql-userflow-DfxAwAaRZo3ypBdCTyq7n8)

### 4.3 Wireframes

[ChatSQL_wireframe](https://whimsical.com/chatsql-wireframe-WhxZfmMKTvwJtDbMphJhox)

### 4.4 UIUX

[ChatSQL_Reference – Figma](https://www.figma.com/file/dDx8tFjlCxmdveliVXZOGu/ChatSQL_Reference?type=design&node-id=11-46&t=FrpSDP9ukWuAiGwk-0)

### 4.5 TODO

should have:
- User Account
- Support

nice to have:
1. IMG-28: 建議提問bubble
2. IMG-28: 對話拖移
3. IMG-37: assistant回復時間UI顯示（後台log要記錄）
4. IMG-58: 對回答進行反饋，例如按讚

## 5 角色權限說明

權限流程
- [ChatSQL_permission](https://whimsical.com/chatsql-permission-EmfNihTFTXo6kXW2Pt9B6o)

權限清單
- [ChatSQL_權限清單 - Google Sheets](https://docs.google.com/spreadsheets/d/1SMMlTtO8D0eEXayrPCu8OHI3tktO9yAH2zd5lx297vg/edit?usp=sharing)

## 6 資料庫設計

[ChatSQL - dbdiagram.io](https://dbdiagram.io/d/643f79fa6b31947051d4ae99)

## 7 API 交互設計

[genie_api_flow.drawio - diagrams.net](https://drive.google.com/file/d/1_3wawsKHSH4K9IGEZPjHs-VMVzHKPbn8/view?usp=sharing)

#### 7.1 specifications

#### 7.2 testing

- postman
- swagger-ui

## 8 參數說明

### 8.1 返回碼 Return Code

Return Code List

| errorCode | HTTP Status Code | Description |
| --- | --- | --- |
| -- | 200 | 執行成功 |
| -- | 200 | 查無資料 |
| -- | 201 | 新增成功 |
| 0001 | 400 | 請求欄位資料不完整(欄位名稱) |
| 0002 | 400 | 請求欄位資料格式不正確(欄位名稱) |
| 0003 | 409 | 資料已存在，無法新增 |
| 0004 | 500 | API connect error |
| 0005 | 500 | 發生資料庫錯誤 |
| 0006 | 404 | 查無此資料，無法異動 |
| 0009 | 400 | 查詢資料異常，請聯繫系統管理員 |
| 0010 | 400 | 至少輸入一欄位 |
| U001 | 403 | 無此權限 |
| U008 | 403 | 新密碼與確認密碼不一致 |
| U009 | 500 | 信件通知任一筆失敗 |
| 9999 | 500 | 發生未預期錯誤 |

成功
```json
{
  "data_key": "data_value"
}
```

查無資料
```console
Http Status == 204
```

發生錯誤(Http Status != 2XX)
```json
{
    "data": null,
    "code": "9999",
    "message": "發生未預期錯誤"
}
```

新增成功
| Level | Parameter | Type   | Required | Description | Remark |
| ----- | --------- | ------ | -------- | ----------- | ------ |
| 1     | data      | object | true     | data        |        |

查無資料
| Level | Parameter | Type   | M/O | Description | Remark |
| ----- | --------- | ------ | --- | ----------- | ------ |
| 1     | data      | object | M   | data        |        |

發生錯誤
| Level | Parameter | Type   | M/O | Description | Remark |
| ----- | --------- | ------ | --- | ----------- | ------ |
| 1     | data      | object | M   | data        |        |
| 1     | code      | string | M   | 回傳代碼    |        |
| 1     | message   | string | M   | 回傳訊息    |        |


### 8.2 字段規則

<table>
    <thead>
        <tr>
            <th>字段名稱</th>
            <th>數據類型</th>
            <th>長度</th>
            <th>必填</th>
            <th>輸入格式</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>賬號</td>
            <td>string</td>
            <td>20</td>
            <td>yes</td>
            <td>字母 + 數字</td>
        </tr>
        <tr>
            <td>密碼</td>
            <td>string</td>
            <td>20</td>
            <td>yes</td>
            <td>字母 + 數字</td>
        </tr>
        <tr>
            <td>prompt</td>
            <td>string</td>
            <td>1000</td>
            <td>no</td>
            <td>any</td>
        </tr>
    </tbody>
</table>

## 9 附錄

### 9.1 参考鏈接

本項目使用工具鏈接：
- [No-Code Platform](https://whimsical.com/no-code-platform-B3dRhFrGhpUJWV9FstRwYg)
- [SA - Google Drive](https://drive.google.com/drive/u/0/folders/1QDQrv5Ln9t_nvFJxjFwoQvjC1M0xir91)

其他ChatSQL產品參考：
- [ChatSQL - a Hugging Face Space by ls291](https://huggingface.co/spaces/ls291/ChatSQL)
- [sqlchat.ai](https://www.sqlchat.ai/)
- [Bytebase 1.14.0 - ChatSQL 帮你写 SQL - 墨天轮](https://www.modb.pro/db/619173)
- [VizGPT](https://www.vizgpt.ai/)

Source Code：
- [sqlchat/sqlchat: Chat-based SQL Client and Editor for the next decade](https://github.com/sqlchat/sqlchat)
- [ademakdogan/ChatSQL: Convert the given plain text to MySQL query by ChatGPT](https://github.com/ademakdogan/ChatSQL)

### 9.2 術語詞彙解釋

### 9.3 縮寫列表
