Internal — mockup. The data on this page is illustrative sample data, not real events. Mocks up §7a / §7c of the v1 migration plan. noindex.

_system / plans · mockup

Media coordination dashboard — mockup

One row per event. This is the human surface that replaces STATUS.md. In production it's a Google Sheet in 05_Lich-va-ke-hoach/Phieu-va-bang-dieu-khien/, updated within seconds of each pipeline job (event-driven push). Cells with a pale-yellow background are edited by the administrator.

Form submit ──▶ Cloud Run creates folder (~3–5s) ──▶ upload photos ──▶ ingest poll (2–5') ──▶ intake → curate → draft → QC (automatic) ──▶ awaiting review ──▶ [admin: 1-click approve + tick dignity] ──▶ pack ──▶ admin posts manually ──▶ enter posted_id

Sheet 1 — Post coordination queue

Post queue
Community (Op 1)
Approval log
# event_slug folder state checklist gate_findings caption_fb (truncated) preview decision dignity_ok posted_id
1 2026-06-03__sinh-hoat-ky-nang-tam-thanh 📁 open awaiting upload brief✓photos… curatedraftQC none yet (awaiting photos)
2 2026-06-01__bua-an-nho-dai-an 📁 open processing brief✓photos✓ (24) curate✓ (5)draft…QC — (not at QC yet) writing…
3 2026-05-30__tham-quan-bach-dang-giang 📁 open awaiting review brief✓photos✓ (31) curate✓ (5)draft✓QC✓ G3 warn: missing blank line between paras 2–3.
G1,2,4,6,7 ✓
🌻 This morning at Bach Dang Giang wharf, 31 students from the Cùng em tiến bước class… 🖼 view pack read
4 2026-05-29__lan-toa-yeu-thuong-vinh-hao 📁 open awaiting review brief✓photos✓ (18) curate✓ (4)draft✓QC✓ G6 BLOCK: caption says "hundreds of students" — not matched to a Foundation record. Fix the number or remove it.
G4: 1 close-up of a child's face — review for dignity.
This year the Foundation has given gifts to hundreds of students… [number needs check] 🖼 view pack read
5 2026-05-27__tong-ket-nam-hoc-tam-thanh 📁 open approved · packed brief✓photos✓ (40) curate✓ (6)draft✓QC✓ all gates ✓ (G3 warn overridden) 🌻 A school year wraps up at THCS Tam Thanh. Six students received scholarships this term… 🖼 pack ready approved ✓ (An, 28/5 14:02) ↳ paste id after posting
6 2026-05-15__tham-truong-hoa-sua 📁 open published brief✓photos✓ curate✓draft✓QC✓ all gates ✓ 🌻 A visit to Hoa Sua school: the students got to make pastries with their own hands… 🖼 pack approved ✓ fb_122108…7755
7 2026-05-12__khao-sat-huong-son 📁 open rejected brief✓photos✓ (9) curate✓draft✓QC✓ gates clean just a scoping visit, not enough material for a story rejected (reason: internal survey)
awaiting upload form done, waiting for photos processing pipeline running awaiting review needs the administrator approved packed published has posted_id rejected
One approval = gate-8 folded in. The decision = approve cell only takes effect when dignity_ok is ticked (required checkbox). This is where the safeguarding sign-off and the editor approval merge into one, for the trial stage (§7g). If the administrator edits the caption directly in the caption_fb cell before approving, the webhook writes the edited version back to copy/facebook.md before packing (§7h).

Sheet 2 — Community (Op 1, preview)

A second tab for community-manager: comments / messages → a drafted reply → the administrator approves before it's sent (approval-gated, R1–R6).

#post_idcomment excerpt riskdrafted replydecision
1fb_…7755 "How can I donate to the Foundation?"low Thank you for your interest! Here's how you can support the Foundation…
2fb_…7755 "The second child from the left is my nephew, from … village" SAFEGUARDING Hide + escalate to safeguarding lead. Do not reply publicly (R1).
Note. Every state is still Phase A: no cell auto-posts to Facebook. The board only coordinates + serves as the review surface. The administrator is still the one who clicks "post" on Facebook and pastes the posted_id back. STATUS.md still exists inside each bundle as the machine ledger; this board is the human surface, synced from it.