Todolist Tracking

ระบบติดตามงาน & โครงการ (เชื่อมต่อ Google Sheets)

🔒 เข้าสู่ระบบด้วย Google Account (Whitelist Protected)
{{ loginError }}
ลงชื่อเข้าใช้ด้วยบัญชี Google เพื่อยืนยันตัวตน:
ระบบตรวจสอบสิทธิ์ Email Whitelist:

เฉพาะบัญชีที่ได้รับอนุญาตในระบบเท่านั้นจึงจะเข้าถึงได้ บุคคลอื่นจะไม่สามารถเข้าใช้งานได้

ตั้งค่า Google OAuth Client ID เพื่อเริ่มใช้งาน

เพื่อเปิดใช้งานปุ่ม "Sign in with Google" ของแท้ กรุณานำ Google Client ID จาก Google Cloud Console มากรอกด้านล่าง:

💡 วิธีสร้าง Google Client ID ฟรีใน 2 นาที (คลิกอ่าน)
  1. ไปที่ console.cloud.google.com แล้วสร้างโครงการใหม่
  2. ไปที่เมนู APIs & Services > Credentials
  3. คลิก Create Credentials > OAuth client ID
  4. เลือก Application type เป็น Web application
  5. ในช่อง Authorized JavaScript origins ให้ใส่: http://localhost:3000
  6. กด Create แล้วคัดลอก Client ID มาวางในช่องด้านบน
ยืนยันตัวตนสำหรับเจ้าของระบบ:
ข้อมูลปลอดภัยด้วยระบบยืนยันตัวตน Google และ Whitelist
ภาพรวมงาน & สถิติ สรุป KPI และรายการงาน
ไทม์ไลน์โครงการ Gantt Chart แผนดำเนินงาน
คัมบังบอร์ด 5 สถานะ Drag & Drop ติดตามงาน
Todolist Tracking
{{ currentUser.name }}
{{ currentUser.email }}
อัปเดตล่าสุด: {{ syncConfig.lastSynced || 'บันทึกในเครื่อง (Local Storage)' }} กำลังส่งข้อมูล...

โครงการทั้งหมด

{{ totalProjects }}

{{ departmentStats.length }} ส่วนงาน

งานทั้งหมด

{{ totalTasks }}

ความสำเร็จ {{ completionRate }}%

เสร็จสิ้นแล้ว

{{ completedTasks }}

เฉลี่ย {{ averageDuration }} วัน/งาน

กำลังดำเนินการ

{{ inProgressTasks }}

ได้รับอนุมัติแล้ว

ต้องติดตาม / รอเริ่ม

{{ followUpTasks + notStartedTasks }}

ต้องติดตาม {{ followUpTasks }} • ยังไม่เริ่ม {{ notStartedTasks }}

สัดส่วนสถานะงานทั้งหมด

แสดงความคืบหน้ารวมของทุกโครงการในระบบ

เสร็จสมบูรณ์ {{ completionRate }}%
ยังไม่ได้เริ่มทำ ({{ notStartedTasks }})
ต้องติดตาม ({{ followUpTasks }})
กำลังดำเนินการ ({{ inProgressTasks }})
เสร็จสิ้นแล้ว ({{ completedTasks }})
ยกเลิก ({{ cancelledTasks }})

รายการงานทั้งหมดในระบบ

แสดงรายละเอียดงาน สถานะปัจจุบัน และระยะเวลาดำเนินการ

ผลการกรอง: พบ {{ filteredTasks.length }} รายการ
{{ task.id }}

{{ task.name }}

📁 {{ task.projectName }}

{{ task.status }}

{{ task.description }}

ประเภท: {{ task.type }}
หมวดหมู่: {{ task.category }}
เสนอ: {{ formatDateThai(task.proposedDate) }}
อนุมัติ: {{ formatDateThai(task.approvalDate) }}
สิ้นสุดจริง: {{ formatDateThai(task.actualEndDate) }}
ระยะเวลา: {{ task.duration }} วัน -
หมายเหตุ: {{ task.notes }}
ไม่พบรายการงานที่ค้นหา

ไทม์ไลน์ช่วงเวลาดำเนินงานของโครงการ (Project Timeline)

แสดงแผนดำเนินงาน วันที่เริ่มต้น-สิ้นสุด และความคืบหน้าของทุกโครงการในระบบ

{{ m.label }}
วันนี้
{{ proj.id }}

{{ proj.name }}

