diff --git a/.cursor/rules/user-docs.mdc b/.cursor/rules/user-docs.mdc index 767e117..0600f35 100644 --- a/.cursor/rules/user-docs.mdc +++ b/.cursor/rules/user-docs.mdc @@ -28,6 +28,10 @@ apps/docs-dev/src/user/mobile/ Register new pages in `src/.vitepress/config.mts` sidebar/nav. +## Languages + +User guides ship in **English** (root) and **Bahasa Indonesia** (`src/id/`). When you add or edit a user page, update both locales. Keep in-app labels from web `languages/id` JSON and mobile `app_localizations_id.dart`. + Do **not** add new pages under the legacy architecture sidebar paths (`/packages/*`, `/apps/desktop/*`, `/setup`, `/overview`). Those stay until a later migration; do not expand them. Existing user how-tos (e.g. `src/apps/web/SALES_WORKFLOW.md`): keep user-facing; when editing, convert Mermaid to PlantUML and remove emoji. diff --git a/apps/docs-dev/src/.vitepress/config.mts b/apps/docs-dev/src/.vitepress/config.mts index db1212c..5544f1e 100644 --- a/apps/docs-dev/src/.vitepress/config.mts +++ b/apps/docs-dev/src/.vitepress/config.mts @@ -2,6 +2,34 @@ import { defineConfig } from 'vitepress'; import { withMermaid } from 'vitepress-plugin-mermaid'; import { plantumlPlugin } from './plantuml'; +const giteaIcon = { + svg: 'Gitea', +}; + +const developerSidebar = { + text: 'Developer reference', + collapsed: true, + items: [ + { text: 'Project Overview', link: '/overview' }, + { text: 'Development Setup', link: '/setup' }, + { text: 'API Engine', link: '/packages/core-api' }, + { text: 'Data Transformers', link: '/packages/core-api/transformers' }, + { text: 'Event Bus System', link: '/packages/core-events/' }, + { text: 'Storage & Persistence', link: '/packages/core-storage/' }, + { text: 'I18n & Localization', link: '/packages/core-i18n/' }, + { text: 'UI Overview', link: '/packages/ui/' }, + { text: 'App Layout', link: '/packages/ui/CORE-APP-SHELL' }, + { text: 'Action Tools', link: '/packages/ui/ACTION-TOOLS' }, + { text: 'Form Primitives', link: '/packages/ui/FORM-COMPONENTS' }, + { text: 'Web Overview', link: '/apps/web/' }, + { text: 'Sales Workflow (legacy)', link: '/apps/web/SALES_WORKFLOW' }, + { text: 'Desktop Overview', link: '/apps/desktop/' }, + { text: 'Lifecycle & Configuration', link: '/apps/desktop/CONFIGURATION' }, + { text: 'IPC & Bridge Architecture', link: '/apps/desktop/IPC_ARCHITECTURE' }, + { text: 'Distribution & Auto-Update', link: '/apps/desktop/AUTO_UPDATER' }, + ], +}; + const config = withMermaid( defineConfig({ title: 'TrackGo', @@ -12,78 +40,137 @@ const config = withMermaid( plantumlPlugin(md); }, }, + locales: { + root: { + label: 'English', + lang: 'en', + themeConfig: { + nav: [ + { text: 'User guides', link: '/user/' }, + { text: 'Web', link: '/user/web/' }, + { text: 'Mobile', link: '/user/mobile/' }, + ], + sidebar: [ + { + text: 'User guides', + items: [{ text: 'What is TrackGo', link: '/user/' }], + }, + { + text: 'Web', + collapsed: false, + items: [ + { text: 'Overview', link: '/user/web/' }, + { text: 'Set up your company', link: '/user/web/setup' }, + { text: 'Plans and visits', link: '/user/web/plans' }, + { text: 'Sales workflow', link: '/user/web/sales-workflow' }, + { text: 'Logistics', link: '/user/web/logistics' }, + { text: 'Timeline', link: '/user/web/timeline' }, + { text: 'Import CSV', link: '/user/web/import' }, + ], + }, + { + text: 'Mobile', + collapsed: false, + items: [ + { text: 'Overview', link: '/user/mobile/' }, + { text: 'Check in', link: '/user/mobile/check-in' }, + { text: 'Daily work', link: '/user/mobile/daily-work' }, + ], + }, + developerSidebar, + ], + }, + }, + id: { + label: 'Bahasa Indonesia', + lang: 'id', + link: '/id/', + description: 'Panduan pengguna TrackGo untuk web dan mobile', + themeConfig: { + nav: [ + { text: 'Panduan pengguna', link: '/id/user/' }, + { text: 'Web', link: '/id/user/web/' }, + { text: 'Mobile', link: '/id/user/mobile/' }, + ], + sidebar: [ + { + text: 'Panduan pengguna', + items: [{ text: 'Apa itu TrackGo', link: '/id/user/' }], + }, + { + text: 'Web', + collapsed: false, + items: [ + { text: 'Ringkasan', link: '/id/user/web/' }, + { text: 'Siapkan perusahaan', link: '/id/user/web/setup' }, + { text: 'Rencana dan kunjungan', link: '/id/user/web/plans' }, + { text: 'Alur penjualan', link: '/id/user/web/sales-workflow' }, + { text: 'Logistik', link: '/id/user/web/logistics' }, + { text: 'Timeline', link: '/id/user/web/timeline' }, + { text: 'Impor CSV', link: '/id/user/web/import' }, + ], + }, + { + text: 'Mobile', + collapsed: false, + items: [ + { text: 'Ringkasan', link: '/id/user/mobile/' }, + { text: 'Check-in', link: '/id/user/mobile/check-in' }, + { text: 'Kerja harian', link: '/id/user/mobile/daily-work' }, + ], + }, + ], + outline: { label: 'Di halaman ini', level: [2, 3] }, + docFooter: { + prev: 'Halaman sebelumnya', + next: 'Halaman berikutnya', + }, + darkModeSwitchLabel: 'Tema', + lightModeSwitchTitle: 'Ubah ke mode terang', + darkModeSwitchTitle: 'Ubah ke mode gelap', + sidebarMenuLabel: 'Menu', + returnToTopLabel: 'Kembali ke atas', + langMenuLabel: 'Ubah bahasa', + }, + }, + }, themeConfig: { search: { provider: 'local', options: { detailedView: true, + locales: { + id: { + translations: { + button: { + buttonText: 'Cari', + buttonAriaLabel: 'Cari', + }, + modal: { + displayDetails: 'Tampilkan tampilan terperinci', + resetButtonTitle: 'Reset pencarian', + backButtonTitle: 'Tutup pencarian', + noResultsText: 'Tidak ada hasil untuk', + footer: { + selectText: 'pilih', + selectKeyAriaLabel: 'Enter', + navigateText: 'navigasi', + navigateUpKeyAriaLabel: 'Panah atas', + navigateDownKeyAriaLabel: 'Panah bawah', + closeText: 'tutup', + closeKeyAriaLabel: 'Escape', + }, + }, + }, + }, + }, }, }, logo: '/logo.svg', - nav: [ - { text: 'User guides', link: '/user/' }, - { text: 'Web', link: '/user/web/' }, - { text: 'Mobile', link: '/user/mobile/' }, - ], - - sidebar: [ - { - text: 'User guides', - items: [{ text: 'What is TrackGo', link: '/user/' }], - }, - { - text: 'Web', - collapsed: false, - items: [ - { text: 'Overview', link: '/user/web/' }, - { text: 'Set up your company', link: '/user/web/setup' }, - { text: 'Plans and visits', link: '/user/web/plans' }, - { text: 'Sales workflow', link: '/user/web/sales-workflow' }, - { text: 'Logistics', link: '/user/web/logistics' }, - { text: 'Timeline', link: '/user/web/timeline' }, - { text: 'Import CSV', link: '/user/web/import' }, - ], - }, - { - text: 'Mobile', - collapsed: false, - items: [ - { text: 'Overview', link: '/user/mobile/' }, - { text: 'Check in', link: '/user/mobile/check-in' }, - { text: 'Daily work', link: '/user/mobile/daily-work' }, - ], - }, - { - text: 'Developer reference', - collapsed: true, - items: [ - { text: 'Project Overview', link: '/overview' }, - { text: 'Development Setup', link: '/setup' }, - { text: 'API Engine', link: '/packages/core-api' }, - { text: 'Data Transformers', link: '/packages/core-api/transformers' }, - { text: 'Event Bus System', link: '/packages/core-events/' }, - { text: 'Storage & Persistence', link: '/packages/core-storage/' }, - { text: 'I18n & Localization', link: '/packages/core-i18n/' }, - { text: 'UI Overview', link: '/packages/ui/' }, - { text: 'App Layout', link: '/packages/ui/CORE-APP-SHELL' }, - { text: 'Action Tools', link: '/packages/ui/ACTION-TOOLS' }, - { text: 'Form Primitives', link: '/packages/ui/FORM-COMPONENTS' }, - { text: 'Web Overview', link: '/apps/web/' }, - { text: 'Sales Workflow (legacy)', link: '/apps/web/SALES_WORKFLOW' }, - { text: 'Desktop Overview', link: '/apps/desktop/' }, - { text: 'Lifecycle & Configuration', link: '/apps/desktop/CONFIGURATION' }, - { text: 'IPC & Bridge Architecture', link: '/apps/desktop/IPC_ARCHITECTURE' }, - { text: 'Distribution & Auto-Update', link: '/apps/desktop/AUTO_UPDATER' }, - ], - }, - ], - outline: { level: [2, 3] }, socialLinks: [ { - icon: { - svg: 'Gitea', - }, + icon: giteaIcon, link: 'https://git.eigen.co.id/eigen/fe-monorepo-template', }, ], diff --git a/apps/docs-dev/src/.vitepress/theme/custom.css b/apps/docs-dev/src/.vitepress/theme/custom.css index 6f8aa5e..c88c903 100644 --- a/apps/docs-dev/src/.vitepress/theme/custom.css +++ b/apps/docs-dev/src/.vitepress/theme/custom.css @@ -144,4 +144,171 @@ height: auto; display: block; margin: 0 auto; +} + +.VPHome { + position: relative; + z-index: 0; +} + +.VPHome::before { + content: ''; + position: absolute; + top: 0; + left: 50%; + transform: translateX(-50%); + width: 100vw; + max-width: 1200px; + height: 800px; + background: radial-gradient(ellipse at top, var(--vp-c-brand-soft) 0%, transparent 70%); + filter: blur(100px); + z-index: -1; + pointer-events: none; +} + +.VPHome::after { + content: ''; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 600px; + background-image: radial-gradient(var(--vp-c-divider) 1px, transparent 1px); + background-size: 24px 24px; + background-position: top center; + z-index: -2; + pointer-events: none; + -webkit-mask-image: linear-gradient(to bottom, black 40%, transparent 100%); + mask-image: linear-gradient(to bottom, black 40%, transparent 100%); +} + +.custom-divider { + width: 100%; + height: 1px; + background-color: var(--vp-c-divider); + margin: 80px 0 64px 0; +} + +.bento-container { + max-width: 1152px; + margin: auto; + padding: 0 24px; + position: relative; +} + +.bento-header { + text-align: center; + margin-bottom: 64px; +} + +.bento-header h2 { + font-size: 2.5em; + font-weight: 700; + margin-bottom: 20px; + color: var(--vp-c-text-1); + letter-spacing: -0.02em; + line-height: 1.2; + border-top: none; + padding-top: 0; + margin-top: 0; +} + +.bento-header p { + font-size: 1.15em; + color: var(--vp-c-text-2); + max-width: 760px; + margin: 0 auto; + line-height: 1.6; +} + +.bento-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); + gap: 24px; +} + +.bento-card { + background: var(--vp-c-bg-soft); + backdrop-filter: blur(8px); + -webkit-backdrop-filter: blur(8px); + border: 1px solid var(--vp-c-divider); + border-radius: 16px; + padding: 40px 32px; + display: flex; + flex-direction: column; + align-items: flex-start; + box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); + transition: all 0.5s cubic-bezier(0.165, 0.84, 0.44, 1); +} + +.bento-card:hover { + transform: translateY(-8px); + box-shadow: 0 20px 25px -5px rgba(101, 46, 217, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); + border-color: var(--vp-c-brand-1); +} + +.bento-icon { + display: inline-flex; + align-items: center; + justify-content: center; + width: 48px; + height: 48px; + border-radius: 12px; + background: var(--vp-c-bg-mute); + color: var(--vp-c-brand-1); + margin-bottom: 24px; + transition: background 0.3s ease, color 0.3s ease, transform 0.3s ease; +} + +.bento-icon svg { + width: 24px; + height: 24px; +} + +.bento-card:hover .bento-icon { + background: var(--vp-c-brand-1); + color: #ffffff; + transform: scale(1.05); +} + +.bento-card h3 { + font-size: 1.3em; + font-weight: 600; + color: var(--vp-c-text-1); + margin-top: 0; + margin-bottom: 16px; +} + +.bento-card p { + font-size: 1em; + color: var(--vp-c-text-2); + line-height: 1.6; + margin: 0; +} + +@media (max-width: 768px) { + .custom-divider { + margin: 48px 0; + } + .bento-header { + margin-bottom: 48px; + } + .bento-header h2 { + font-size: 2em; + } + .bento-header p { + font-size: 1.05em; + } + .bento-card { + padding: 32px 24px; + } +} + +@media (max-width: 480px) { + .bento-grid { + grid-template-columns: 1fr; + } + .bento-card { + padding: 24px; + } } \ No newline at end of file diff --git a/apps/docs-dev/src/id/index.md b/apps/docs-dev/src/id/index.md new file mode 100644 index 0000000..0b9bcd3 --- /dev/null +++ b/apps/docs-dev/src/id/index.md @@ -0,0 +1,75 @@ +--- +layout: home + +hero: + name: TrackGo + text: Panduan penjualan dan logistik + tagline: Cara operator, sales, dan driver memakai TrackGo di web dan di mobile. + actions: + - theme: brand + text: Panduan pengguna + link: /id/user/ + - theme: alt + text: Web + link: /id/user/web/ + +features: + - title: Web + details: Siapkan data perusahaan, pengguna, rencana, faktur, pembayaran, surat jalan, dan riwayat aktivitas. + link: /id/user/web/ + linkText: Panduan web + - title: Mobile + details: Check-in di cabang, ikuti rencana hari ini, kunjungi pelanggan, dan catat pembayaran di lapangan. + link: /id/user/mobile/ + linkText: Panduan mobile + - title: Penjualan + details: Dari permintaan atau pesanan penjualan sampai faktur dan pembayaran. + link: /id/user/web/sales-workflow + linkText: Alur penjualan + - title: Rencana + details: Buat rencana harian sekali jalan, atau generate rencana dari siklus kunjungan mingguan. + link: /id/user/web/plans + linkText: Rencana dan kunjungan +--- + + + +
+
+
+

