3. การทำงานร่วมกัน#
หน้านี้คือ ภาพว่าทุกคนในบริษัททำงานร่วมกันอย่างไรเมื่อมีระบบใหม่ ทุกเส้นในแผนภาพคือข้อมูลที่ระบบต้องเก็บ และทุกกล่องคือหน้าจอหรือ tool ที่ต้องสร้าง
3.1 ภาพรวม — จากงานลูกค้าถึงตัวเลขต้นทุน#
flowchart LR
subgraph IN["① งานเข้า"]
C1["LSM99 / One Group<br/>เหมารายเดือน"]
C2["คุณตั้ม<br/>งานเป็นชิ้น"]
C3["เหตุขัดข้อง<br/>จากกะ 24/7"]
end
subgraph PLAN["② วางแผน — BA"]
Q["คิวงานโครงการ<br/>จัดลำดับ · ประเมินเวลา"]
A["มอบหมายงาน"]
end
subgraph DO["③ ลงมือทำ"]
D1["โปรแกรมเมอร์<br/>ในกะ / OT"]
D2["UX-UI Designer"]
end
subgraph LOG["④ บันทึกเวลา"]
T["Time Entry<br/>ผ่าน Claude หรือเว็บ"]
end
subgraph OUT["⑤ ผลลัพธ์"]
R1["ต้นทุนรายโครงการ"]
R2["กำไรรายลูกค้า"]
R3["คลังความรู้"]
end
C1 --> Q
C2 --> Q
C3 --> Q
Q --> A --> D1
A --> D2
D1 --> T
D2 --> T
T --> R1 --> R2
D1 --> R3
D2 --> R3
classDef inbox fill:#fef3c7,stroke:#d97706,color:#78350f
classDef plan fill:#e0e7ff,stroke:#4f46e5,color:#1e1b4b
classDef work fill:#dcfce7,stroke:#16a34a,color:#14532d
classDef log fill:#fce7f3,stroke:#db2777,color:#831843
classDef out fill:#dbeafe,stroke:#2563eb,color:#1e3a8a
class C1,C2,C3 inbox
class Q,A plan
class D1,D2 work
class T log
class R1,R2,R3 out
อ่านแผนภาพนี้ยังไง
ขั้นที่ ④ คือ จุดคอขวดของทั้งระบบ — ถ้าไม่มีข้อมูลตรงนี้ ขั้นที่ ⑤ เกิดไม่ได้เลย ทุกอย่างที่ออกแบบใน Phase 1 คือการทำให้ขั้นที่ ④ ง่ายจนไม่มีข้ออ้างที่จะไม่ทำ
3.2 งานใหม่เข้าโครงการ#
sequenceDiagram
autonumber
actor CU as ลูกค้า
participant BA as ทีม BA
participant SYS as ระบบงาน
participant LEAD as หัวหน้างาน
actor DEV as ผู้รับผิดชอบ
CU->>BA: ส่งความต้องการ (Chat / ประชุม)
BA->>SYS: สร้างงานในโครงการ + ประเมินชั่วโมง
BA->>SYS: จัดลำดับความสำคัญในคิว
alt ต้องใช้คนนอกเวลากะ
BA->>LEAD: ขอกำลังคนเพิ่ม
LEAD->>SYS: เปิด OT ให้งานนี้
end
BA->>SYS: มอบหมายงานให้ผู้รับผิดชอบ
SYS-->>DEV: แจ้งเตือนใน Google Chat
DEV->>SYS: รับงาน → เปลี่ยนสถานะเป็น กำลังทำ
DEV->>SYS: ลงเวลาที่ใช้ (ทุกวัน)
DEV->>SYS: ปิดงาน + บันทึกความรู้ที่ได้
SYS-->>BA: แจ้งงานเสร็จ
BA-->>CU: ส่งมอบ / รายงาน
ข้อมูลที่เกิดขึ้นจาก flow นี้: project → work_item → time_entry → kb_doc
3.3 ลงเวลาประจำวัน — flow ที่สำคัญที่สุด#
flowchart TD
START(["จบวัน / จบกะ"]) --> CH{"ลงเวลาผ่านอะไร"}
CH -->|"คุยกับ Claude"| CL["พิมพ์: วันนี้ทำ LSM99 ระบบสมาชิก 5 ชม.<br/>แก้บั๊กหน้า login 2 ชม."]
CH -->|"หน้าเว็บ"| WEB["work.keycake.com<br/>เลือกโครงการ + ใส่ชั่วโมง"]
CL --> PARSE["Claude แปลงเป็นรายการ<br/>แล้วสรุปกลับให้ดู"]
PARSE --> CONF{"ยืนยันถูกต้องไหม"}
CONF -->|ไม่ใช่| CL
CONF -->|ใช่| VALID
WEB --> VALID["ระบบตรวจสอบ<br/>· โครงการมีจริงไหม<br/>· ชั่วโมงเกินกะ + OT ที่อนุมัติไหม<br/>· ย้อนหลังเกิน 7 วันไหม<br/>· งวดถูกปิดไปแล้วไหม"]
VALID -->|ไม่ผ่าน| ERR["แจ้งเหตุผล + ให้แก้"]
ERR --> CH
VALID -->|ผ่าน| SAVE[("บันทึก time_entry<br/>พร้อม source และข้อความดิบ")]
SAVE --> DONE(["เสร็จ"])
classDef good fill:#dcfce7,stroke:#16a34a,color:#14532d
classDef bad fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
class SAVE,DONE good
class ERR bad
ตัวอย่างการลงเวลาผ่าน Claude
พนักงาน: ลงเวลาวันนี้ ทำระบบสมาชิก LSM99 ไป 5 ชม. แล้วแก้บั๊กหน้า login อีก 2 ชม.
Claude: ขอสรุปก่อนบันทึกนะครับ — วันที่ 12 ส.ค. 2569 ① LSM99 · ระบบสมาชิก · 5.0 ชม. · ประเภท: งานในกะ ② LSM99 · ระบบสมาชิก · แก้บั๊กหน้า login · 2.0 ชม. · ประเภท: งานในกะ รวม 7.0 ชม. — ยืนยันบันทึกไหมครับ?
พนักงาน: ยืนยัน → บันทึกเสร็จใน 20 วินาที
กติกาการลงเวลา#
| กติกา | ค่า | เหตุผล |
|---|---|---|
| หน่วยที่เล็กที่สุด | 0.5 ชั่วโมง | เก็บละเอียดกว่านี้ทีมจะเลิกทำ และไม่ช่วยให้ตัดสินใจดีขึ้น |
| ลงย้อนหลังได้ | 7 วัน | หลังจากนั้นต้องให้หัวหน้าอนุมัติ |
| หลังปิดงวด | แก้ไม่ได้ | ยกเว้น admin แก้พร้อมเหตุผล และถูกบันทึกใน audit log |
| ต้องระบุโครงการเสมอ | ✅ | ถ้าเป็นงานภายในให้ลงโครงการพิเศษ INTERNAL |
| ชั่วโมงรวมต่อวัน | เตือนเมื่อเกิน 12 ชม. · ปฏิเสธเมื่อเกิน 16 ชม. | กันการกรอกผิด |
3.4 กะ 24/7 และเหตุขัดข้อง#
flowchart TD
subgraph MONTH["ก่อนขึ้นเดือนใหม่"]
L1["หัวหน้างานจัดตารางกะ<br/>ในระบบ"] --> L2["ระบบตรวจ:<br/>ทุกช่วงเวลามีคนคุมไหม<br/>ชนวันลาที่อนุมัติแล้วไหม"]
L2 --> L3["ประกาศตารางกะ<br/>แจ้งเข้า Google Chat"]
end
subgraph DAILY["ระหว่างกะ"]
S1["เข้ากะ"] --> S2{"มีเหตุขัดข้องไหม"}
S2 -->|ไม่มี| S3["ทำงานตามคิวที่ BA จ่าย"]
S2 -->|มี| S4["บันทึกเหตุขัดข้อง<br/>ผูกกับโครงการที่เกี่ยวข้อง"]
S4 --> S5{"แก้ได้ในกะไหม"}
S5 -->|ได้| S6["แก้ + ปิดเรื่อง"]
S5 -->|ไม่ได้| S7["ส่งต่อ + ขอ OT<br/>หรือเรียกคนเพิ่ม"]
S3 --> S8["จบกะ: ส่งต่องาน (handover)<br/>+ ลงเวลา"]
S6 --> S8
S7 --> S8
end
L3 --> S1
classDef plan fill:#e0e7ff,stroke:#4f46e5,color:#1e1b4b
classDef alert fill:#fee2e2,stroke:#dc2626,color:#7f1d1d
class L1,L2,L3 plan
class S4,S7 alert
ทำไมต้องบันทึกเหตุขัดข้องผูกกับโครงการ
เพราะงาน support กินเวลาแบบมองไม่เห็น เมื่อผูกทุกเหตุขัดข้องกับโครงการ จะตอบได้ว่า "ระบบไหนของ LSM99 กินเวลา support มากที่สุด" ซึ่งเป็นข้อมูลตรง ๆ ที่เอาไปเจรจาขอบเขตงานหรือปรับราคาปีถัดไปได้
3.5 การขอ OT#
sequenceDiagram
autonumber
actor DEV as พนักงาน
participant SYS as ระบบ
actor LEAD as หัวหน้างาน
Note over DEV,LEAD: OT ต้องได้รับอนุมัติ "ก่อน" ทำงานเสมอ
DEV->>SYS: ขอ OT — วันที่ / ชั่วโมง / โครงการ / เหตุผล
SYS->>SYS: ตรวจ — ชนกะเดิมไหม / เกินเพดานเดือนนี้ไหม
SYS-->>LEAD: แจ้งเตือนขออนุมัติ
alt อนุมัติ
LEAD->>SYS: อนุมัติ
SYS-->>DEV: แจ้งผล — ทำงานได้
DEV->>SYS: หลังทำเสร็จ ลงเวลาแบบ kind = ot
SYS->>SYS: คิดต้นทุนด้วยตัวคูณ OT เข้าโครงการนั้น
else ไม่อนุมัติ
LEAD->>SYS: ไม่อนุมัติ + เหตุผล
SYS-->>DEV: แจ้งผล
end
กติกา
- OT ต้องอนุมัติก่อนทำ — ลงเวลา
kind = otโดยไม่มีใบอนุมัติ ระบบจะปฏิเสธ - OT ย้อนหลัง (เหตุฉุกเฉินกลางดึก) ทำได้ แต่ต้องขออนุมัติภายใน 24 ชั่วโมง และถูกทำเครื่องหมายว่า ย้อนหลัง
- ระบบเตือนหัวหน้างานเมื่อ OT ของคนใดคนหนึ่งเกินเพดานที่ตั้งไว้ต่อเดือน
- OT ทุกชั่วโมงต้อง ระบุโครงการ เพราะเข้าต้นทุนโครงการนั้นโดยตรง
3.6 การลา#
flowchart LR
A["พนักงานขอลา<br/>ผ่าน Claude หรือเว็บ"] --> B["ระบบตรวจ<br/>· สิทธิ์ลาคงเหลือ<br/>· ชนกะที่รับผิดชอบไหม"]
B -->|ชนกะ| C["เตือน: ต้องหาคนสลับกะก่อน"]
C --> A
B -->|ผ่าน| D["ส่งหัวหน้างานอนุมัติ"]
D -->|อนุมัติ| E["อัปเดตปฏิทินทีม<br/>+ ตัดชั่วโมงว่างออกจากการวางแผน"]
D -->|ไม่อนุมัติ| F["แจ้งกลับพร้อมเหตุผล"]
classDef ok fill:#dcfce7,stroke:#16a34a,color:#14532d
class E ok
การลาไม่เข้าต้นทุนโครงการ แต่ ลดชั่วโมงที่ใช้ได้ (available hours) ของเดือนนั้น ซึ่งมีผลต่อการคำนวณ utilization และการวางแผนกำลังคนของ BA
3.7 ปิดเดือนและออกรายงานต้นทุน#
flowchart TD
D1["วันที่ 1–3<br/>ทุกคนเคลียร์ timesheet เดือนก่อน"] --> D2{"ระบบตรวจความครบถ้วน"}
D2 -->|"มีคนลงไม่ครบ"| D3["ส่งรายชื่อให้หัวหน้างานตาม"]
D3 --> D1
D2 -->|ครบ| D4["ผู้บริหาร/admin กดปิดงวด<br/>timesheet ล็อก แก้ไม่ได้"]
D4 --> D5["ระบบคำนวณ<br/>ชั่วโมง × cost_rate ของเดือนนั้น<br/>+ OT × ตัวคูณ + overhead"]
D5 --> D6["ออกรายงาน"]
D6 --> R1["ต้นทุนรายโครงการ"]
D6 --> R2["กำไรรายลูกค้า<br/>LSM99: retainer − ต้นทุนรวม"]
D6 --> R3["สัดส่วนชั่วโมง<br/>แต่ละโครงการกิน % ของ retainer"]
D6 --> R4["Utilization รายคน<br/>(ไม่เปิดเผยรายบุคคลต่อสาธารณะ)"]
D6 --> M["ประชุมทบทวนวันที่ 5"]
classDef lock fill:#fef3c7,stroke:#d97706,color:#78350f
classDef rep fill:#dbeafe,stroke:#2563eb,color:#1e3a8a
class D4 lock
class R1,R2,R3,R4 rep
3.8 การสะสมความรู้ (Phase 3)#
flowchart LR
E1["ปิดงานสำคัญ"] --> W["บันทึกความรู้ผ่าน Claude<br/>อะไรพัง แก้ยังไง ทำไม"]
E2["แก้เหตุขัดข้องในกะ"] --> W
E3["ตัดสินใจเชิงเทคนิค"] --> W
W --> KB[("kb.keycake.com<br/>ค้นหาเชิงความหมาย")]
KB --> U1["คนเข้ากะค้นหาตอนเจอปัญหาซ้ำ"]
KB --> U2["คนใหม่อ่านตอน onboard"]
KB --> U3["Claude ใช้ตอบคำถามทีม"]
classDef kb fill:#f3e8ff,stroke:#9333ea,color:#4c1d95
class KB kb
กติกา: ระบบจะ เสนอ ให้บันทึกความรู้อัตโนมัติเมื่อปิดงานที่ใช้เวลาเกิน 8 ชั่วโมง หรือเมื่อปิดเหตุขัดข้อง — เสนอ ไม่ใช่บังคับ เพราะการบังคับจะได้บันทึกขยะ
3.9 สรุป: อะไรเปลี่ยนจากวันนี้#
| เรื่อง | วันนี้ | หลังมีระบบ |
|---|---|---|
| งานอยู่ที่ไหน | ClickUp + Excel | work.keycake.com ที่เดียว |
| คุยงาน | Google Chat | Google Chat เหมือนเดิม — ระบบส่งแจ้งเตือนเข้าไป ไม่แทนที่ |
| ลงเวลา | ไม่มี | ทุกคน ทุกวัน < 30 วินาที |
| ตารางกะ | ตกลงกันในแชท | ระบบจัด + ตรวจว่าครอบคลุม 24/7 จริง |
| ขอ OT | บอกหัวหน้าในแชท | ใบขอในระบบ อนุมัติก่อนทำ ผูกโครงการ |
| ต้นทุนโครงการ | ไม่รู้ | รู้ภายใน 5 วันทำการหลังปิดเดือน |
| ความรู้โครงการ | อยู่ในหัวคน | kb.keycake.com ค้นหาได้ |