งาน: {{ proj.completedCount }}/{{ proj.taskCount }} {{ proj.progress }}% • {{ proj.projectStatus }}
📅 เริ่มต้น: {{ formatDateThai(proj.startDate) }} 🏁 สิ้นสุด: {{ formatDateThai(proj.endDate) }}
{{ proj.name }} ({{ proj.progress }}%)
ไม่พบโครงการตามส่วนงานที่เลือก
กำลังดำเนินการ เสร็จสมบูรณ์ (100%) เกินกำหนดเวลา เส้นสีแดง = วันที่ปัจจุบัน

💡 คลิกที่แถบโครงการเพื่อดูรายละเอียดและงานย่อยทั้งหมด

คัมบังบอร์ดติดตามงาน (Todo List Kanban)

ลากและวาง (Drag & Drop) เพื่อเปลี่ยนสถานะงานได้อย่างสะดวกรวดเร็ว

{{ status.label }}

{{ (kanbanTasksByStatus[status.id] || []).length }}
{{ task.id }} {{ task.projectName }}

{{ task.name }}

{{ task.description }}

{{ task.type }} {{ task.category }}
เสนองาน: {{ formatDateThai(task.proposedDate) }} ⏱️ {{ task.duration }} วัน
ไม่มีงานในสถานะนี้

{{ editingProject?.id && projects.some(p => p.id === editingProject.id) ? 'แก้ไขโครงการ' : 'สร้างโครงการใหม่' }}

เลือกจากที่เคยพิมพ์ไว้ ({{ availableDepartments.length }}) พิมพ์ใหม่ได้
ไม่พบข้อมูลส่วนงานที่ตรงกับคำค้น

{{ editingTask?.id && tasks.some(t => t.id === editingTask.id) ? 'แก้ไขข้อมูลงาน' : 'เพิ่มงานใหม่' }}

งานจะเชื่อมโยงเป็น subset ของโครงการที่เลือก

จุดเริ่มต้นนับระยะเวลา
จุดสิ้นสุดนับระยะเวลา
ระยะเวลาดำเนินการ (คำนวณอัตโนมัติ) {{ editingTask.approvalDate && editingTask.actualEndDate ? 'คำนวณจากวันที่ได้รับอนุมัติถึงวันสิ้นสุดจริง' : (editingTask.approvalDate ? 'รอระบุวันสิ้นสุดจริง (นับจนถึงปัจจุบัน)' : 'รอระบุวันที่ได้รับอนุมัติ') }}
{{ editingTask.duration !== null ? editingTask.duration + ' วัน' : (editingTask.approvalDate ? calculateElapsedDays(editingTask.approvalDate) + ' วัน (ปัจจุบัน)' : '-') }}
{{ selectedProjectDetail.id }} {{ selectedProjectDetail.department }}

{{ selectedProjectDetail.name }}

{{ selectedProjectDetail.description }}

วันที่เริ่มต้น {{ formatDateThai(selectedProjectDetail.startDate) }}
วันที่สิ้นสุด {{ formatDateThai(selectedProjectDetail.endDate) }}
ความคืบหน้ารวม {{ selectedProjectDetail.progress }}% ({{ selectedProjectDetail.completedCount }}/{{ selectedProjectDetail.taskCount }} งาน)
หมายเหตุ: {{ selectedProjectDetail.notes }}

รายการงานย่อยในโครงการนี้

{{ subTask.name }} ({{ subTask.type }})
{{ subTask.status }}
ยังไม่มีงานย่อยในโครงการนี้

การตั้งค่าเชื่อมต่อ Google Sheets

จัดการ URL แบ็กเอนด์ และบัญชี Google

ดูไฟล์สคริปต์แบ็กเอนด์ได้ที่โฟลเดอร์ google-apps-script/Code.gs

หากต้องการใช้ปุ่ม Sign-In with Google อย่างเป็นทางการจาก Google Cloud Console

{{ authorizedEmails.length }} บัญชี
{{ email }} เจ้าของระบบ (Owner)
💡 วิธีเชื่อมต่อกับ Google Sheets ใน 3 นาที:
  1. เปิด Google Sheets ใหม่ จากนั้นไปที่เมนู ส่วนขยาย > Apps Script
  2. คัดลอกโค้ดจากไฟล์ google-apps-script/Code.gs ไปวาง
  3. เลือกฟังก์ชัน initialSetup แล้วกด เรียกใช้ (Run) เพื่อสร้างแท็บและหัวตาราง
  4. กดปุ่ม ทำให้ใช้งานได้ (Deploy) > การทำให้ใช้งานได้รายการใหม่ > เว็บแอป (Web app)
  5. ตั้งค่าให้ "ทุกคน" (Anyone) เข้าถึงได้ แล้วคัดลอก URL มาวางในช่องด้านบน
✓ ✕ ! i

{{ toast.title }}

{{ toast.message }}