Cara TrackGo dipakai

+

Operator menyiapkan data master dan rencana harian di web. Sales dan driver check-in di mobile, lalu mengerjakan rencana: mengunjungi pelanggan, menagih faktur, atau menyelesaikan pengiriman.

+
+
+
+
+ +
+

Penjualan di web

+

Buat permintaan, pesanan, faktur, dan pembayaran. Lampirkan faktur ke rencana penjualan agar tim lapangan tahu apa yang harus ditagih.

+
+
+
+ +
+

Logistik di web

+

Kelola surat jalan dan rencana pengiriman. Lengkapi kuantitas terkirim agar pesanan bisa selesai.

+
+
+
+ +
+

Kerja lapangan di mobile

+

Clock in di cabang awal rencana, buka destinasi hari ini, check-in ke pelanggan, lalu catat pembayaran.

+
+
+
+ +
+

Riwayat aktivitas

+

Tinjau jejak dan peristiwa lapangan hari itu di Timeline. Streaming peta langsung di web masih Segera hadir.

+
+
+
diff --git a/apps/docs-dev/src/id/user/index.md b/apps/docs-dev/src/id/user/index.md new file mode 100644 index 0000000..d230d1e --- /dev/null +++ b/apps/docs-dev/src/id/user/index.md @@ -0,0 +1,60 @@ +# Apa itu TrackGo + +TrackGo adalah platform penjualan dan logistik. Staf kantor memakai aplikasi **web**. Sales, driver, dan crew bekerja dari aplikasi **mobile**. + +Siapkan dulu perusahaan, orang, produk, dan pelanggan. Setelah itu rencanakan kunjungan harian, lampirkan faktur atau surat jalan, lalu ikuti aktivitas lapangan. + +## Siapa yang memakai + +| Peran | Tempat kerja | Tugas umum | +| --- | --- | --- | +| Operator / admin | Web | Data perusahaan, pengguna, hak akses, rencana, dokumen | +| Sales | Web dan mobile | Permintaan, pesanan, faktur, pembayaran, kunjungan pelanggan | +| Driver / crew | Web (rencana) dan mobile | Rencana pengiriman, surat jalan, pemberhentian pelanggan | + +Menu yang bisa dibuka tergantung **hak akses** yang ditetapkan ke pengguna. Jika menu tidak muncul, minta administrator memberi izin **Lihat** untuk area itu. + +## Alur biasa + +```plantuml +@startuml +actor Operator +actor Field as "Sales atau driver" + +Operator -> Web: Siapkan perusahaan, pengguna, dan data master +Operator -> Web: Buat siklus atau rencana sekali jalan +Operator -> Web: Lampirkan faktur atau surat jalan +Field -> Mobile: Clock in di cabang awal rencana +Field -> Mobile: Kunjungi pelanggan di rencana +Field -> Mobile: Tagih pembayaran atau ikuti tugas packing +Operator -> Web: Tinjau dokumen dan Timeline +@enduml +``` + +1. Tambahkan pengaturan perusahaan, cabang, divisi, pelanggan, produk, dan karyawan. +2. Buat pengguna dan hak akses agar setiap orang hanya melihat yang dibutuhkan. +3. Buat **siklus mingguan** (berulang) atau **rencana sekali jalan** untuk satu tanggal. Lampirkan faktur (penjualan) atau surat jalan (logistik). +4. Tim lapangan check-in di cabang lewat mobile, lalu mengerjakan rencana. +5. Sales mencatat pembayaran di mobile atau web. Driver menyelesaikan surat jalan di web. + +## Dokumen penjualan + +Alur penjualan: + +**Permintaan penjualan (opsional) → Pesanan penjualan → Faktur → Pembayaran** + +Memproses pesanan juga dapat membuat surat jalan untuk pengiriman. Detail: [Alur penjualan](/id/user/web/sales-workflow). + +## Web dan mobile + +- [Web](/id/user/web/) — penyiapan, rencana, penjualan, logistik, timeline, impor CSV +- [Mobile](/id/user/mobile/) — masuk, check-in cabang, rencana hari ini, pelanggan, pembayaran + +## Segera hadir + +Hal berikut belum ada di produk: + +- **Dasbor** web (menu ada; halamannya masih placeholder) +- Posisi **langsung** di peta web (Timeline memutar ulang rekaman satu hari) +- Pembaruan **status surat jalan** di mobile (tugas logistik hanya tercantum, tidak diubah di ponsel) +- Lupa kata sandi, ingat saya, dan daftar akun di layar masuk diff --git a/apps/docs-dev/src/id/user/mobile/check-in.md b/apps/docs-dev/src/id/user/mobile/check-in.md new file mode 100644 index 0000000..9e86a06 --- /dev/null +++ b/apps/docs-dev/src/id/user/mobile/check-in.md @@ -0,0 +1,40 @@ + + +# Check-in + +

