This is a simple system for Environmental Protection Agency to dispatch its Substitute Military Service personnel.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
img
js
lib
sample
LICENSE
README.md
index.html
region.json

README.md

EPA SMS Dispatcher

This is a simple system for Environmental Protection Agency to dispatch its Substitute Military Service personnel.

Although this system is designed for EPA, it can be easily modified to fit other departments as well.

Demo

Demo page:

Demo files:

(零)步驟總覽

  1. 事前準備,修改役男人數、各縣市名額等參數。
  2. 整理役男名單,並彙整成此系統可接受的格式。
  3. 開始預排。
  4. 儲存並列印預排之結果。

(一)修改參數

  1. 依照這一梯的役男總人數修改 region.json 的 what_T 欄位
  2. 依照這一梯的役男總人數修改 region.json 的 total_students 欄位
  3. 依照這一梯各縣市的名額修改 region.json 的 available 欄位

(二)外部匯入資料之格式

除了手動輸入外,也可以從檔案直接匯入資料。 外部匯入的資料必須符合下列格式:

  1. 必須是以 ANSI Big5 編碼的 csv 檔案, 或是有 BOM 的 UTF-8 編碼的 csv 檔案。
  2. csv 表格內總共三欄,第一欄為號碼、第二欄為分數、第三欄為戶籍地。如下圖:

(三)外部匯入資料範例流程

(1) 拿到教務組給的 戶籍地成績 資料

(2) 開新檔案 -> 新增 -> 空白活頁簿,貼上資料,第一欄為號碼、第二欄為分數、第三欄為戶籍地。

(3) 貼上時,記得選擇"貼上純值",若分數超過小數點兩位也沒關係,不用刻意編輯。

(4) 另存新檔時,選擇 CSV(逗號分格),檔名建議命名成 xxxT_input_file.csv

(5) 存檔,遇到警告時請按確定

(6) 關閉檔案,此時選擇不要儲存(剛剛已經儲存過了)

特殊情形

狀況:假設某梯役男共 50 人,其中 7 號同學在開始受訓後才驗退而退訓,剩下 49 人。

解法:不用修改程式總人數,一樣將 7 號同學的資料放進 csv 中,並在其成績欄填入 NA 。如此一來,本系統就不會將 7 號同學算入平均分數以及之後的預排演算法中。

(三)開始預排

  1. 開啟 Firefox 瀏覽器,若尚未安裝可以由此下載
  2. 從 github 右方的 download zip 按鈕下載本程式,解壓縮後用 firefox 開啟 index.html
  3. 點選左上角的瀏覽按鈕,讀取之前的 csv 或是 txt 檔案當作範例,並按下下方的「開始預排」按鈕

將畫面往下捲,以此範例檔案向役男講解本系統:

  1. 確認平均分數是否正確
  2. 講解名額與加減人數欄位
  3. 說明上方顏色區塊(分發規則說明)
  4. 下方尚未分配到的學號、點選可自動搜尋最佳落點

接著講解預排的規則:

  1. 被點到號碼的役男請大聲說出自己的志願
  2. 當切換到自己所屬的頁面時,請檢查自己的戶籍地與成績是否正確
  3. 每回合結束後,會有三到五分鐘討論時間
  4. 告知預排截止時間(問管理幹部)
  5. 詢問是否有不懂分發規則的,或有其他疑問的請發問

接下來開始正式預排:

  1. 重新整理頁面,並讀取這梯的 csv 或是 txt 檔 (e.g. 144T_input_file.csv)
  2. 第一輪:照號碼叫,選擇志願。家因優先者若戶籍地沒開缺額,可優先選擇戶籍地周圍縣市
  3. 存擋、看預排結果、討論
  4. 第二輪:一到十號想修改志願的舉手,依此類推
  5. 存擋、看預排結果、討論
  6. 第三輪之後,想修改的直接舉手
  7. 當尚未分配到的人數越來越少時,直接點選其號碼,系統會提示這個號碼還剩哪些地方可以選擇

請每次按下預排按鈕後 都先存擋(txt檔),以避免突發狀況造成資料流失、影響預排時間。

預排結束後,可讓役男們拍照留念,也可截圖備份。

預排結束後,按下右下角輸出表格給教務組。

其他設定

js/global.js 內的 printRound_N 可以設定預排結果的「縣市欄位」顯示幾筆資料後才換行

printRound_N = 3; // 每三筆資料就換行,如下圖:

printRound_N = 6; // 每六筆資料才換行,如下圖:


js/global.js 內的 fontColors{} 可以改變不同階段錄取的顏色

使用不同顏色來代表 不同階段錄取 的役男

fontColors = {
  type1 : "black", // 第一階段錄取(分數大於均標,戶籍地)
  type2 : "#229922", // 第二階段錄取(分數大於均標,非戶籍地)
  type3 : "#0000dd", // 第三階段錄取(分數低於均標,戶籍地)
  type4 : "#4488ff", // 第四階段錄取(分數低於均標,非戶籍地)
  // typeDefault : "black", // 預設顏色
  typeHome : "orange", // 家因顏色
  typeKicked : "red", // 選某個地區時,被擠掉的人的顏色
  leftOver : "red", // 本回合結束後,尚未分配到服勤單位的顏色
  shortage : "blue", // 地區人數短缺時的顏色
  overheat : "red" // 地區人數過多時的顏色
};

Todo Lists

License

This project is licensed under the terms of the MIT license.

Please note that this project is built with materials from the following parties:

Please also refer to their Licenses for further information.