Logo
{{ Math.round(splashPercent) }}%

Coogo Flow

Làm việc thông minh hơn

{{ splashStatusText }}

Đang xử lý...

Vui lòng chờ trong giây lát

Logo

{{ (settings && settings.companyName) || 'Coogo Flow' }}

Làm việc thông minh hơn

Đăng nhập tài khoản

{{ authError }}

{{ errors.username }}

{{ errors.password }}

Logo

{{ pageTitle }}

{{ currentUser.name.charAt(0) }}
Banner

{{ greetingTime }}, {{ currentUser.name }} 👋

{{ stats.inProgressTasks || 0 }} đang thực hiện · {{ stats.doneTasks || 0 }} đã hoàn thành

{{ new Date().toLocaleDateString('vi-VN', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' }) }}

Tổng nhiệm vụ

{{ stats.totalTasks || 0 }}

{{ stats.totalTasks ? Math.round((stats.doneTasks || 0) / stats.totalTasks * 100) : 0 }}% hoàn thành Xem ➔

Đang thực hiện

{{ stats.inProgressTasks || 0 }}

Cần theo dõi Xem ➔

Hoàn thành

{{ stats.doneTasks || 0 }}

Đã hoàn tất Xem ➔

Quá hạn

{{ stats.overdueTasks || 0 }}

Cần đôn đốc ngay Xem ➔

Nhiệm vụ 7 ngày qua
Thống kê nhiệm vụ theo trạng thái mỗi ngày
Phân bố trạng thái
Tỉ lệ nhiệm vụ theo trạng thái hiện tại
Xu hướng 30 ngày
So sánh nhiệm vụ tạo mới vs hoàn thành
Nhiệm vụ theo phòng ban
Tổng nhiệm vụ và hoàn thành của mỗi phòng ban

Nhiệm vụ cần chú ý

{{ attentionTasks.length }} việc

Tuyệt vời! Không có việc nào cần chú ý

{{ task.title }}

{{ task.priority === 'high' ? 'Cao' : task.priority === 'medium' ? 'TB' : 'Thấp' }} {{ (task.assignees && task.assignees.length > 0) ? task.assignees.map(a => a.name).join(', ') : (task.assignee ? task.assignee.name : 'Chưa giao') }}
{{ formatRelativeDate(task.due_date) }}

Bộ lọc nâng cao

Không có nhiệm vụ nào

{{ task.priority === 'high' ? 'Cao' : task.priority === 'medium' ? 'TB' : 'Thấp' }}

{{ task.title }}

{{ task.scope }} {{ task.zone }} {{ task.area }}
Avatar {{ (asg && asg.name) ? asg.name.charAt(0).toUpperCase() : '?' }}
{{ (task.assignees && task.assignees.length > 0) ? task.assignees.map(a => a.name).join(', ') : (task.assignee ? task.assignee.name : 'Chưa giao') }}
Tạo bởi: {{ task.creator.name }}
{{ formatDate(task.created_at) }} - {{ formatDate(task.due_date) }}
Hiển thị {{ (pagination.tasks.page - 1) * pagination.tasks.perPage + 1 }}-{{ Math.min(pagination.tasks.page * pagination.tasks.perPage, filteredTasks.length) }} trong {{ filteredTasks.length }} nhiệm vụ
Thời gian
Bộ lọc {{ activeProgressFilterCount }}

{{ col.label }}

{{ col.tasks.length }}

Không có nhiệm vụ

{{ task.priority === 'high' ? 'Cao' : (task.priority === 'medium' ? 'TB' : 'Thấp') }} {{ getProjectName(task.project_id) }}
{{ task.scope }} {{ task.zone }} {{ task.area }}

{{ task.title }}

Avatar {{ (asg && asg.name) ? asg.name.charAt(0).toUpperCase() : '?' }}
Chưa giao
{{ (task.assignees && task.assignees.length > 0 ? task.assignees.map(a => a.name).join(', ') : (task.assignee ? task.assignee.name : '')) }}
{{ formatRelativeDate(task.due_date) }}

Sơ đồ Tiến độ Gantt Chart

Theo dõi trực quan tiến độ thực hiện công việc và dự án theo mốc thời gian

Không có nhiệm vụ nào phù hợp với bộ lọc hiện tại!
Nhiệm vụ / Người thực hiện
{{ day.dayLabel }} {{ day.dateNum }}

{{ t.title }}

{{ t.project ? t.project.name : 'Nhiệm vụ lẻ' }} {{ getGanttTaskPercent(t) }}%
{{ t.title }} {{ getGanttTaskPercent(t) }}%
Tháng {{ calMonth + 1 }}, {{ calYear }}
T2
T3
T4
T5
T6
T7
CN
{{ day.day }}
{{ item.title }}
+{{ day.tasks.length - 3 }} mục

{{ calDayPopup.isToday ? 'Hôm nay' : calDayPopup.dateLabel }}

{{ calDayPopup.tasks.length }} sự kiện / nhiệm vụ

Không có sự kiện nào

{{ item.title }}

{{ item.eventTypeLabel || (item.raw && item.raw.project ? item.raw.project.name : 'Nhiệm vụ') }}

{{ item.itemType === 'project_start' ? 'Bắt đầu' : (item.itemType === 'project_end' ? 'Hạn xong' : (item.status === 'done' || item.status === 'completed' ? 'Xong' : 'Đang làm')) }}
Báo Cáo Công Việc Khai báo Công Việc

Báo Cáo Tiến Độ MEP Khai Báo

Bảng tổng hợp chi tiết theo Hạng mục, Khu vực, Diện tích và Nhân sự phụ trách

Tổng công việc
{{ reportStats.total }}
Trong phạm vi lọc
Tổng diện tích
{{ reportStats.totalAreaFormatted }}
Khối lượng thi công
Đã hoàn thành
{{ reportStats.done }}
{{ reportStats.total ? Math.round((reportStats.done / reportStats.total)*100) : 0 }}% số lượng ({{ reportStats.doneAreaFormatted }})
Đang thực hiện
{{ reportStats.inProgress }}
Đang thi công ({{ reportStats.inProgressAreaFormatted }})
Chưa làm
{{ reportStats.todo }}
Cần triển khai
Bộ lọc báo cáo chi tiết
Khoảng ngày tùy chỉnh:
Bảng Khai Báo Công Việc MEP
Hiển thị {{ paginatedReportTasks.length }} / {{ filteredReportTasks.length }} dòng Tổng diện tích: {{ reportStats.totalAreaFormatted }}
STT Mã CDE Tên dự án Phạm vi Khu vực Diện tích Người thực hiện Công Việc Nội dung công việc Ngày thực hiện Kết quả

Không tìm thấy công việc nào phù hợp với bộ lọc.

{{ (reportPagination.page - 1) * reportPagination.perPage + idx + 1 }} {{ task.project.cde_code }} -- {{ task.project.name }} {{ getProjectName(task.project_id) }} -- {{ task.scope }} -- {{ task.zone }} -- {{ task.area }} m² -- {{ (task.assignees && task.assignees.length > 0) ? task.assignees.map(a => a.name).join(', ') : (task.assignee ? task.assignee.name : 'Chưa giao') }} {{ task.title }} {{ task.description || '--' }} {{ formatDate(task.due_date) || '--' }} Hoàn thành Đang làm Chưa hoàn thành
Tổng cộng ({{ filteredReportTasks.length }} công việc): {{ reportStats.totalAreaFormatted }} (Hoàn thành: {{ reportStats.doneAreaFormatted }} • Đang thi công: {{ reportStats.inProgressAreaFormatted }})
Số dòng mỗi trang:
Trang {{ reportPagination.page }} / {{ reportTotalPages || 1 }}

Chưa có nhân viên nào

Bấm "Thêm nhân viên" để bắt đầu

{{ emp.name.charAt(0) }}

{{ emp.name }}

{{ (emp.department && emp.department.name) || 'Chưa phân bổ' }}

{{ emp.role==='Admin' ? '⚡ Quản trị viên' : (emp.role==='Leader' ? '👑 Trưởng nhóm' : '👤 Nhân viên') }}
Tiến độ công việc {{ getTaskProgress('employee', emp.id).text }} ({{ getTaskProgress('employee', emp.id).percent }}%) 0 / 0
{{ emp.username }}
{{ emp.password || '***' }}
{{ emp.email }}
Hiển thị {{ (pagination.employees.page - 1) * pagination.employees.perPage + 1 }}-{{ Math.min(pagination.employees.page * pagination.employees.perPage, filteredEmployees.length) }} trong {{ filteredEmployees.length }} nhân viên

Chưa có Workflow nào

Bấm "Thêm Workflow" để bắt đầu

{{ cat.name }}

{{ cat.color }}
Mặc định
Tiến độ công việc {{ getTaskProgress('category', cat.id).text }} ({{ getTaskProgress('category', cat.id).percent }}%) 0 / 0
Hiển thị {{ (pagination.categories.page - 1) * pagination.categories.perPage + 1 }}-{{ Math.min(pagination.categories.page * pagination.categories.perPage, filteredCategories.length) }} trong {{ filteredCategories.length }} Workflow

Chưa có dự án nào

Bấm "Thêm dự án" hoặc "Setup" để bắt đầu

#{{ proj.cde_code }} 🏗️ {{ proj.project_type }}

{{ proj.name }}

{{ proj.status === 'completed' ? 'Hoàn thành' : 'Đang thực hiện' }}

{{ proj.description || 'Không có mô tả' }}

Mục tiêu

{{ proj.target || 'Chưa đặt mục tiêu' }}

Tiến độ công việc {{ getTaskProgress('project', proj.id).text }} ({{ getTaskProgress('project', proj.id).percent }}%) 0 / 0
Phụ trách: {{ (proj.manager && proj.manager.name) || 'Chưa xác định' }}
Tạo bởi: {{ proj.creator.name }}
Avatar {{ mem.name.charAt(0).toUpperCase() }}
+{{ proj.members.length - 4 }}
{{ formatDateShort(proj.start_date) }} {{ proj.end_date ? formatDateShort(proj.end_date) : 'Chưa xác định' }}
Hiển thị {{ (pagination.projects.page - 1) * pagination.projects.perPage + 1 }}-{{ Math.min(pagination.projects.page * pagination.projects.perPage, filteredProjects.length) }} trong {{ filteredProjects.length }} dự án
Dự án {{ selectedProject.name }}

{{ selectedProject.name }}

Chi tiết dự án & nhiệm vụ

Mã CDE: {{ selectedProject.cde_code }} Loại hình: {{ selectedProject.project_type }}

{{ selectedProject.name }}

{{ selectedProject.status === 'completed' ? 'Hoàn thành' : 'Đang thực hiện' }}

{{ selectedProject.description || 'Không có mô tả' }}

Mục tiêu

{{ selectedProject.target || 'Chưa đặt mục tiêu' }}

Người phụ trách: {{ (selectedProject.manager && selectedProject.manager.name) || 'Chưa xác định' }} Thành viên:
Avatar {{ mem.name.charAt(0).toUpperCase() }}
Bắt đầu: {{ formatDate(selectedProject.start_date) }} Kết thúc: {{ selectedProject.end_date ? formatDate(selectedProject.end_date) : 'Chưa xác định' }}
Tiến độ {{ getTaskProgress('project', selectedProject.id).percent }}%

{{ getTaskProgress('project', selectedProject.id).text }} nhiệm vụ hoàn thành

{{ projectDetailTaskStats.todo }}

Cần làm

{{ projectDetailTaskStats.inProgress }}

Đang làm

{{ projectDetailTaskStats.done }}

Xong

Hồ sơ & Tài liệu Dự án (Google Drive Storage Vault)

{{ projectDocState.docs.length }}
Đang tải tài liệu lên Google Drive...
Chưa có tài liệu nào cho dự án này. Bấm "Tải lên Tài liệu" để đính kèm tệp PDF, Word, Excel, Hình ảnh...

{{ doc.fileName }}

{{ doc.fileSize }} · {{ doc.uploaderName }}

Nhiệm vụ thuộc dự án

{{ projectDetailTasks.length }} nhiệm vụ

Không có nhiệm vụ nào

{{ projectDetailStatusFilter !== 'all' ? 'Thử thay đổi bộ lọc để xem các nhiệm vụ khác' : 'Dự án này chưa có nhiệm vụ nào' }}

{{ task.title }}

{{ task.scope }} {{ task.zone }} {{ task.area }}
Avatar {{ (asg && asg.name) ? asg.name.charAt(0).toUpperCase() : '?' }}
{{ formatDate(task.created_at) }} - {{ formatDate(task.due_date) }}
{{ task.category.name }}
Hiển thị {{ (pagination.projectDetailTasks.page - 1) * pagination.projectDetailTasks.perPage + 1 }}-{{ Math.min(pagination.projectDetailTasks.page * pagination.projectDetailTasks.perPage, filteredProjectDetailTasks.length) }} trong {{ filteredProjectDetailTasks.length }} nhiệm vụ

Phòng ban

{{ d.name }}

{{ d.description || 'Không có mô tả' }}

Tiến độ công việc {{ getTaskProgress('department', d.id).text }} ({{ getTaskProgress('department', d.id).percent }}%) 0 / 0
Hiển thị {{ (pagination.departments.page - 1) * pagination.departments.perPage + 1 }}-{{ Math.min(pagination.departments.page * pagination.departments.perPage, data.departments.length) }} trong {{ data.departments.length }} phòng ban

Hồ sơ cá nhân

Cập nhật thông tin tài khoản cá nhân của bạn

Avatar {{ currentUser.name ? currentUser.name.charAt(0).toUpperCase() : 'U' }}
{{ currentUser.name }}
Vai trò: {{ currentUser.role }}

Thông tin công ty

Cập nhật tên thương hiệu và thông tin chung của doanh nghiệp

Logo
Banner

Cấu hình Tự động lưu trữ

Tự động dọn dẹp các công việc và dự án đã hoàn thành quá mốc thời gian nhất định

Cấu hình hiện tại: Tự động lưu trữ sau {{ settings.archive_days_after_completion || 30 }} ngày kể từ khi hoàn thành.

Hệ thống sẽ quét định kỳ và tự động chuyển các nhiệm vụ "Đã hoàn thành" quá thời gian này vào kho Lưu Trữ.

Cấu hình Nhắc hẹn Deadline

Tùy chỉnh thời gian, giờ nhắc và tần suất thông báo nhắc nhở trước khi công việc hết hạn

Cấu hình hiện tại: Nhắc trước {{ settings.deadline_reminder_days || 2 }} ngày lúc {{ settings.deadline_reminder_time || '08:00' }} với tần suất {{ settings.deadline_reminder_frequency || 1 }} lần/ngày.

Phát thông báo nhắc nhở trước mốc Deadline tương ứng số ngày này.

Ví dụ: 08:00 (Buổi sáng)

Số lần gửi nhắc lại trong ngày

Cài đặt Telegram Bot

Gửi thông báo công việc tự động qua Telegram

Telegram Bot
{{ telegramTestResult.message }}

Cài đặt Zalo Bot Creator

Gửi tin nhắn thông báo công việc tự động qua Zalo

Zalo Bot
{{ zaloTestResult.message }}
Webhook nhận tin nhắn từ Zalo

Thiết lập kết nối Webhook để nhận phản hồi từ Zalo Bot

{{ zaloWebhookResult.message }}
Hướng dẫn liên kết Zalo Bot cho nhân viên
1
Bấm nút Kết nối Webhook để thiết lập đường truyền nhận thông điệp.
2
Yêu cầu nhân viên mở ứng dụng Zalo, tìm kiếm tên Zalo Bot đã tạo trên hệ thống của bạn.
3
Nhân viên gửi tin nhắn theo cú pháp: /start [Mã NV] (Ví dụ: /start nv_001). Hệ thống sẽ tự động bắt sự kiện và lưu Zalo Chat ID cho nhân viên đó.

Cài đặt Trợ lý Gemini AI

Tự động phân tích và tạo nhiệm vụ bằng trí tuệ nhân tạo

Gemini AI

Bạn có thể lấy khóa API miễn phí từ Google AI Studio.

{{ geminiTestResult.message }}

Đồng bộ & Làm mới dữ liệu

Xóa bộ nhớ đệm (Cache) trên máy chủ để cập nhật ngay lập tức các thay đổi được thực hiện trực tiếp trên Google Sheets.

Lưu ý: Hệ thống sử dụng bộ nhớ đệm để tăng tốc độ tải trang (tối đa 5 phút). Nếu bạn hoặc nhân viên vừa sửa dữ liệu trực tiếp trên tệp Google Sheets, hãy bấm nút dưới đây để đồng bộ ngay lập tức mà không cần chờ đợi.

Thông báo

Không có thông báo

{{ n.title }}

{{ n.description }}

{{ formatDate(n.created_at) }}

Hiển thị {{ (pagination.notifications.page - 1) * pagination.notifications.perPage + 1 }}-{{ Math.min(pagination.notifications.page * pagination.notifications.perPage, data.notifications.length) }} trong {{ data.notifications.length }} thông báo
Avatar
{{ currentUser.name.charAt(0) }}

{{ currentUser.name }}

{{ currentUser.role }}

{{ detailModal.task.priority==='high'?'Cao':detailModal.task.priority==='medium'?'Trung bình':'Thấp' }} {{ (detailModal.task.department && detailModal.task.department.name) || 'N/A' }} {{ (detailModal.task.category && detailModal.task.category.name) || detailModal.task.category_id }} {{ detailModal.task.project.name }} {{ detailModal.task.scope }} {{ detailModal.task.zone }} {{ detailModal.task.area }}

{{ detailModal.task.title }}

Mô tả nhiệm vụ

{{ detailModal.task.description || 'Không có mô tả' }}

Công việc con ({{ (detailModal.task.checklist || []).filter(c => c.done).length }}/{{ (detailModal.task.checklist || []).length }})

{{ item.text }}

Nhãn

{{ tag }}

Thông số kỹ thuật MEP

Phạm vi hệ thống

{{ detailModal.task.scope }}

Khu vực thi công

{{ detailModal.task.zone }}

Diện tích

{{ detailModal.task.area }}

Creator Avatar {{ (detailModal.task.creator.name || 'U').charAt(0).toUpperCase() }}
Người tạo nhiệm vụ: {{ detailModal.task.creator.name }}

Người thực hiện

Assignee Avatar {{ (asg && asg.name ? asg.name : 'U').charAt(0) }}
{{ (asg && asg.name) || 'Chưa giao' }}

Chưa có bình luận nào.

User Avatar {{ (cmt.user && cmt.user.name ? cmt.user.name : 'U').charAt(0) }}
{{ (cmt.user && cmt.user.name) || 'Unknown' }} {{ formatDate(cmt.created_at) }}

{{ cmt.content }}

File đính kèm
{{ file.name }}
User Avatar {{ currentUser.name.charAt(0) }}
Preview Image
{{ f.name }}

Chưa có lịch sử hoạt động nào.

{{ log.user_name }} {{ formatDate(log.created_at) }}

{{ log.details }}

Thêm công việc con

Nhập nội dung cần theo dõi trong nhiệm vụ này

{{ checklistDialog.error }}

{{ modalTitle }}

{{ projectTasksModal.project.name }}

{{ projectTasksModal.tasks.length }}

Danh sách nhiệm vụ thuộc dự án

Chưa có nhiệm vụ nào trong dự án này!

{{ t.title }}

{{ t.status === 'done' || t.status === 'completed' ? 'Hoàn thành' : (t.status === 'in_progress' || t.status === 'in-progress' ? 'Đang làm' : 'Chờ làm') }}

{{ (t.category && t.category.name) || 'Workflow chính' }}

{{ formatDateShort(t.due_date) }}

{{ deptEmployeesModal.department.name }}

Danh sách nhân sự thuộc phòng ban

Avatar
{{ e.name.charAt(0).toUpperCase() }}

{{ e.name }}

{{ e.role === 'Leader' ? '👑 Trưởng nhóm' : '👤 Nhân viên' }} @{{ e.username }}

Chưa có nhân sự

Phòng ban này hiện chưa có nhân viên nào.

Avatar {{ employeeTasksModal.employee.name.charAt(0) }}

{{ employeeTasksModal.employee.name }}

{{ employeeTasksModal.tasks.length }}

Danh sách nhiệm vụ được giao

Nhân viên này chưa được giao nhiệm vụ nào!

{{ t.title }}

{{ t.status === 'done' || t.status === 'completed' ? 'Hoàn thành' : (t.status === 'in_progress' || t.status === 'in-progress' ? 'Đang làm' : 'Chờ làm') }}

{{ (t.project && t.project.name) || (t.category && t.category.name) || 'Nhiệm vụ riêng' }}

{{ formatDateShort(t.due_date) }}

{{ categoryTasksModal.category.name }}

{{ categoryTasksModal.tasks.length }}

Danh sách nhiệm vụ thuộc Workflow

Không có nhiệm vụ nào thuộc Workflow này!

{{ t.title }}

{{ t.status === 'done' || t.status === 'completed' ? 'Hoàn thành' : (t.status === 'in_progress' || t.status === 'in-progress' ? 'Đang làm' : 'Chờ làm') }}

{{ (t.project && t.project.name) || 'Nhiệm vụ lẻ' }}

{{ formatDateShort(t.due_date) }}

{{ metricModal.title }}

{{ metricModal.tasks.length }}

Danh sách công việc chi tiết được chọn

Không có nhiệm vụ nào thuộc danh mục này!

{{ t.title }}

{{ t.status==='done'||t.status==='completed'?'Hoàn thành':(t.status==='in_progress'||t.status==='in-progress'?'Đang làm':(t.status==='overdue'?'Quá hạn':'Chờ làm')) }}

{{ t.project ? t.project.name : (t.category ? t.category.name : 'Nhiệm vụ lẻ') }}

{{ formatDateShort(t.due_date) }}

{{ confirmDialog.title }}

{{ confirmDialog.message }}

{{ t.title || (t.type==='success'?'Thành công':(t.type==='error'?'Thất bại':'Thông báo')) }}
{{ t.message }}