Clock in di cabang awal rencana sebelum kerja lapangan

+ +Sales dan driver **clock in di cabang awal rencana** sebelum mulai kerja lapangan. Aplikasi tidak memblokir penelusuran Beranda, Rencana, atau Pelanggan tanpa check-in, tetapi buat pelanggan, check-in kunjungan, dokumen penjualan, dan pembayaran tetap nonaktif sampai Anda bertugas. + +## Sebelum clock in + +Anda membutuhkan **rencana hari ini** dengan cabang awal. Jika tidak ada rencana, Clock In tidak tersedia dan layar menjelaskan tidak ada rencana hari ini. Operator harus [membuat atau men-generate rencana](/id/user/web/plans) di web. + +## Clock in dan clock out + +1. Dari Beranda, ketuk **Check-in sekarang** jika muncul **Anda belum check-in**, atau buka layar check-in. +2. Pastikan lokasi di peta (OpenStreetMap). Pakai recenter jika perlu. +3. Ketuk **Clock In Sekarang**. Aplikasi mengirim koordinat GPS untuk **cabang awal** rencana. +4. Saat bertugas, aplikasi merekam jejak lokasi di latar belakang (interval berasal dari pengaturan GPS perusahaan). +5. Ketuk **Clock Out** saat shift selesai. Pelacakan berhenti. + +Layar menampilkan nama, tanggal, koordinat, serta waktu clock-in / clock-out. + +Lingkaran di peta hanya panduan visual. Tombol Clock In aktif jika rencana ada dan Anda belum check-in — tidak diblokir karena berdiri di luar lingkaran itu. + +## Setelah check-in + +Selama kehadiran cabang terbuka: + +- Anda dapat membuat pelanggan +- Anda dapat check-in ke pelanggan pada kunjungan +- Aksi penjualan (permintaan, pesanan, pembayaran) juga membutuhkan check-in **kunjungan pelanggan** untuk pelanggan itu + +Jika GPS menjauh terlalu jauh dari kunjungan pelanggan, Beranda dapat menampilkan peringatan checkout agar Anda check-out dari kunjungan. + +## Segera hadir + +- Check-in lewat **NFC** atau **QR** (layar selalu memakai GPS) +- Menegakkan radius check-in sebelum tombol Clock In diaktifkan diff --git a/apps/docs-dev/src/id/user/mobile/daily-work.md b/apps/docs-dev/src/id/user/mobile/daily-work.md new file mode 100644 index 0000000..f80e201 --- /dev/null +++ b/apps/docs-dev/src/id/user/mobile/daily-work.md @@ -0,0 +1,83 @@ + + +# Kerja harian + +

