|
1
|
# Requirements Specification: OEE Overview Dashboard สำหรับจอ 55 นิ้ว
|
|
2
|
|
|
3
|
**Feature:** OEE Overview 55-inch Display
|
|
4
|
**Version:** 1.0
|
|
5
|
**Date:** 2025-01-XX
|
|
6
|
**Status:** Draft — รอ Dev Review
|
|
7
|
|
|
8
|
---
|
|
9
|
|
|
10
|
## Introduction
|
|
11
|
|
|
12
|
ฟีเจอร์นี้คือหน้า OEE Overview Dashboard ที่ออกแบบเฉพาะสำหรับจอแสดงผลขนาด 55 นิ้ว โดยมี URL แยกต่างหาก (แบบเดียวกับ Call Systems) เพื่อแสดงข้อมูล OEE ของเครื่องจักรทุกเครื่องทุก Zone ในหน้าจอเดียวโดยไม่ต้อง scroll ประกอบด้วย Gauge แสดงค่า OEE/Availability/Performance/Quality รวม และ Card Machine แยกตาม Zone พร้อม Filter สำหรับเลือกช่วงเวลา
|
|
13
|
|
|
14
|
---
|
|
15
|
|
|
16
|
## Glossary
|
|
17
|
|
|
18
|
| คำศัพท์ | ความหมาย |
|
|
19
|
|---------|----------|
|
|
20
|
| Dashboard_55inch | หน้า Overview Dashboard สำหรับจอ 55 นิ้ว (1920x1080 / 3840x2160) เข้าถึงผ่าน URL แยก |
|
|
21
|
| OEE | Overall Equipment Effectiveness = Availability × Performance × Quality |
|
|
22
|
| Availability | อัตราความพร้อมใช้งาน (เวลาเดินเครื่องจริง / เวลาที่วางแผนผลิต) |
|
|
23
|
| Performance | อัตราสมรรถนะ (จำนวนผลิตจริง / จำนวนที่ควรผลิตได้) |
|
|
24
|
| Quality | อัตราคุณภาพ (จำนวนชิ้นงานดี / จำนวนผลิตทั้งหมด) |
|
|
25
|
| Gauge | แผนภูมิวงกลมแสดงค่า % ของ OEE, A, P, Q |
|
|
26
|
| Card_Machine | การ์ดแสดงข้อมูล OEE ของเครื่องจักรแต่ละเครื่อง |
|
|
27
|
| Zone | กลุ่มเครื่องจักรตามพื้นที่ เช่น Die Casting, Finishing, Injection |
|
|
28
|
| Up_to_Date | ช่วงเวลาตั้งแต่เวลาเริ่มต้น Shift แรกของวันปัจจุบัน (ตาม setup) ถึง เวลาปัจจุบัน |
|
|
29
|
| Auto_Refresh | รีเฟรชข้อมูลอัตโนมัติ เลือกรอบได้: 5s, 15s, 30s, 1min, 3min, 5min หรือ Disable |
|
|
30
|
| Only_on_Job | กรองแสดงเฉพาะเครื่องที่มี Job เปิดอยู่ |
|
|
31
|
| Sidebar | แถบเมนูด้านซ้าย |
|
|
32
|
| Filter_Bar | แถบตัวกรองด้านบน |
|
|
33
|
|
|
34
|
---
|
|
35
|
|
|
36
|
## Requirements
|
|
37
|
|
|
38
|
### Req 1: URL แยกสำหรับจอ 55 นิ้ว
|
|
39
|
|
|
40
|
**User Story:** As a ผู้จัดการโรงงาน, I want to เข้าถึงหน้า OEE Overview ผ่าน URL แยกเฉพาะสำหรับจอ 55 นิ้ว, so that สามารถแสดงผลบนจอขนาดใหญ่ในพื้นที่โรงงานได้โดยไม่กระทบกับระบบหลัก
|
|
41
|
|
|
42
|
**Acceptance Criteria:**
|
|
43
|
|
|
44
|
| # | Criteria |
|
|
45
|
|---|----------|
|
|
46
|
| 1.1 | มี URL path แยกจากระบบ OEE หลัก (แบบเดียวกับ Call Systems) ไม่ต้องผ่านหน้า login |
|
|
47
|
| 1.2 | แสดงหน้า Overview ในโหมด read-only ไม่ต้อง login ไม่มี navigation link ไปหน้าที่ต้อง auth |
|
|
48
|
| 1.3 | แสดงผล full viewport ไม่มี horizontal/vertical scroll — target resolution หลักคือ 1920x1080 (4K ใช้ browser scaling) |
|
|
49
|
| 1.4 | หากโหลดข้อมูลไม่ได้ → แสดงข้อความแจ้งสถานะ + layout ปกติ + ค่า OEE/A/P/Q เป็น "N/A" |
|
|
50
|
|
|
51
|
---
|
|
52
|
|
|
53
|
### Req 2: Sidebar แสดง OEE Overall พร้อม Drill-down
|
|
54
|
|
|
55
|
**User Story:** As a ผู้จัดการโรงงาน, I want to เห็น sidebar ที่แสดง OEE Overall และ drill-down ลงไป Zone/Machine ได้, so that สามารถเลือกดูข้อมูลเฉพาะ Zone หรือเครื่องจักรที่สนใจได้
|
|
56
|
|
|
57
|
**Acceptance Criteria:**
|
|
58
|
|
|
59
|
| # | Criteria |
|
|
60
|
|---|----------|
|
|
61
|
| 2.1 | แสดงเมนู "OEE Overall" เป็นเมนูหลัก สามารถ drill-down ลงไป Zone → Machine ได้เหมือนระบบเดิม |
|
|
62
|
| 2.2 | ไม่แสดงเมนู "Support MC" (ตัดออก) |
|
|
63
|
| 2.3 | Default เป็น collapsed (icon only) กว้างไม่เกิน 80px |
|
|
64
|
| 2.4 | ตำแหน่ง fixed ด้านซ้าย ไม่ซ้อนทับพื้นที่แสดงผลหลัก |
|
|
65
|
| 2.5 | เลือก Zone จาก Sidebar → Gauge + Card แสดงเฉพาะ scope ของ Zone ที่เลือก |
|
|
66
|
| 2.6 | เลือก Machine จาก Sidebar → Gauge + Card แสดงเฉพาะเครื่องที่เลือก |
|
|
67
|
|
|
68
|
---
|
|
69
|
|
|
70
|
### Req 3: Filter Bar ด้านบน
|
|
71
|
|
|
72
|
**User Story:** As a ผู้จัดการโรงงาน, I want to เลือกช่วงเวลาและโหมดการแสดงผลผ่าน Filter Bar, so that สามารถดูข้อมูล OEE ในช่วงเวลาที่ต้องการได้
|
|
73
|
|
|
74
|
**Acceptance Criteria:**
|
|
75
|
|
|
76
|
| # | Criteria |
|
|
77
|
|---|----------|
|
|
78
|
| 3.1 | แสดงตัวเลือกช่วงเวลา: Up to date, Weekly, Monthly, Custom |
|
|
79
|
| 3.2 | แสดงตัวเลือก Only on Job |
|
|
80
|
| 3.3 | แสดงตัวเลือก Auto Refresh (เปิด/ปิด) |
|
|
81
|
| 3.4 | "Up to date" → ข้อมูลตั้งแต่เวลาเริ่มต้น Shift แรกของวันปัจจุบัน (ตาม setup) ถึง เวลาปัจจุบัน |
|
|
82
|
| 3.5 | "Weekly" → ข้อมูลสัปดาห์ปัจจุบัน เริ่มวันเริ่มต้นสัปดาห์ตาม codeTable (default: จันทร์) เวลา Shift แรก ถึง เวลาปัจจุบัน |
|
|
83
|
| 3.6 | "Monthly" → ข้อมูลเดือนปัจจุบัน เริ่มวันที่ 1 เวลา Shift แรก ถึง เวลาปัจจุบัน |
|
|
84
|
| 3.7 | "Custom" → date picker เลือก From/To เมื่อเลือกฝั่งใดฝั่งหนึ่งแล้ว disable วันที่ใน calendar ที่เกิน 3 เดือนจากวันที่เลือกไว้ |
|
|
85
|
| 3.8 | กรณี edge case เลือกเกิน 3 เดือน → แจ้งเตือน + ไม่โหลดข้อมูล |
|
|
86
|
| 3.9 | เปลี่ยน filter → แสดง loading indicator + อัปเดตภายใน 5 วินาที |
|
|
87
|
|
|
88
|
---
|
|
89
|
|
|
90
|
### Req 4: Default State
|
|
91
|
|
|
92
|
**User Story:** As a ผู้จัดการโรงงาน, I want to เห็นหน้าจอแสดงค่า default ทันทีเมื่อเปิดหน้า, so that ไม่ต้องตั้งค่าทุกครั้งที่เปิดจอ
|
|
93
|
|
|
94
|
**Acceptance Criteria:**
|
|
95
|
|
|
96
|
| # | Criteria |
|
|
97
|
|---|----------|
|
|
98
|
| 4.1 | โหลด/refresh → ใช้ค่า default ทั้งหมดตามเดิมของหน้า Overview ที่มีอยู่แล้ว (Filter, Only_on_Job, Auto_Refresh) |
|
|
99
|
| 4.2 | โหลด/refresh → แสดง OEE Overall พร้อม Gauge + Card_Machine ภายใน 5 วินาที |
|
|
100
|
| 4.3 | หากโหลดก่อนเวลา Shift แรก → แสดงข้อมูลตั้งแต่เวลา Shift แรกของวันก่อนหน้า ถึง เวลาปัจจุบัน |
|
|
101
|
| 4.4 | หากไม่มีข้อมูล → Gauge = 0% ทุกตัว + Card_Machine ค่า OEE/A/P/Q = 0% |
|
|
102
|
|
|
103
|
---
|
|
104
|
|
|
105
|
### Req 5: Gauge แสดงค่า OEE รวม
|
|
106
|
|
|
107
|
**User Story:** As a ผู้จัดการโรงงาน, I want to เห็น Gauge แสดงค่า OEE, Availability, Performance, Quality รวมทั้งโรงงาน, so that ทราบสถานะประสิทธิภาพโดยรวมได้ทันที
|
|
108
|
|
|
109
|
**Acceptance Criteria:**
|
|
110
|
|
|
111
|
| # | Criteria |
|
|
112
|
|---|----------|
|
|
113
|
| 5.1 | แสดง Gauge 4 ตัว: Overall OEE, Availability, Performance, Quality ตามรูปแบบเดิมของ Overview |
|
|
114
|
| 5.2 | แสดงค่า % พร้อม Target line + color coding (แดง/เหลือง/เขียว) ตามเดิม |
|
|
115
|
| 5.3 | แต่ละ Gauge แสดงค่าแยกตาม Zone ด้านล่าง (เช่น Die Casting Zone xx%, Finishing Zone xx%) |
|
|
116
|
| 5.4 | คำนวณค่ารวมจากเครื่องจักรทุกเครื่องทุก Zone ที่แสดงอยู่ |
|
|
117
|
| 5.5 | เปลี่ยน Filter → อัปเดตค่าภายใน 3 วินาที |
|
|
118
|
| 5.6 | ไม่มีเครื่องจักรแสดง → Gauge = 0.0% ทั้ง 4 ตัว |
|
|
119
|
|
|
120
|
---
|
|
121
|
|
|
122
|
### Req 6: Card Machine แสดงครบทุกเครื่องทุก Zone
|
|
123
|
|
|
124
|
**User Story:** As a ผู้จัดการโรงงาน, I want to เห็น Card Machine ของทุกเครื่องจักรทุก Zone ในหน้าจอเดียว, so that สามารถมองเห็นสถานะเครื่องจักรทั้งหมดได้โดยไม่ต้อง scroll
|
|
125
|
|
|
126
|
**Acceptance Criteria:**
|
|
127
|
|
|
128
|
| # | Criteria |
|
|
129
|
|---|----------|
|
|
130
|
| 6.1 | แสดง Card_Machine ทุกเครื่องทุก Zone ในหน้าจอเดียว |
|
|
131
|
| 6.2 | ไม่มี vertical scroll bar |
|
|
132
|
| 6.3 | แต่ละ Card แสดง: ชื่อเครื่อง + สถานะ badge (Running/Standby/Not Running/Offline) + OEE/A/P/Q % ทศนิยม 1 ตำแหน่ง |
|
|
133
|
| 6.4 | เครื่องไม่มีข้อมูล → แสดง "N/A" ทุกค่า |
|
|
134
|
|
|
135
|
---
|
|
136
|
|
|
137
|
### Req 7: การแยก Zone
|
|
138
|
|
|
139
|
**User Story:** As a ผู้จัดการโรงงาน, I want to เห็น Card Machine จัดกลุ่มตาม Zone, so that สามารถเปรียบเทียบประสิทธิภาพระหว่าง Zone ได้ง่าย
|
|
140
|
|
|
141
|
**Acceptance Criteria:**
|
|
142
|
|
|
143
|
| # | Criteria |
|
|
144
|
|---|----------|
|
|
145
|
| 7.1 | จัดกลุ่ม Card ตาม Zone + แสดงชื่อ Zone เป็น header เรียงตามลำดับในระบบ |
|
|
146
|
| 7.2 | แสดง Zone ทั้งหมดใน OEE Overall ที่มี support_mc = false |
|
|
147
|
| 7.3 | Card ภายใน Zone เรียงตาม Machine Name |
|
|
148
|
| 7.4 | Zone ไม่มี Card แสดง (เช่น Only_on_Job) → ซ่อน Zone header |
|
|
149
|
|
|
150
|
---
|
|
151
|
|
|
152
|
### Req 8: Auto Refresh
|
|
153
|
|
|
154
|
**User Story:** As a ผู้จัดการโรงงาน, I want to ให้หน้าจอรีเฟรชข้อมูลอัตโนมัติ, so that ข้อมูลบนจอ 55 นิ้วเป็นปัจจุบันเสมอ
|
|
155
|
|
|
156
|
**Acceptance Criteria:**
|
|
157
|
|
|
158
|
| # | Criteria |
|
|
159
|
|---|----------|
|
|
160
|
| 8.1 | แสดง dropdown เลือกรอบ: 5 seconds, 15 seconds, 30 seconds, 1 minute, 3 minutes, 5 minutes, Disable auto-refresh |
|
|
161
|
| 8.2 | Auto_Refresh เปิด → รีเฟรชตามรอบที่เลือก |
|
|
162
|
| 8.3 | เลือก "Disable auto-refresh" → หยุดรีเฟรช + คงข้อมูลล่าสุดไว้ |
|
|
163
|
| 8.4 | Default = "Refresh every 5 seconds" |
|
|
164
|
| 8.5 | รีเฟรชล้มเหลว (network error / API timeout 10 วินาที) → คงข้อมูลเดิม + แจ้งเตือน + retry รอบถัดไป |
|
|
165
|
| 8.6 | แสดง Last Updated timestamp บนหน้าจอ |
|
|
166
|
|
|
167
|
---
|
|
168
|
|
|
169
|
### Req 9: Only on Job Filter
|
|
170
|
|
|
171
|
**User Story:** As a ผู้จัดการโรงงาน, I want to กรองแสดงเฉพาะเครื่องจักรที่กำลังทำงาน, so that โฟกัสดูเฉพาะเครื่องที่มี Job อยู่ได้
|
|
172
|
|
|
173
|
**Acceptance Criteria:**
|
|
174
|
|
|
175
|
| # | Criteria |
|
|
176
|
|---|----------|
|
|
177
|
| 9.1 | เปิด Only_on_Job → แสดงเฉพาะ Card ที่มี Job + ซ่อน Card ที่ไม่มี Job |
|
|
178
|
| 9.2 | ปิด Only_on_Job → แสดง Card ทุกเครื่องทุก Zone |
|
|
179
|
| 9.3 | Only_on_Job เปิด → Gauge คำนวณเฉพาะเครื่องที่มี Job |
|
|
180
|
| 9.4 | Only_on_Job เปิด + Zone ไม่มีเครื่องที่มี Job → ซ่อน Zone header |
|
|
181
|
| 9.5 | Default = เปิด (แสดงเฉพาะเครื่องที่มี Job ตาม default เดิมของ Overview) |
|
|
182
|
|
|
183
|
---
|
|
184
|
|
|
185
|
### Req 10: การคำนวณค่า OEE/A/P/Q รวม
|
|
186
|
|
|
187
|
**User Story:** As a ผู้จัดการโรงงาน, I want to เห็นค่า OEE/A/P/Q รวมที่คำนวณถูกต้อง, so that ใช้ข้อมูลในการตัดสินใจได้อย่างแม่นยำ
|
|
188
|
|
|
189
|
**สูตรคำนวณ:** ใช้สูตรเดิมของหน้า Overview ที่มีอยู่แล้ว (ไม่เปลี่ยนแปลง logic การคำนวณ)
|
|
190
|
|
|
191
|
**Acceptance Criteria:**
|
|
192
|
|
|
193
|
| # | Criteria |
|
|
194
|
|---|----------|
|
|
195
|
| 10.1 | ใช้สูตรคำนวณ OEE/A/P/Q รวมตามเดิมของหน้า Overview ที่มีอยู่แล้ว |
|
|
196
|
| 10.2 | Card แต่ละใบ = OEE/A/P/Q เฉพาะเครื่องนั้น ตามช่วงเวลาที่เลือก (ทศนิยม 2 ตำแหน่ง) |
|
|
197
|
| 10.3 | ไม่มีเครื่องที่มีข้อมูล → Gauge = 0.00% + ข้อความ "ไม่มีข้อมูล" |
|
|
198
|
| 10.4 | เครื่องไม่มีข้อมูลการผลิต → ไม่นำมารวมคำนวณค่ารวม |
|
|
199
|
|
|
200
|
---
|
|
201
|
|
|
202
|
### Req 11: Layout หน้าจอเดียว
|
|
203
|
|
|
204
|
**User Story:** As a ผู้จัดการโรงงาน, I want to เห็นข้อมูลทั้งหมด (Gauge + Card Machine ทุก Zone) ในหน้าจอเดียว, so that ไม่ต้อง scroll หรือเปลี่ยนหน้าเพื่อดูข้อมูล
|
|
205
|
|
|
206
|
**Acceptance Criteria:**
|
|
207
|
|
|
208
|
| # | Criteria |
|
|
209
|
|---|----------|
|
|
210
|
| 11.1 | Gauge ด้านบน (≤25% viewport height) + Card แยก Zone ด้านล่าง (พื้นที่ที่เหลือ) |
|
|
211
|
| 11.2 | Layout พอดี viewport จอ TV 55" (1920x1080) ไม่มี vertical scroll |
|
|
212
|
| 11.3 | ขนาดตัวอักษรคงที่ (ไม่ปรับ responsive) ออกแบบให้อ่านได้ชัดบนจอ 55" |
|
|
213
|
| 11.4 | แสดง Card ต่อแถวให้ได้มากที่สุดตามความเหมาะสมของ layout (เพิ่มจากเดิม 4 ใบ) โดยยังคงอ่านได้ชัดเจนบนจอ 55" |
|
|
214
|
| 11.5 | แยก Zone ด้วยสี background/border ที่แตกต่างชัดเจน มองแล้วแยกออกได้ทันทีว่า Zone ไหนมี Machine อะไร |
|
|
215
|
| 11.6 | Zone header แสดงจำนวนเครื่อง + สถานะสรุป (Running / Not Running / Standby / Offline) ตามเดิม |
|
|
216
|
|
|
217
|
---
|
|
218
|
|
|
219
|
## สรุปภาพรวม Layout
|
|
220
|
|
|
221
|
```
|
|
222
|
┌─────────────────────────────────────────────────────────────┐
|
|
223
|
│ [Sidebar] │ Filter Bar │
|
|
224
|
│ OEE │ [Up to date ▼] [Custom] [Only on Job] [Auto] │
|
|
225
|
│ Overall ├─────────────────────────────────────────────────│
|
|
226
|
│ (icon) │ [Gauge OEE] [Gauge A] [Gauge P] [Gauge Q] │
|
|
227
|
│ ├─────────────────────────────────────────────────│
|
|
228
|
│ │ DIE CASTING ZONE │
|
|
229
|
│ │ [Card1][Card2][Card3][Card4]... │
|
|
230
|
│ ├─────────────────────────────────────────────────│
|
|
231
|
│ │ FINISHING ZONE │
|
|
232
|
│ │ [Card1][Card2][Card3]... │
|
|
233
|
│ ├─────────────────────────────────────────────────│
|
|
234
|
│ │ INJECTION ZONE │
|
|
235
|
│ │ [Card1][Card2][Card3][Card4]... │
|
|
236
|
└─────────────────────────────────────────────────────────────┘
|
|
237
|
```
|
|
238
|
|
|
239
|
---
|
|
240
|
|
|
241
|
## หมายเหตุสำหรับ Dev
|
|
242
|
|
|
243
|
- URL แยกแบบ Call Systems → ไม่ต้อง auth, read-only
|
|
244
|
- ใช้ API + สูตรคำนวณ OEE/A/P/Q เดิมของหน้า Overview ทั้งหมด (ไม่เปลี่ยน logic)
|
|
245
|
- Target resolution หลัก: 1920x1080 (4K ใช้ browser scaling)
|
|
246
|
- Auto Refresh เป็น dropdown เลือกรอบได้: 5s / 15s / 30s / 1min / 3min / 5min / Disable (default = 5 seconds)
|
|
247
|
- Card แสดง 7-8 ใบต่อแถว (เพิ่มจากเดิม 4 ใบ) ขนาดตัวอักษรคงที่
|
|
248
|
- แต่ละ Card มี status badge (Running/Standby/Not Running/Offline) ตามเดิม
|
|
249
|
- แยก Zone ด้วยสี background/border ให้มองแยกออกชัดเจน
|
|
250
|
- Zone กรองเฉพาะ support_mc = false
|
|
251
|
- Sidebar drill-down ได้เหมือนเดิม แต่ตัด Support MC ออก
|
|
252
|
- เวลาเริ่มต้นทุก filter อ้างอิง Shift แรกจาก setup
|
|
253
|
- Weekly อ้างอิงวันเริ่มสัปดาห์จาก codeTable (default: จันทร์)
|