---
title: API for /public/console/app-dashboard.html
tags: v1
---
# API for /public/console/app-dashboard.html
[TOC]
建議
- 假想閱讀文件的人沒有背景知識,先交代一下背景知識
- 將句子精簡,不要有口語、修飾詞等等字出現
# 先備知識
fio = app = S.M.A.R.T. Contract
## MongoDB
- Collection: `fio`,`alpha_admin`
- field: fio.invitations = [{type: '', status: '', email: '', date: ''}, ...]
- type: value of ['user', 'approver']
- status: value of ['pending', 'active', 'reject']
- email: value of ['被邀請人的 email']
- date: value of ['更改日期']
-
- field: alpha_admin.invited = [{type: '', fio_id: '', fio_name: '', enable, solution: ''}, ...]
- type: value of ['user', 'approver']
- fio_id: value of [fio_id]
- fio_name: value of ['fio_name']
- enable: value of [true,false]
- solution: value of ['LearningCurve']
## API
API 可以 做到這些事
- User
- Add/delete
- Approver
- Add/delete
# 現況
- `api.put('/fio/:id ...)`
- 前端拿到 `fio.invitations` 所有資料 => 新增刪除資料後將全部資料傳回後端 => 更新 `fio.invitations`
# 遇到問題
- 更新日期
- 新增/刪除一筆資料 => 資料全部更新 => 先前資料的欄位 `fio.invitations[].date` 將被一併蓋過,無法得知分別的更新日期
- 效能不佳
- 假設 `fio.invitaions` 已有 1000 筆資料,新增一筆資料,就要將 1001 筆資料重新傳入`fio.invitations`
# 發想
1. 一次做一筆資料
- 一隻 api 新增
- 方便日後加入大量新增與維護
- 一隻 api 刪除
- 方便日後加入刪除多個
2. 大量新增/刪除 (Ivan 表示這個版本還不需要)
# 規劃
1. 新增 API
- `PUT /fio/:id/invitation`
- 新增一筆資料
- 欄位
```
[
{
type: 'user', // user || approver
email: 'micky@fio.one' // 被邀請人的 email
status: pending // 邀請後一率都是 pending 直到被邀請人接受或拒絕
date: '2021,01,01' // 後端產生
}
]
2. 刪除 API
- `DELETE /fio/invitation/:id/:email/:type?/:date/:status`
- Mongo.update.pull
- input: {fio._id, email, type, date, status}
- output: {modifiedCount:.. }
- (feature) `DELETE /fio/:fio_id/invitations`
- inupt: [{type, email, status, date}, ..]
- 移除一筆資料:傳入要刪除的那一筆物件 {type, email, status, date}
- 判斷 status
- pending
- `fio.invitations` 刪除資料
- active
- `fio.invitations` 刪除資料
- `alpha_admin.invited` 刪除此筆資料
3. 驗證 code
- 0: success
- 1: 重複
- others: fail alert error message
## 可能遇到問題
1. 重複邀請
- 目前是將全部`fio.invitations` 資料都給前端,前端在新增邀請時判斷 email 是否有重複,如果將來量大,改成只給特定的筆數,判斷機制就需要重新設計
* 問題: 現在是否需要在後端再驗證一次是否有重複邀請
* 解決: 前後端皆有驗證