Beranda, Rencana, dan Pelanggan setelah Anda bertugas

+ +Setelah [check-in cabang](/id/user/mobile/check-in), pakai Beranda, Rencana, dan Pelanggan untuk mengerjakan hari itu. + +## Beranda + +Beranda punya dua tab: **Rencana** dan **Timeline**. + +**Tab Rencana** + +- Sapaan dan jabatan (Sales, Driver, atau Crew) +- Banner jika Anda belum check-in di cabang +- Destinasi hari ini — **Buka** memulai kunjungan pelanggan +- Kartu kunjungan aktif dengan checkout +- **Tugas Hari Ini** — faktur (sales) atau kode surat jalan (driver/crew) + +**Tab Timeline** + +Peristiwa lapangan hari ini dikelompokkan per pelanggan (check-in/out, dokumen penjualan, pelanggan baru). Tarik ke bawah untuk menyegarkan. + +Keluar ada di menu avatar. + +### Segera hadir di Beranda + +- Total **kinerja** kerja (jumlah pelanggan / faktur / pembayaran / packing tidak ditampilkan di layar) +- Ikon Pesan dan Notifikasi belum berfungsi + +## Rencana + +Tab **Rencana** menampilkan destinasi hari ini. Buka pemberhentian untuk ke layar kunjungan pelanggan. + +Jika rencana ada, pakai **Tambah pelanggan ke rencana**: + +1. Cari pelanggan yang belum ada di rencana. +2. Untuk rencana **penjualan**, Anda dapat memilih faktur belum lunas untuk dilampirkan. +3. Konfirmasi **Tambah ke rencana**. + +Anda tidak dapat membuat rencana harian baru di ponsel — hanya menambah ke rencana yang sudah ada. + +### Segera hadir di Rencana + +- Memilih **surat jalan** saat menambah pelanggan ke rencana logistik + +## Pelanggan + +Cari dan urutkan daftar menurut **Nama**, **Kode**, atau **Jarak**. Ketuk baris untuk profil. + +**Buat** (tombol FAB) hanya tersedia setelah check-in cabang. Formulir mencakup kode, nama, telepon, NFC ID (diketik), alamat, lokasi peta, dan kontak opsional. + +### Kunjungi pelanggan + +Buka destinasi dari rencana, atau buka rute kunjungan dari profil. + +1. Selesaikan **Check-in pelanggan (GPS)** ketika aksi penjualan terkunci. +2. Kemudian Anda dapat memakai **Aksi penjualan**. + +Tanpa check-in cabang Anda melihat **Check-in cabang diperlukan**. Tanpa check-in kunjungan untuk pelanggan itu, Anda diminta check-in ke pelanggan. + +### Permintaan dan pesanan penjualan + +**Buat permintaan penjualan** dan **Buat pesanan penjualan (tanpa packing)** mengirim dokumen dengan **produk pertama yang dimuat** dan kuantitas **1**. Tidak ada pemilih produk atau keranjang di ponsel. + +Untuk baris item lengkap, buat dokumen di [web](/id/user/web/sales-workflow). + +### Pembayaran + +Faktur belum lunas di daftar profil/kunjungan punya **Buat pembayaran**. + +1. Pastikan kode faktur, status, dan saldo. +2. Isi **jumlah** (dimulai dari sisa saldo) dan **catatan** opsional. +3. Catat pembayaran. GPS dilampirkan jika tersedia. + +Jumlah harus lebih dari nol dan tidak melebihi saldo. Aturan check-in cabang + kunjungan pelanggan yang sama berlaku. + +## Yang dapat dilakukan driver hari ini + +Driver dan crew mengikuti rencana logistik dan melihat kode surat jalan di Beranda. **Mengubah status surat jalan di mobile masih Segera hadir** — selesaikan surat jalan di [web](/id/user/web/logistics). diff --git a/apps/docs-dev/src/id/user/mobile/index.md b/apps/docs-dev/src/id/user/mobile/index.md new file mode 100644 index 0000000..53d8a46 --- /dev/null +++ b/apps/docs-dev/src/id/user/mobile/index.md @@ -0,0 +1,54 @@ + + +# Ringkasan mobile + +

