# User and Telegram Flows

## User Flow

1. User opens Telegram bot.
2. Bot displays main menu.
3. User types a reminder or taps `Tambah Reminder`.
4. Bot parses date, time, activity, and repeat mode.
5. Bot displays a preview.
6. User saves, edits, or cancels.
7. Saved data is written to Google Sheets.
8. Scheduler scans active rows.
9. Bot sends alarm at due time.
10. User marks done, snoozes, reschedules, or deletes.

## Telegram Menu Flow

```text
/start
  -> Tambah Reminder
  -> Jadwal Hari Ini
  -> Jadwal Minggu Ini
  -> Cari Reminder
  -> History
  -> Settings
```

## Reminder Creation Flow

```text
User text
  -> Natural date parser
  -> Reminder draft
  -> Preview card
  -> Save/Edit/Cancel
  -> Google Sheets append
  -> Confirmation card
```

## Reminder Search Flow

```text
/search keyword or menu search
  -> Google Sheets rows
  -> Filter by user and keyword
  -> Result list
  -> Reminder action buttons
```

## Scheduler Flow

```text
APScheduler interval tick
  -> Read active/snoozed reminders from Google Sheets
  -> Compare due_at <= now
  -> Send Telegram alarm
  -> Mark reminder as Terkirim
```

## Alarm Flow

```text
Alarm card
  -> Selesai
    -> One-time: Selesai
    -> Repeat: move to next due date and set Aktif
  -> Tunda 10 Menit
    -> Update date/time, status Ditunda
  -> Jadwalkan Ulang
    -> Ask for new natural date/time
  -> Hapus
    -> Confirmation
```

## Telegram UI Examples

```text
🔔 Reminder Preview

Kegiatan:
Meeting dengan Klien

Tanggal:
10 Juni 2026

Jam:
08:00

Repeat:
Tidak Ada

Apakah data sudah benar?

[✅ Simpan] [✏️ Edit] [❌ Batal]
```

```text
🔔 Alarm Kegiatan

Meeting dengan Klien

⏰ Sekarang Jam 08:00

Pilih aksi:

[✅ Selesai]
[⏳ Tunda 10 Menit] [🔁 Jadwalkan Ulang]
[🗑️ Hapus]
```

