ohytic6 commited on
Commit
e5a9d08
·
verified ·
1 Parent(s): 9d4ac20

Update simulated_data.py

Browse files
Files changed (1) hide show
  1. simulated_data.py +40 -38
simulated_data.py CHANGED
@@ -1,53 +1,55 @@
1
  import json
2
- from random import choice
3
  from datetime import datetime, timedelta
 
4
 
5
- # 員工基本資料
6
  employees = [
7
- {"姓名": "陳明", "員工編號": "A001"},
8
- {"姓名": "林宜君", "員工編號": "A002"},
9
- {"姓名": "黃偉傑", "員工編號": "A003"},
10
- {"姓名": "張靜雯", "員工編號": "A004"},
11
- {"姓名": "劉宇軒", "員工編號": "A005"},
12
- {"姓名": "王思婷", "員工編號": "A006"},
13
- {"姓名": "李美玲", "員工編號": "A007"},
14
- {"姓名": "周凱文", "員工編號": "A008"},
15
- {"姓名": "John Smith", "員工編號": "A009"},
16
- {"姓名": "Emily Davis", "員工編號": "A010"}
17
  ]
18
 
19
- # 狀態選擇
20
- statuses = ["已上班", "未上班未請假", "未上班已請假"]
 
21
 
22
- # 模擬2024年11月的上班記錄
23
- attendance_data = {}
24
-
25
- # 生成11月1日到11月30日的記錄
26
  start_date = datetime(2024, 11, 1)
27
  end_date = datetime(2024, 11, 30)
28
- date_range = (end_date - start_date).days + 1
29
-
30
- # 創建出每位員工在每個日期的上班狀態
31
- for employee in employees:
32
- attendance_data[employee["員工編號"]] = {
33
- "姓名": employee["姓名"],
34
- "出勤記錄": []
35
- }
36
- for day in range(date_range):
37
- current_date = (start_date + timedelta(days=day)).strftime("%Y-%m-%d")
38
- # 最後七天的當日上班狀態為空白
39
- if day >= date_range - 7:
40
- status = ""
41
- else:
42
- status = choice(statuses)
43
- attendance_data[employee["員工編號"]]["出勤記錄"].append({
44
- "日期": current_date,
 
 
45
  "當日上班狀態": status
46
  })
 
 
47
 
48
- # 儲存為 JSON 文件
49
- json_path = '/mnt/data/employee_attendance.json'
50
  with open(json_path, 'w', encoding='utf-8') as f:
51
  json.dump(attendance_data, f, ensure_ascii=False, indent=4)
52
 
53
- json_path
 
1
  import json
 
2
  from datetime import datetime, timedelta
3
+ import random
4
 
5
+ # 定義員工名單(八名中文、兩名英文)和對應員工編號
6
  employees = [
7
+ {"姓名": "陳明", "員工編號": "001"},
8
+ {"姓名": "李小華", "員工編號": "002"},
9
+ {"姓名": "王小美", "員工編號": "003"},
10
+ {"姓名": "林大志", "員工編號": "004"},
11
+ {"姓名": "黃佳玲", "員工編號": "005"},
12
+ {"姓名": "趙明華", "員工編號": "006"},
13
+ {"姓名": "劉大強", "員工編號": "007"},
14
+ {"姓名": "張小英", "員工編號": "008"},
15
+ {"姓名": "John Doe", "員工編號": "009"},
16
+ {"姓名": "Jane Smith", "員工編號": "010"}
17
  ]
18
 
19
+ # 定義上班狀態
20
+ work_status_options = ["已上班", "未上班未請假", "未上班已請假"]
21
+ weekend_status = "休假"
22
 
23
+ # 設定日期範圍,2024年11月1日至11月30日
 
 
 
24
  start_date = datetime(2024, 11, 1)
25
  end_date = datetime(2024, 11, 30)
26
+
27
+ # 建立請假狀態表
28
+ attendance_data = []
29
+
30
+ # 生成每個日期和員工的上班狀態
31
+ current_date = start_date
32
+ while current_date <= end_date:
33
+ for employee in employees:
34
+ if current_date.weekday() >= 5: # 週六日設為休假
35
+ status = weekend_status
36
+ elif current_date <= datetime(2024, 11, 12): # 11月12及以前隨機分布上班狀態
37
+ status = random.choice(work_status_options)
38
+ else: # 11月13日以後保持工作日空白
39
+ status = "" if current_date.weekday() < 5 else weekend_status
40
+
41
+ attendance_data.append({
42
+ "日期": current_date.strftime("%Y-%m-%d"),
43
+ "姓名": employee["姓名"],
44
+ "員工編號": employee["員工編號"],
45
  "當日上班狀態": status
46
  })
47
+
48
+ current_date += timedelta(days=1)
49
 
50
+ # 儲存為 JSON 檔案
51
+ json_path = '/mnt/data/attendance_data_november_2024.json'
52
  with open(json_path, 'w', encoding='utf-8') as f:
53
  json.dump(attendance_data, f, ensure_ascii=False, indent=4)
54
 
55
+