Aplikasi lapangan untuk sales, driver, dan crew

+ +Aplikasi mobile TrackGo untuk **sales**, **driver**, dan **crew** di lapangan. Tab bawah: **Beranda**, **Rencana**, dan **Pelanggan**. Check-in cabang adalah layar terpisah. + +Jabatan karyawan menentukan rencana yang dimuat: + +| Jabatan | Jenis rencana | Tugas hari ini di Beranda | +| --- | --- | --- | +| Sales | Penjualan | Faktur pada rencana hari ini | +| Driver atau crew | Logistik | Kode surat jalan pada rencana hari ini | + +Jika akun belum tertaut ke karyawan, Beranda dan Rencana menjelaskan bahwa profil belum tertaut. + +## Masuk + +1. Buka aplikasi. +2. Masukkan **ID Karyawan** dan **Kata Sandi**. +3. Ketuk **Masuk**. + +Aturan username: 3–32 karakter. Kata sandi: 8–72 karakter. + +## Hari kerja biasa + +```plantuml +@startuml +start +:Masuk; +:Buka Beranda atau Check-in; +:Clock in di cabang awal rencana; +:Buka rencana hari ini; +:Check-in ke pelanggan; +:Catat pembayaran atau buat dokumen penjualan; +:Clock out kunjungan dan cabang; +stop +@enduml +``` + +1. [Check-in](/id/user/mobile/check-in) di cabang (wajib sebelum sebagian besar aksi lapangan). +2. [Kerja harian](/id/user/mobile/daily-work) — rencana, pelanggan, kunjungan, pembayaran, timeline Beranda. + +## Segera hadir di layar masuk + +Kontrol ini terlihat tetapi belum berfungsi: + +- Ingat Saya +- Lupa Kata Sandi +- Masuk dengan Email atau Telepon +- Daftar di Sini diff --git a/apps/docs-dev/src/id/user/web/import.md b/apps/docs-dev/src/id/user/web/import.md new file mode 100644 index 0000000..04f3060 --- /dev/null +++ b/apps/docs-dev/src/id/user/web/import.md @@ -0,0 +1,29 @@ + + +# Impor CSV + +

Impor di daftar dokumen jika hak akses mencakup Impor

+ +Anda dapat memuat banyak dokumen dari berkas **.csv** di halaman indeks berikut: + +| Dokumen | Menu | +| --- | --- | +| Permintaan penjualan | Penjualan → Aktivitas → Permintaan Penjualan | +| Pesanan penjualan | Penjualan → Aktivitas → Pesanan Penjualan | +| Faktur penjualan | Penjualan → Aktivitas → Faktur Penjualan | +| Pembayaran penjualan | Penjualan → Aktivitas → Pembayaran Penjualan | +| Surat jalan | Logistik → Aktivitas → Surat Jalan | + +## Cara impor + +1. Buka daftar. +2. Klik **Import CSV** (tersembunyi jika Anda tidak punya **Impor** pada area itu). +3. Pilih berkas `.csv` dan konfirmasi. + +Tidak ada wizard impor terpisah selain unggah berkas. + +## Yang tidak dapat diimpor di sini + +Data master (cabang, pelanggan, produk), pengguna, hak akses, siklus, dan rencana **tidak** punya tombol Import CSV. Buat catatan itu di layar masing-masing, atau generate rencana dari siklus. diff --git a/apps/docs-dev/src/id/user/web/index.md b/apps/docs-dev/src/id/user/web/index.md new file mode 100644 index 0000000..0c0f698 --- /dev/null +++ b/apps/docs-dev/src/id/user/web/index.md @@ -0,0 +1,40 @@ + + +# Ringkasan web + +

Aplikasi browser dan desktop untuk operator, sales, dan logistik.

+ +Masuk dengan **Username** dan **Password** di halaman masuk. Bahasa bisa diganti antara English dan Bahasa Indonesia. + +Setelah masuk, sidebar hanya menampilkan menu yang diizinkan hak akses Anda. + +## Menu + +| Menu | Ikon | Yang dikerjakan | +| --- | --- | --- | +| Dasbor | | Segera hadir | +| Timeline | | Putar ulang jejak GPS dan aktivitas lapangan karyawan sales untuk satu hari | +| Penjualan | | Karyawan, siklus, permintaan, pesanan, faktur, pembayaran, rencana, laporan | +| Logistik | | Driver dan crew, siklus, surat jalan, rencana, laporan | +| Pengaturan | | Cabang, divisi, pelanggan, produk, pengaturan perusahaan, pengguna, hak akses | + +## Urutan yang disarankan + +1. [Siapkan perusahaan](/id/user/web/setup) — data master, pengguna, dan hak akses +2. [Rencana dan kunjungan](/id/user/web/plans) — rencana sekali jalan dan siklus mingguan +3. [Alur penjualan](/id/user/web/sales-workflow) — permintaan, pesanan, faktur, pembayaran +4. [Logistik](/id/user/web/logistics) — surat jalan dan rencana pengiriman +5. [Timeline](/id/user/web/timeline) — riwayat aktivitas di peta +6. [Impor CSV](/id/user/web/import) — unggah dokumen sekaligus + +## Laporan + +**Penjualan → Laporan Penjualan** dan **Logistik → Laporan Logistik** menampilkan tabel laporan dari server. Jika belum dikonfigurasi, halaman menyatakan tidak ada laporan. + +## Status dan izin + +Sebagian besar data master memakai **Draft**, **Aktif**, dan **Diarsipkan**. Dokumen penjualan dan logistik punya status sendiri (lihat masing-masing panduan). + +Tombol seperti Buat, Process, Submit, dan Approve hanya muncul jika hak akses Anda mencakup aksi itu (**Buat**, **Ubah**, **Hapus**, atau **Impor**). diff --git a/apps/docs-dev/src/id/user/web/logistics.md b/apps/docs-dev/src/id/user/web/logistics.md new file mode 100644 index 0000000..031c179 --- /dev/null +++ b/apps/docs-dev/src/id/user/web/logistics.md @@ -0,0 +1,74 @@ + + +# Logistik + +

Menu logistik untuk driver, crew, surat jalan, dan rencana pengiriman

+ +Pakai Logistik jika Anda butuh dokumen pengiriman dan rute driver. Penjualan tetap memiliki permintaan, pesanan, faktur, dan pembayaran. + +## Karyawan dan siklus + +- **Logistik → Data → Karyawan** — jabatan **driver** dan **crew** +- **Logistik → Data → Siklus Logistik** — templat kunjungan mingguan untuk karyawan itu + +Generate rencana harian dari siklus dengan cara yang sama seperti penjualan. Lihat [Rencana dan kunjungan](/id/user/web/plans). + +## Surat jalan + +

