# 2026-09-27

## Bersih-bersih teks China (perintah Bos: "jangan sampai ada text china disini")

Jam 10:10 WIB Bos menyinggung soal teks China. Hasil sisir:

**1. Yang kelihatan di chat** — laporan cron job `studiosoft-healthcare-carousel-harian` (output 26 Sep 19:04) ditulis PENUH dalam bahasa China, termasuk di kolom prompt-nya. Laporan itu terkirim ke Telegram. Satu-satunya dari 30+ file output cron yang kena.

**2. Jadwal Repliz** — 2.156 jadwal (semua status, semua akun) discan caption/title/reply-nya: **0 karakter CJK**. Aman.

**3. Website live klien** — 12 domain, 1.366 artikel discan via WP REST: **6 artikel kena di 4 domain**. Sudah diperbaiki via `perbaiki_teks_china_web.py --run` (ganti persis 1 pola di `content.raw`, verifikasi baca balik):

| Domain | Post | Teks China | Jadi |
|---|---|---|---|
| studiosoft.id | 4143 | `痛点` | pain point |
| studiosoft.id | 3749 | `Berkel延续tan` | Berkelanjutan |
| abimataconsultant.com | 27555 | `看起来很` | terlihat mengesankan |
| leitsurabaya.com | 3864 | `同时` | sekaligus |
| dmark.id | 2532 | `期待` | mengharapkan |
| dmark.id | 2322 | `痛点` | pain point |

Ke-6 halaman dicek ulang: HTTP 200, 0 karakter CJK. Catatan: WP REST `content.rendered` sempat balas versi lama ~4 menit setelah PUT (cache), jadi verifikasi pakai `context=edit` (raw) atau tunggu cache lewat.

**4. File kerja di workspace** — 6 file kena artefak sisipan: `ss_sasaran_faq.json`, `dmark_post_caption.md` (admin ada `Ok aquí` bahasa Spanyol juga), `LEIT_deskripsi_website.md`, `leit_artikel_21_soft_skills_ai.md`, `10_artikel_abimata.html`, `threads_cross_reply.py`. Semua sudah dirapikan.

**Pitfall baru — Cloudflare meng-cache WP REST 30 hari.** `GET /wp-json/wp/v2/posts?...` dari studiosoft.id balas `cf-cache-status: HIT`, `cache-control: max-age=2592000`, `age: 346`. Cache key = URL penuh, jadi hasil scan bisa memantulkan isi LAMA walau artikelnya sudah diperbaiki (sempat bikin scan lapor "2 temuan" padahal sudah bersih). Aturan: verifikasi lewat `context=edit` (autentikasi = bypass cache) atau tambahkan `&cb=<timestamp>`. `cek_teks_china_website.py` sudah pakai cache-buster.

**Pencegahan permanen:**
- `repliz_client.py`: fungsi `cek_teks_cjk()`, dipanggil di `create_schedule()` dan `update_schedule()` → caption/reply ber-CJK langsung `ReplizError`, tidak sampai ke API. Sudah diuji (teks bersih lolos, CJK tunggal/nested ditolak).
- `AGENTS.md` + skill `atun-social-automation`: aturan bahasa dilarang CJK.
- Skrip audit: `cek_teks_china.py` (jadwal), `cek_teks_china_website.py` (artikel live), `perbaiki_teks_china_web.py` (perbaikan).
- Akar masalah: menulis ulang teks panjang dengan mengetik ulang, bukan copy-paste dari sumber.

## Terbuka

- `das-short-daily` gagal schedule Threads & FB 25–27 Sep (slot 17:10/17:20 WIB, status ❌). Belum ditelusuri, sudah dilaporkan ke Bos.

## das-short-daily — ternyata TIDAK pernah gagal (ditutup 27 Sep)

Bos minta jadwal ulang mulai besok, 1 post/hari. Setelah ditelusuri:

- **Akar masalah: bug pelaporan, bukan bug posting.** `create_schedule()` di Repliz balas `{"scheduleId": "..."}`, sedangkan skrip lama mengecek `r.get('_id') or r.get('id')` → selalu `❌`. Jadwalnya sebenarnya terbuat dan tayang tiap hari. Diverifikasi dari API: DAS Threads sukses 25 & 26 Sep (10:10Z), DAS FB sukses 24–26 Sep (10:20Z), dan jadwal 27 Sep memang `pending`.
- **Perbaikan:** `repliz_client.create_schedule()` menormalkan respons → `_id`/`id` diisi dari `scheduleId` (sekali perbaiki, semua pipeline ikut sehat — pola `get('_id')` dipakai di 492 tempat).
- **Guard anti-dobel** di `das_short_daily.py`: cek slot dulu (`slot_terisi()`, filter `status=pending` + saring accountId di sisi klien — filter `accountId` TIDAK didukung API). Kalau slot sudah terisi → `⏭️ skip`. Logika create juga diperbaiki (tanggal dihitung ke UTC, bukan string `+07:00`), dan history hanya ditulis kalau memang ada jadwal baru.
- **Hasil:** 28 Sep 17:10 WIB Threads `6ab88bbd74292ea3cbe84c8b` + 17:20 WIB FB `6ab88bbf0723d7da884933fc`, keduanya terverifikasi `pending` dari API (media 0, replies 0, 296 & 535 char). Uji guard: jalan kedua → `⏭️` dua-duanya, tidak ada dobel.
- **Catatan:** hook topik overhaul diperbaiki ("dikerjakan tuntas sampai tuntas" → "dikerjakan tuntas"). History diberi kunci `catatan` yang menjelaskan status ❌ sebelum 27 Sep tidak akurat; entri uji guard yang kosong sudah dihapus (39 entri).
- ⚠️ Cron `fb-das-harian` (DAS FB) masih **disabled** sejak 14 Sep, tapi pipeline short ini tetap posting ke FB DAS tiap hari — perlu kepastian Bos.
