# GUIDE: Dịch Transcript Myanmar → Việt (Vinaya)

> **Single source of truth** — mọi quy tắc dịch nằm ở đây.
> Cron job chỉ chứa script, rules được in từ file này qua Phase 1 exec.

---

## I. THUẬT NGỮ CHUẨN

| Myanmar | Việt | Ghi chú |
|---------|------|---------|
| ဦးဇင်း / အရှင် | quý sư / ngài | Xưng hô tăng |
| ဒကာ / ဒကာမ | thí chủ / nam thí chủ | Xưng hô cư sĩ |
| ဒကာကြီး / ဒကာမကြီး | ông thí chủ / bà thí chủ | Kính ngữ |
| ရဟန်း | Tỳ-khưu / chư Tăng | |
| သံဃာ | Tăng đoàn / chư Tăng | |
| တရား | Pháp / Giáo Pháp | |
| တရားဟော | thuyết Pháp | |
| တရားနာ | nghe Pháp | |
| ဝိနည်း | Luật Tạng / Vinaya | |
| သိက္ခာပုဒ် | điều học / giới điều | |
| အာပတ် | phạm tội / tội | |
| အနာပတ္တိ | không phạm tội | |

### Thuật ngữ Pāli — GIỮ NGUYÊN

| Pāli | Nghĩa |
|------|-------|
| Pārājika | Bất cộng trụ |
| Saṅghādisesa | Tăng tàn |
| Pācittiya | Ưng đối trị |
| Nissaggiya-pācittiya | Ưng xả đối trị |
| Dukkaṭa | Tác ác |
| Thullaccaya | Trọng tội |
| Sekhiya | Ưng học pháp / điều học |

Khi gặp từ Pāli trong transcript → **giữ nguyên dạng Pāli** + có thể thêm nghĩa Việt trong ngoặc nếu cần.

---

## II. VĂN PHONG

1. **Trang trọng, phù hợp văn bản Phật học** — không dùng ngôn ngữ đời thường
2. **Giữ nguyên giọng điệu giảng giải** — đây là transcript bài giảng, không phải kinh văn
3. **Trợ từ cuối câu Myanmar** (နော်, ပေါ့, ကိုး...) → dùng từ tương đương trong Việt (nhé, đấy, vậy...)
4. **Câu hỏi tu từ** → giữ nguyên cấu trúc hỏi-đáp
5. **Danh xưng** → giữ kính ngữ phù hợp (quý sư, ngài, thí chủ...)

---

## III. QUY TẮC DỊCH

### A. Cấu trúc câu
- **1 câu Myanmar → 1 câu Việt** (giữ nguyên số dòng, map 1:1 với SRT)
- Không gộp 2 dòng thành 1, không tách 1 dòng thành 2
- Không thêm số thứ tự hay timestamp

### B. Từ đồng âm
- ထီး = dù/ô (không phải "chạm")
- ဒုတ် = gậy (không phải "rút ra")
- တောင်ဝှေး = gậy chống
- လေး = cây cung (không phải "bốn")

### C. Trợ từ Myanmar → Việt
- နော် → nhé
- ပေါ့ → vậy, đấy
- ကိုး → đấy, đó
- ၏ → (kết thúc câu trang trọng, thường lược)

### D. Số đếm & trang
- စာမျက်နှာ ၇၂ → trang 72

---

## IV. ĐỊNH DẠNG OUTPUT

Mỗi dòng output:
```
[số thứ tự gốc] câu tiếng Việt
```

Ví dụ:
```
[0] Kính thưa quý sư, chúng ta xem trang 72 nhé.
[1] Trang 72, về việc không nên nghe Pháp khi đang cầm dù, gậy...
```

**KHÔNG thêm**:
- Giải thích
- Timestamp
- Dấu hiệu format khác

---

## V. GLOSSARY DATABASE

Database: `/home/tuan-nguyen/.openclaw/workspace/data/myanmar_pali_viet_terms_vec.db`
Table: `terms` (pali, myanmar, vietnamese, desc_vi, category)

Tra cứu trước khi dịch:
```python
import sqlite3
conn = sqlite3.connect('/home/tuan-nguyen/.openclaw/workspace/data/myanmar_pali_viet_terms_vec.db')
cur = conn.cursor()
cur.execute('SELECT pali, myanmar, vietnamese, desc_vi FROM terms ORDER BY category, id')
glossary = {r[0]: {'my': r[1], 'vi': r[2], 'desc': r[3]} for r in cur.fetchall()}
```

---

## VI. CRON JOB SETUP

### translate-batch-v1

```json
{
  "name": "translate-batch-v1",
  "schedule": { "kind": "every", "everyMs": 180000 },
  "sessionTarget": "isolated",
  "agentId": "translator",
  "payload": {
    "kind": "agentTurn",
    "model": "openrouter/google/gemini-3-flash-preview",
    "lightContext": true,
    "thinking": "off",
    "timeoutSeconds": 600,
    "message": "..."
  },
  "delivery": { "mode": "none" }
}
```

### Prompt (STATIC — cache hit 100%)

```
Bạn là Translator Agent dịch Myanmar → Việt cho bài giảng Vinaya.

═══════════════════
PHASE 1 (1 LLM call): CHẠY SCRIPT NÀY
═══════════════════

python3 /home/tuan-nguyen/.openclaw/workspace/012-trich-xuat-audio/scripts/phase1_select_batch.py

Script sẽ in ra: BATCH + GUIDE + SOURCE + GLOSSARY.
Nếu in "ALL_DONE": dừng, không làm gì.

═══════════════════
PHASE 2 (1 response, GỌI TẤT CẢ TOOL CÙNG LÚC)
═══════════════════

Đọc GUIDE, SOURCE, GLOSSARY từ Phase 1 → dịch.

GỌI ĐỒNG THỜI 2 TOOL SAU:

[TOOL 1] write → /home/tuan-nguyen/.openclaw/workspace/012-trich-xuat-audio/output/batches/{BATCH}_vi.txt
  Nội dung: bản dịch, 1 dòng/câu, giữ số thứ tự [0],[1]...

[TOOL 2] exec python:
  import json
  from datetime import datetime,timezone,timedelta
  PROJ="/home/tuan-nguyen/.openclaw/workspace/012-trich-xuat-audio"
  BATCH="{BATCH}"
  with open(f"{PROJ}/output/translation_progress.json") as f: data=json.load(f)
  for b in data["batches"]:
      if b["name"]==BATCH: b["status"]="done";b["completed_at"]=datetime.now(timezone(timedelta(hours=7))).isoformat()
  with open(f"{PROJ}/output/translation_progress.json","w") as f: json.dump(data,f,indent=2,ensure_ascii=False)
  print("OK")

→ Xác nhận: "Đã dịch xong {BATCH}"
```

### Cache Hit Strategy

- Prompt cron **hoàn toàn static** (~1.2K chars) → cache hit 100%
- Rules/glossary nằm trong GUIDE-TRANSLATION.md, được in qua exec output
- Mỗi batch chỉ có source khác nhau (~2K chars mới)
- Token mới/batch: ~5-8K (chỉ guide + source + glossary)
- Token static (cache hit): ~1K (prompt cron)

### Deploy

```bash
# Tạo cron job
openclaw cron add --name translate-batch-v1 --every 3m --session isolated \
  --agent translator --model openrouter/google/gemini-3-flash-preview \
  --light-context true --thinking off --timeout-seconds 600 \
  --delivery none \
  --message '...'  # prompt ở trên

# Enable
openclaw cron update translate-batch-v1 --enabled true
```