Logistik → Aktivitas → Surat Jalan

+ +Surat jalan dibuat ketika Anda **Process** pesanan penjualan dengan **Generate packing slip** tercentang. Anda juga dapat membuatnya sendiri dan menautkannya ke pesanan penjualan. + +Kolom umum: kode, tanggal, pelanggan, pesanan penjualan, lokasi, produk, catatan. + +```plantuml +@startuml +start +if (Status Draft?) then (ya) + :Change status ke Processed\natau Cancel; +endif +if (Status Processed?) then (ya) + :Complete; + :Isi kuantitas terkirim per produk; + if (Ada sisa kuantitas?) then (ya) + :Surat jalan baru dibuat\nuntuk sisa; + else (tidak) + :Surat jalan Completed; + endif +endif +stop +@enduml +``` + +1. Jika status **Draft**, pakai **Change status** untuk pindah ke **Processed**, atau **Cancel**. Tidak ada tombol **Process** di sini. +2. Saat **Processed**, klik **Complete**. Isi **kuantitas terkirim** untuk setiap produk. Sisa kuantitas membuka **surat jalan baru**. +3. Anda dapat **Cancel** surat jalan saat **Draft** atau **Processed**. + +Ketika semua surat jalan terkait selesai, pesanan penjualan terkait dapat pindah ke **Completed**. Jika packing dilewati pada pesanan, pesanan tidak menunggu surat jalan. + +### Aksi status + +| Status saat ini | Tombol | Change status | +| --- | --- | --- | +| Draft | Cancel | Processed, Cancelled | +| Processed | Complete, Cancel | Completed, Cancelled | +| Completed | — | — | +| Cancelled | — | — | + +**Complete** selalu meminta kuantitas terkirim. + +Anda dapat [impor surat jalan dari CSV](/id/user/web/import) jika hak akses mencakup **Impor**. + +## Rencana logistik + +

Logistik → Aktivitas → Rencana Logistik

+ +Model rencana sama seperti penjualan: karyawan, tanggal, cabang awal/akhir, pelanggan. Lampirkan **surat jalan** bukan faktur. + +Driver dan crew membuka rencana hari ini di [mobile](/id/user/mobile/daily-work). Beranda menampilkan kode surat jalan sebagai tugas hari ini. + +## Segera hadir + +**Memperbarui status surat jalan di mobile** belum tersedia. Driver melihat kode packing yang ditugaskan di Beranda; mereka menyelesaikan surat jalan di aplikasi web (atau operator yang mengerjakannya). diff --git a/apps/docs-dev/src/id/user/web/plans.md b/apps/docs-dev/src/id/user/web/plans.md new file mode 100644 index 0000000..2023a9b --- /dev/null +++ b/apps/docs-dev/src/id/user/web/plans.md @@ -0,0 +1,68 @@ + + +# Rencana dan kunjungan + +

Penjualan → Aktivitas → Rencana Penjualan, atau Logistik → Aktivitas → Rencana Logistik

+ +**Rencana** adalah pekerjaan satu karyawan untuk **satu tanggal**: cabang awal, cabang akhir, pelanggan yang dikunjungi, dan dokumen yang harus ditagih atau dikirim. + +Tidak ada saklar pengulangan di formulir rencana. Pekerjaan berulang memakai **siklus**, lalu **Generate**. + +```plantuml +@startuml +start +if (Perlu rute mingguan berulang?) then (ya) + :Buat siklus dengan rute hari kerja; + :Generate rencana untuk rentang tanggal; +else (tidak) + :Buat rencana sekali jalan untuk satu tanggal; +endif +:Lampirkan faktur (penjualan) atau surat jalan (logistik); +:Tim lapangan membuka rencana di mobile; +stop +@enduml +``` + +## Rencana sekali jalan + +**Deskripsi halaman buat di aplikasi:** "Buat rencana harian sekali jalan untuk karyawan." + +1. Buka **Rencana Penjualan** atau **Rencana Logistik**. +2. Klik **Buat**. +3. Pilih **karyawan**, **tanggal** (hari ini atau setelahnya), **cabang awal**, dan **cabang akhir**. +4. Tambahkan **pelanggan** sebagai destinasi (urutan berpengaruh pada rute). +5. Setelah pelanggan dipilih: + - Rencana penjualan: lampirkan **faktur** pelanggan itu + - Rencana logistik: lampirkan **surat jalan** pelanggan itu +6. Simpan. Status **Draft**, **Aktif**, atau **Diarsipkan** seperti data master lain. + +Anda dapat meninjau pratinjau pelanggan dan dokumen terlampir di formulir. + +Menyimpan rencana penjualan **tidak** mengubah status faktur. + +## Siklus mingguan (berulang) + +

Penjualan → Data → Siklus Penjualan, atau Logistik → Data → Siklus Logistik

+ +Siklus adalah **templat kunjungan mingguan** untuk satu karyawan: nomor siklus dan, untuk setiap hari, apakah hari itu aktif, cabang awal/akhir, dan pelanggan. + +1. Buat siklus untuk karyawan. +2. Aktifkan hari kerja dan isi rutenya. +3. Setel siklus ke **Aktif**. + +## Generate rencana dari siklus + +Di daftar rencana, klik **Generate**. + +1. Pilih **karyawan**. +2. Pilih tanggal **dari** dan **sampai**. +3. Konfirmasi. Aplikasi membuat rencana harian dari siklus dan melaporkan berapa yang **dibuat** dan **dilewati** (misalnya jika rencana sudah ada). + +## Siapa yang memakai rencana + +- **Operator web** membuat dan men-generate rencana, lalu melampirkan dokumen. +- **Sales dan driver di mobile** melihat rencana hari ini setelah rencana itu ada. Mereka dapat menambah pelanggan ke rencana yang sudah ada; mereka tidak dapat membuat rencana baru di ponsel. + +Lihat [Kerja harian mobile](/id/user/mobile/daily-work). diff --git a/apps/docs-dev/src/id/user/web/sales-workflow.md b/apps/docs-dev/src/id/user/web/sales-workflow.md new file mode 100644 index 0000000..a26354a --- /dev/null +++ b/apps/docs-dev/src/id/user/web/sales-workflow.md @@ -0,0 +1,154 @@ + + +# Alur penjualan + +

Penjualan → Aktivitas

