---
tags: 110-1
---
# 110-1 選課網站
### 下學期預選時程
* 開始時間: 11月初
* 期限:12月13號封測(後端跟演算法一定要好)
* 12月27~29開始預選
### 相關連結
[110-1 預選網站檢討文件](https://docs.google.com/document/d/1Dtg02a07t2bNg8fwKPZEcvn4zul6aDdcaZDqOpZCwRA/edit)
[預選網站檢查SOP](https://ntueesaad.notion.site/COLLAB-f3d3a0ffd8494e8e98241b2101c128e7)
## 2021/12/11
- [x] priority_value of guarantee has to be number (e?)
- [x] 特定年級要load原本的資料
- [ ] **login session problem**
- [ ] option color faded
- [ ] alert students not found must be longer?
## 2021/12/3
### small bug
- [x] (威侑) **login button can't click for sometime**
* 用useHistory, history.push("/"), 參考下面
- [x] (Justin Huang) **Options showing undefined (if priority_type = "" => show "無")**
- [x] **priority_value of guarantee has to be number**
- [x] (陳駿瑋)**courses description required**
* 可以去api.js判斷data.description是否為null, 然後改成空字串
- [x] (Connor Chen)delayed remain time
- [x] (Connor Chen) students 擋人的403要回到/ or /courses
- [x] (威侑) maintainer 不可以進去 distribute
### todo
- [x] (張創渝 & 黃宥翔)**預選 upload csv (refer to add student)**
- [x] (張創渝 & 黃宥翔)**add space in courses manage for enter students (also by upload csv)**
* **上面兩個可以做一個小視窗(rollable),裡面列出student_id from top to down,右下有個按鈕upload csv**
* 前後端都要確定id is in students, if not inside, pop error message
- [x] (Justin Huang) **add course 時 default selected options limit must be 1(trivial), number must larger than 0**
- [ ] result ui color and 排版...(可以截圖問ui大師)
- [x] (張創渝)直接列出所有年級的課程(類型由上往下,課程由左往右)(course那邊不要用tab)**類型呢...?**
- [ ] (梁正)選課及演算法說明寬度變大。**寬度而已...**
* login 按鈕可以參考`src/container/drawer/index.js`
```
useHistory
import { Link, useHistory } from "react-router-dom";
const history = useHistory();
<div
style={{ cursor: "pointer" }}
onClick={() => history.push("/login")}
aria-hidden="true"
>
LOGIN
</div>
```
## 2021/11/26
* options 可以修改(陳駿瑋)
* 接後端(Justin Huang)
* 選課及演算法說明版面寬度可以更大 | 多一個明顯的登入視窗(若沒登入)! | 主頁上面加一個按鈕或其他形式超連結到Course (梁正)
* 加以儲存按鈕+判斷 (Monica Huang)
* 直接列出所有年級的課程(類型由上往下,課程由左往右)(course那邊不要用tab)(張創渝)
* deal with distribute (Ray Huang)
* 可以增加一個result的頁面(放到 homepage):查看所有已預選的課程(陳亮瑜)
* 沒選上該課的人前端屏蔽課程(陳亮瑜)
### auto logout problem (in backend?)

## 這次要做的(到2021-fall branch)
選項:
必修(由大到小),某幾個年級優先,大三保障 xx,大四保障xx,全部平等
```
// 必修(null),某幾個年級優先(array),大三保障 xx(number),大四保障xx(number),全部平等(none)
priority_type: String
priority_value: various type
courseSchema({
id:
name:
type:
description:
students: 前端屏蔽用
number: 可選上人數
options:[
{
name:
limit:
priority_type: "higher-grade-first", "grades", "guarantee-third-grade", "guarantee-fourth-grade", "none", "preselect"
priority_value: 0, [Number], Number, Number, 0, [String]
}
]
})
```
後端:
* 十選二條件(大三大四優先、大三保障xx名、大四保障xx名)需正式加入系統中
* statistics.csv 可加上 選上 “選項 vs 志願序” 的表格
* (第二次)選項可在前端隱蔽(不清除分發結果,直接去 db 撈)
* **DONE** 選課期間定期自動備份 一小時一次 可以保留前幾個小時
前端:
* options 可以修改(陳駿瑋)
* 可以增加一個result的頁面(放到 homepage):查看所有已預選的課程, 加一個 status 顯示已儲存
* 使用說明:步驟分開, 滑鼠點擊特效
* 選課及演算法說明版面寬度可以更大 ()
* 直接列出所有年級的課程(類型由上往下,課程由左往右)(course那邊不要用tab)
* 多一個明顯的登入視窗(若沒登入)!
* 主頁上面加一個按鈕或其他形式超連結到Course
有解決方法:
* (第二次)選時段屬於十選二實驗,但僅能上一個志願!(”上兩個”可當新的屬性): 新增一個Course Type / 多一個Course的欄位
### 資訊部改良事項(待更新)
#### 後端
1. 演算法
* 十選二條件(大三大四優先、大三保障xx名、大四保障xx名)需正式加入系統中
* 選項可在前端隱蔽
* 網站無法匯出、匯入課程資料
* preSelect 應加上注明的 “選項“(不只數電實驗可用)且不應在後端特判
2. api
* statistics.csv 可加上 選上 “選項 vs 志願序” 的表格
* 一鍵匯出課程資訊
3. database
* 半導體和電磁波實驗時段選項不應出現在名單以外的人: 用戶特定族群
* 選時段屬於十選二實驗,但僅能上一個志願!(”上兩個”可當新的屬性): 新增一個Course Type / 多一個Course的欄位
* mongoDB 設定帳號密碼 或 牽至 atlas
* 選課期間定期自動備份 一小時一次 可以保留前幾個小時
#### 前端介面
1. 功能
* 一鍵匯出課程資訊
* 半導體和電磁波實驗時段選項不應出現在名單以外的人: 前端屏蔽
* 新增course時可以同時把一階實驗預選名單輸入進去
* Introduction 的 MarkDown,有時 render 會崩潰,插入圖片只能用HTML格式, 編輯器語法跟 render 語法不一樣 (換編輯器/renderer ?)
* 封測的時候要檢查 對時的問題
* options可以修改
2. UI
* 時間旁邊多一個登入視窗(若沒登入)!
* 直接列出所有年級的課程(類型由上往下,課程由左往右)
* 選課及演算法說明版面寬度可以更大, 更直覺的翻頁方式, 可從前端 Markdown 編輯
* 主頁上面加一個按鈕或其他形式超連結到Course
* 使用說明:步驟分開, 滑鼠點擊特效
* login: 打錯密碼連學號不見,
* 可以增加一個result的頁面:查看所有已預選的課程, 加一個 status 顯示已儲存
* ~~加上一個drag indicator (六個點點)~~ 加一個類似 placeholder 在背景提示可以拖
3. Mobile(較不優先)
* 手機版選課的地方可改為上下, 在前面選課列表可能也要有所調整
4. 新頁面
* 查詢系統結合