+ +Cara menjalankan penjualan: dari permintaan atau pesanan, melalui packing dan faktur, sampai pembayaran. + +Anda perlu izin untuk melihat setiap menu. Tombol status (Process, Complete, Submit, Approve, dan seterusnya) hanya muncul jika Anda boleh mengubah data. + +## Sebelum mulai + +Siapkan data yang dibutuhkan setiap dokumen penjualan: + +| Yang dibutuhkan | Tempat membuat | +| --- | --- | +| Divisi, cabang, pelanggan, produk | [Pengaturan → Data](/id/user/web/setup) | +| Sales | Penjualan → Data → Karyawan | + +Jika menu tidak muncul, minta administrator memberi hak akses **Lihat** (dan **Ubah** untuk tombol status) pada area itu. + +## Alur biasa + +```plantuml +@startuml +start +:Permintaan penjualan (opsional); +:Pesanan penjualan (Draft); +:Process pesanan; +fork + :Faktur penjualan dibuat; +fork again + :Surat jalan dibuat\n(kecuali dilewati); +end fork +if (Ada surat jalan?) then (ya) + :Complete kuantitas terkirim; +endif +:Buat pembayaran penjualan; +:Submit lalu Approve; +stop +@enduml +``` + +1. Opsional buat dan setujui **permintaan penjualan**. +2. Buat **pesanan penjualan** (dari permintaan, atau dari awal). +3. Buka pesanan Draft dan klik **Process**. Biarkan **Generate packing slip** tercentang kecuali Anda tidak butuh surat jalan. Process membuat **faktur penjualan**, dan **surat jalan** kecuali dilewati. +4. Jika ada surat jalan, buka **Logistik → Surat Jalan**, lalu **Complete** dan isi berapa yang terkirim. +5. Buka faktur dan klik **Create Sales Payment**. **Submit** pembayaran, lalu **Approve** (atau **Reject** / **Rollback**). + +Anda juga dapat [impor CSV](/id/user/web/import) untuk permintaan, pesanan, faktur, dan pembayaran. + +## Permintaan penjualan + +

Penjualan → Aktivitas → Permintaan Penjualan

+ +Permintaan bersifat opsional. Anda dapat langsung ke pesanan penjualan. + +1. Klik **Buat**. Isi tanggal, sales, cabang, divisi, pelanggan, alamat, dan minimal satu produk beserta kuantitas. Harga produk dan kode dokumen opsional. Simpan. +2. Saat status **Draft**, klik **Submit** untuk dikirim ke persetujuan. Anda juga dapat memakai **Change status** untuk menandai **Rejected**. +3. Saat **Pending**, klik **Approve** atau **Reject**. **Change status** dapat mengembalikannya ke **Draft**. +4. Setelah **Approved**, tidak ada langkah lagi pada permintaan itu sendiri. +5. Di halaman detail permintaan, klik **Create Sales Order**. Formulir pesanan terbuka dengan pelanggan, lokasi, dan produk dari permintaan. + +## Pesanan penjualan + +

Penjualan → Aktivitas → Pesanan Penjualan

+ +1. Klik **Buat**. Isi detail yang sama seperti permintaan. Pada pesanan baru Anda dapat memilih permintaan penjualan di **Source**; itu menyalin permintaan ke formulir. Simpan. Pesanan baru berstatus **Draft**. +2. Pada pesanan **Draft**, klik **Process**. + - Anda akan melihat: *Processing creates a sales invoice and, unless skipped, a packing slip.* + - **Generate packing slip** tercentang secara default. Hapus centang jika tidak ingin surat jalan. +3. Pada **Draft** atau **Processed**, Anda dapat **Cancel**. Tidak ada tombol **Complete** pada pesanan. Jika pesanan kemudian menampilkan **Completed**, itu bukan tombol yang Anda klik di layar ini. +4. Di halaman detail pesanan Anda dapat melihat surat jalan dan faktur terkait, serta klik **Create Sales Invoice**. + +Anda dapat memilih beberapa pesanan lalu Process atau Cancel bersama, selama semuanya dalam status yang mengizinkan aksi itu. + +## Surat jalan + +Surat jalan ada di **Logistik**, bukan Penjualan. Lihat [Logistik](/id/user/web/logistics). + +## Faktur penjualan + +

Penjualan → Aktivitas → Faktur Penjualan

+ +Faktur muncul ketika Anda **Process** pesanan. Anda juga dapat membuatnya sendiri, opsional dari pesanan atau surat jalan. + +Pada faktur, satu-satunya tombol status adalah **Cancel** (saat faktur **Draft**, **Processed**, atau **Partial**). Anda tidak dapat memilih Processed, Partial, atau Completed sendiri. Label itu tetap bisa tampil di faktur. + +Di halaman detail faktur, klik **Create Sales Payment**. Formulir pembayaran terbuka dengan faktur itu dan sisa saldonya. + +Anda dapat melampirkan faktur ke [rencana penjualan](/id/user/web/plans). Menyimpan rencana tidak mengubah status faktur. + +## Pembayaran penjualan + +

Penjualan → Aktivitas → Pembayaran Penjualan

+ +1. Klik **Buat**. Isi tanggal dan minimal satu baris: faktur dan jumlah. Gambar dan catatan opsional. Simpan. Pembayaran baru berstatus **Draft**. +2. Klik **Submit** untuk pindah ke **Pending**. Anda juga dapat memakai **Change status** untuk menandai **Rejected**. +3. Saat **Pending**, klik **Approve**, **Reject**, atau **Rollback** (kembali ke **Draft**). +4. Setelah **Approved**, status tidak dapat diubah lagi. Pembayaran **Rejected** dapat dikembalikan ke **Draft** dengan **Change status**. + +Menyetujui pembayaran tidak mengubah status faktur dari layar ini. Muat ulang faktur jika Anda perlu melihat saldo terbaru. + +Tim lapangan juga dapat [mencatat pembayaran di mobile](/id/user/mobile/daily-work) dari faktur belum lunas. + +## Yang dapat dilakukan di setiap status + +**Tombol** adalah aksi berlabel di daftar atau halaman detail. **Change status** adalah dialog terpisah yang menampilkan status yang boleh dipilih. Faktur tidak punya Change status. + +### Permintaan penjualan dan pembayaran penjualan + +Keduanya memakai Draft → Pending → Approved atau Rejected. + +| Status saat ini | Tombol | Change status | +| --- | --- | --- | +| Draft | Submit | Rejected | +| Pending | Approve, Reject. Pembayaran juga punya Rollback (kembali ke Draft) | Draft, Approved, Rejected | +| Approved | — | — | +| Rejected | — | Draft | + +### Pesanan penjualan + +| Status saat ini | Tombol | Change status | +| --- | --- | --- | +| Draft | Process, Cancel | Processed, Cancelled | +| Processed | Cancel | Cancelled | +| Completed | — | — | +| Cancelled | — | — | + +**Process** selalu membuka dialog centang surat jalan (bukan Change status). + +### Faktur penjualan + +Anda mungkin melihat Draft, Processed, Partial, Completed, atau Cancelled. + +| Status saat ini | Yang dapat dilakukan | +| --- | --- | +| Draft, Processed, atau Partial | Cancel | +| Completed | Tidak ada tombol status | +| Cancelled | Tidak ada tombol status | + +## Yang tidak perlu diklik + +Ini bukan tombol di layar: + +- **Complete** pada pesanan penjualan +- Mengatur faktur ke Processed, Partial, atau Completed sendiri +- Mengubah status faktur dengan menaruhnya di rencana penjualan +- Mengubah status faktur dengan menyetujui pembayaran +- Membatalkan pesanan, surat jalan, atau faktur dalam satu klik untuk semua dokumen terkait — **Cancel** hanya berlaku pada dokumen yang sedang dibuka + +Jika status dokumen terkait berubah setelah Anda bertindak, buka dokumen itu lagi untuk melihat nilai terbaru. diff --git a/apps/docs-dev/src/id/user/web/setup.md b/apps/docs-dev/src/id/user/web/setup.md new file mode 100644 index 0000000..bcc4fbd --- /dev/null +++ b/apps/docs-dev/src/id/user/web/setup.md @@ -0,0 +1,78 @@ + + +# Siapkan perusahaan + +

Pengaturan → Data dan Pengaturan → Pengguna

+ +Lakukan ini sebelum membuat rencana atau dokumen penjualan. Data yang dibutuhkan layar lain (cabang, divisi, pelanggan, produk, karyawan) harus sudah ada. + +## Pengaturan perusahaan + +**Menu:** Pengaturan → Data → Pengaturan perusahaan + +Ini formulir tunggal, bukan daftar. Simpan: + +| Kolom | Dipakai untuk | +| --- | --- | +| Tanggal awal siklus | Kapan siklus kunjungan mingguan mulai dihitung | +| Radius check-in (meter) | Seberapa dekat tim lapangan saat check-in | +| Interval GPS (detik) | Seberapa sering aplikasi mobile merekam jejak saat bertugas | +| Radius peringatan checkout (meter) | Kapan mobile memperingatkan bahwa pengguna meninggalkan kunjungan pelanggan | + +## Divisi, cabang, pelanggan, produk + +**Menu:** Pengaturan → Data + +Masing-masing berupa daftar dengan Buat, Detail, Ubah, dan Duplikat. Status: **Draft**, **Aktif**, atau **Diarsipkan**. + +| Data | Kolom umum | +| --- | --- | +| Divisi | Nama, kode | +| Cabang | Kode, nama, telepon, NFC ID, alamat, lokasi peta, divisi, hari dan jam kerja | +| Pelanggan | Kode, nama, telepon, alamat, lokasi peta, NFC ID; kontak saat membuat | +| Produk | Kode, nama, satuan, harga, merek | + +Pilih lokasi di peta untuk cabang dan pelanggan (atau ketik lintang dan bujur). + +## Karyawan + +Karyawan dipisah menurut tujuan: + +| Menu | Jabatan | +| --- | --- | +| Penjualan → Data → Karyawan | Sales | +| Logistik → Data → Karyawan | Driver, crew | + +Kolom: kode, nama, telepon, jabatan. Kemudian tautkan **pengguna** ke karyawan agar mobile tahu harus memuat rencana penjualan atau logistik. + +## Hak akses + +

Pengaturan → Pengguna → Hak Akses

+ +Hak akses adalah kumpulan izin bernama. Di formulir, isi **nama**, **kode**, dan matriks izin. Untuk setiap area Anda dapat mengizinkan: + +- **Lihat** — tampilkan menu dan buka halaman +- **Buat** — buat dan duplikat +- **Ubah** — edit dan ubah status +- **Hapus** — hapus +- **Impor** — impor CSV pada daftar yang didukung + +Tanpa **Lihat**, item itu disembunyikan dari sidebar. + +## Pengguna + +

Pengaturan → Pengguna → Pengguna

+ +1. Klik **Buat**. +2. Isi **username** dan **password** (wajib saat membuat; saat mengubah, kosongkan untuk tetap memakai kata sandi saat ini). +3. Pilih **hak akses**. +4. Opsional tautkan **karyawan** agar login lapangan terhubung ke penjualan atau logistik. + +Aktifkan pengguna ketika mereka boleh masuk. + +## Segera hadir + +- **Ingat saya** di formulir masuk web tidak disimpan +- **Lupa Kata Sandi** belum tersedia diff --git a/apps/docs-dev/src/id/user/web/timeline.md b/apps/docs-dev/src/id/user/web/timeline.md new file mode 100644 index 0000000..b2380f8 --- /dev/null +++ b/apps/docs-dev/src/id/user/web/timeline.md @@ -0,0 +1,38 @@ + + +# Timeline + +

Timeline di sidebar

+ +Timeline menampilkan jejak GPS dan aktivitas lapangan **satu hari** untuk karyawan **sales**. Ini pemutaran ulang dari yang disimpan aplikasi mobile saat orang itu bertugas, bukan umpan langsung. + +## Cara memakai + +1. Buka **Timeline**. +2. Pilih **Tanggal**. +3. Opsional saring **Karyawan** (karyawan sales), atau biarkan semua karyawan. +4. Cari aktivitas jika daftarnya panjang. +5. Ganti tab **Di perjalanan** dan **Selesai**. +6. Pakai **Playback** (Putar, Jeda, Waktu) untuk bergerak di sepanjang rute terekam. Overlay **Lokasi saat ini** adalah kursor playback, bukan titik GPS langsung. + +Jika tidak ada data untuk hari itu, peta menampilkan tidak ada data timeline. + +## Tampilan aktivitas + +Daftar dapat mencakup: + +- Check-in cabang / check-out cabang +- Check-in pelanggan / check-out pelanggan +- Sales order dibuat +- Sales request dibuat +- Pembayaran dibuat +- Pelanggan dibuat + +Jejak direkam di mobile setelah clock-in cabang, memakai **Interval GPS** di [pengaturan perusahaan](/id/user/web/setup). + +## Segera hadir + +- Pelacakan **langsung** sales atau driver di peta web +- Timeline khusus **logistik / driver** (layar ini memuat karyawan sales) diff --git a/apps/docs-dev/src/index.md b/apps/docs-dev/src/index.md index 6c0492f..111f4a6 100644 --- a/apps/docs-dev/src/index.md +++ b/apps/docs-dev/src/index.md @@ -73,205 +73,3 @@ import { ShoppingCart, Truck, Smartphone, MapPin } from 'lucide-vue-next' - -