Phản hồi người dùng thử — kế hoạch xử lý

Đợt phản hồi đầu tiên từ người thử nghiệm · 10 nhóm · soạn 30/06/2026 · DRAFT — INTERNAL · không phân phối

Mỗi nhóm gồm: nhận xét gốc (nguyên văn), hiện trạng trong hệ thống (file/dòng cụ thể), đề xuất kèm minh hoạ, mức độđiểm cần bạn quyết định. Đây là bản kế hoạch để bạn duyệt trước khi bắt tay — chưa có code nào được sửa. Tên/mã học sinh đã được giữ ngoài trang này (trang công khai).

Tóm tắt nhanh. Trong 10 nhóm: 2 là sửa nhãn/giao diện nhanh (mục 4, 6), 1 chỉ cần trả lời (mục 10), 4 là dựng tính năng mới (mục 1, 2, 3, 5), và 3 cần bạn chốt hướng trước khi làm (mục 7, 8, 9). Mục 1 (quy trình khảo sát → thực địa → xét chương trình) là việc lớn nhất và đáng làm trước vì nó là khung cho cả mùa tuyển chọn.
Cập nhật 30/06/2026 (chiều) — đã có quyết định của bạn:
  • #8 → ô tự do (free text). Đã chốt, mục 8 chuyển sang "làm được".
  • #9thay bản cũ + giữ một bản lưu trữ. Đã chốt (Phương án A + lưu trữ theo ngày).
  • #7 → mình đã mở đúng báo cáo trường THCS Tam Thanh bạn gửi (đọc qua tài khoản dịch vụ của Quỹ, không cần MCP). Cấu trúc thật: tiêu đề không đánh số, đếm các mục cấp 1 thì mục 7 = "Nguồn ghi chú (trong kỳ)", mục 8 = "Phủ rộng 8 cánh". Khớp đúng nhận xét của bạn. Chi tiết + xử lý "6.1" ở mục 7 bên dưới.
  • #5 → "đã nhận" = tiền thực nhận vào tài khoản (sổ tài chính, Khu vực 3/4), KHÔNG phải số cam kết. Đã cập nhật mục 5; lưu ý đây là việc lớn hơn vì phải nối phía tài chính với phía học sinh.
Đang làm async qua Claude Code Web (khi bạn vắng): mục 4, 6, 8, 9 + phần đã chốt của mục 7 — chỉ sửa code + test + commit lên nhánh, không deploy, không ghi dữ liệu sống (môi trường Web chỉ đọc dữ liệu). Mình hoặc bạn deploy sau từ máy Windows.

Tổng hợp

ViệcLoạiMức độ
1Quy trình khảo sát & xét chương trình: nạp danh sách → tạo case hàng loạt; app điện thoại ghi thực địa; báo cáo Excel để họp xét; thêm trường (Dân tộc); tách người giám hộ ↔ thành viên gia đìnhDỰNG MỚILớn (chia 5 phần)
2Phiếu thực địa: 1 người điền, các thành viên khác bổ sung góc nhìn / ghi chú / bình luậnDỰNG MỚIVừa
3Cách nạp tài liệu: bài viết, SEL, học bạ / KQHT…DỰNG MỚIVừa
4Chuyển giao đoạn (sổ tay HS) — ai điền khi HS chuyển cấp 2→cấp 3, và đổi 5 nhãn trườngSỬA NHANHNhỏ
5Phân tích: BC tài trợ đã nhận + BC tài trợ đã chi (đã làm rõ yêu cầu)DỰNG MỚIVừa
6Đổi nhãn tab "Trợ giúp" → "Mẫu văn bản"SỬA NHANHRất nhỏ
7BC trường: thêm theo năm học & tất cả các năm, thêm SL HS ban đầu; mục 7 (Nguồn ghi chú) — bỏ; mục 8 → anh chị em tham gia lớp HMT; "6.1" cần xác nhậnPHẦN LỚN ĐÃ RÕVừa
8Tài trợ / khen thưởng hiện vật: ghi chi tiết là gì — ô tự doĐÃ CHỐT · LÀMNhỏ
9Tạo lại cùng báo cáo thì thay bản cũ — thay + giữ lưu trữĐÃ CHỐT · LÀMNhỏ–Vừa
10Phiếu khảo sát / thực địa có giới hạn số ký tự mỗi trường không?TRẢ LỜI

Sơ đồ quy trình mong muốn (mục 1)

Nhận xét mục 1 mô tả trọn vòng tuyển chọn. Đây là sơ đồ đích — ô tím tô đậm là phần cần dựng mới; ô vàng là phần đã có.

1 · Nạp danh sách trườngExcel/Sheet đề xuất → tạo case hàng loạt (1a)
2 · Case trên hubDanh sách "Chờ xét chọn" (đã có)
3 · Thực địaĐPV mở case trên điện thoại, thêm ảnh + thông tin tại chỗ (1b)
4 · Họp xétXuất Excel đầy đủ thông tin để thảo luận (1c)
5 · Xét duyệtGán chương trình → mint mã HS + sổ tay (đã có)

Trường khảo sát hiện đã có: giới tính, người nuôi dưỡng (tên/quan hệ/SĐT). Cần thêm: Dân tộc (1d) và tách 1 người giám hộthành viên gia đình khác (1e).

Chi tiết

1 — Quy trình khảo sát & xét chương trình DỰNG MỚI · 5 phần

Survey and program assignment procedure:
– List of proposed cases from school with prelim student information: UPLOAD THIS LIST AND CREATE CASES AUTOMATICALLY ON THE HUB
– At field trip coordinator will find the case on the hub and add photos, onsite information… SUGGEST TO MAKE AN APP ON CELL PHONE FOR THIS TASK?
– After field trip HMT members will discuss and assign student to appropriate program: NEED A FULL INFORMATION REPORT IN EXCEL FORMAT TO REVIEW AND DISCUSSION
– Fields to be added to the current survey form: Dan toc, gioi tinh…
– Nguoi giam ho fields: only 1 nguoi giam ho, others: thanh vien gia dinh

1a · Nạp danh sách đề xuất từ trường → tạo case hàng loạt

Hiện trạng: case chỉ tạo từng cái một qua biểu mẫu khảo sát Google. Mỗi lần submit, survey_intake.create_survey_folder() (tools/survey_intake.py:242–328) chèn 1 dòng candidate (so-khao-sat.sqlite) + tạo thư mục Drive + ghi phieu_json. Chưa có đường nạp hàng loạt.

Đề xuất:

  1. Công cụ mới tools/survey_import.py + route hub POST /survey/import: tải lên 1 file Excel/CSV/Sheet (đúng mẫu cột), mỗi dòng → 1 case cho-xet-chon, dùng lại đúng logic create_survey_folder (mint ung-vien-NNNN, tạo thư mục anh/, ghi phieu_json).
  2. Bản đồ cột bám theo các trường phiếu hiện có (họ tên, trường, lớp, người nuôi dưỡng, SĐT, hoàn cảnh…). Dòng thiếu trường bắt-buộc-khi-xét (tên / người nuôi dưỡng / SĐT) vẫn tạo được nhưng gắn cờ "thiếu thông tin" để bổ sung ở thực địa.
  3. Phát kèm mẫu Excel chuẩn để các trường điền (đặt ở tab Mẫu văn bản — xem mục 6) để cột khớp 1-1 khi nạp.
  4. Idempotent: nạp lại cùng file không nhân đôi case (khử trùng theo tên + trường + ngày sinh, dòng nghi trùng đưa vào review).

1b · Ghi thông tin thực địa — có nên làm app điện thoại?

Hiện trạng: thư mục case đã có anh/ cho ảnh, nhưng trang chi tiết case (survey_detail.html) chỉ đọc — không thêm ảnh / thông tin tại chỗ được. Thông tin thực địa hiện đi qua biểu mẫu khảo sát, không gắn vào case sẵn có.

Khuyến nghị: KHÔNG làm app cài đặt (native app) lúc này. Thay vào đó dựng trang web ghi thực địa tối ưu cho điện thoại (mobile-first, có thể "Thêm vào màn hình chính" như một PWA). Lý do: chạy trên mọi máy không qua App Store/Play Store, dùng lại đăng nhập hub sẵn có, không phí bảo trì 2 nền tảng, cập nhật tức thì. Một app native thật sự để dành giai đoạn sau nếu cần chụp/định vị offline.

Đề xuất (PWA ghi thực địa): trên /survey/{case_id} thêm khối "Ghi thực địa": chụp/tải ảnh thẳng vào anh/ của case, các ô thông tin tại chỗ (xác minh hoàn cảnh, quan sát nhà ở, ghi chú ĐPV) ghi bổ sung vào phieu_json + nhật ký case. Nút lớn, 1 cột, hợp ngón tay. Gắn liền với mục 2 (nhiều thành viên cùng góp ý).

1c · Báo cáo Excel đầy đủ để họp xét chương trình

Hiện trạng: chỉ có trang chi tiết HTML từng case; chưa có bản Excel gộp toàn bộ case chờ xét để mang ra họp.

Đề xuất: nút "Tải Excel để họp xét" trên /survey → xuất .xlsx (openpyxl), mỗi case 1 dòng, đầy đủ cột phiếu (đọc từ phieu_json qua hub_reads.survey_candidate_detail) + link thư mục Drive + link ảnh + đề xuất mức hỗ trợ + cờ thiếu thông tin. Có thể lọc theo trường / đợt. Đây là tài liệu hội đồng đánh dấu rồi quay lại hub bấm "Xét duyệt" để gán chương trình.

1d · Thêm trường vào phiếu khảo sát: Dân tộc, giới tính…

Hiện trạng: giới tính đã có trong phiếu (dropdown Nữ/Nam/Khác → phieu.gioi_tinh). Dân tộc thì chưa.

Đề xuất: thêm Dân tộc (dropdown 54 dân tộc, hoặc free-text gợi ý) vào mục "Thông tin học sinh" của _system/forms/survey-form-v1.yaml. Bắt buộc đồng bộ 3 nơi nếu không trường mới sẽ rơi mất khi submit:

Nếu có trường khác muốn thêm (ví dụ số anh chị em, thuộc diện hộ nghèo/cận nghèo) — liệt kê luôn để gộp 1 lần sửa Form.

1e · Người giám hộ: chỉ 1 người, còn lại là thành viên gia đình

Hiện trạng: phiếu có một khối người nuôi dưỡng: carer_name / carer_relationship (mẹ/bố/ông-bà/giám hộ khác/khác) / carer_phone. Không có chỗ ghi các thành viên gia đình khác.

Đề xuất: giữ khối hiện tại làm người giám hộ duy nhất (đổi nhãn mục thành "Người giám hộ"), và thêm trường "Thành viên gia đình khác" (paragraph, mỗi dòng 1 người: họ tên · quan hệ · ghi chú). Lưu vào phieu.thanh_vien_gia_dinh + cột mới. Hiển thị thành danh sách ở trang chi tiết case và trong sổ tay sau khi admit.

Cần bạn quyết định: (i) thứ tự ưu tiên 1a–1e; (ii) Dân tộc dùng dropdown 54 hay free-text; (iii) còn trường nào thêm vào phiếu nữa không (gộp 1 lần sửa Form); (iv) đồng ý hướng "trang web mobile-first / PWA" thay cho native app.

2 — Phiếu thực địa: nhiều thành viên cùng góp ý DỰNG MỚI

Field trip form: to be filed by 1 person but other members can add their own view, notes, comments to.

Hiện trạng: phiếu thực địa (_system/forms/coordinator-brief-form-v1.yaml) một người điền, kết quả là một brief.yaml duy nhất trong thư mục sự kiện. Có sẵn quote_1..7event_extra_content nhưng đó là nội dung của người điền, không phải luồng góp ý nhiều người.

Đề xuất: thêm luồng bình luận theo sự kiện/ca:

  1. 1 người điền phiếu chính (như hiện nay) → tạo sự kiện/case.
  2. Trên trang chi tiết sự kiện (hub), bất kỳ thành viên đăng nhập nào cũng "Thêm góp ý": tên · thời điểm · nội dung, ghi nối tiếp (append-only, không sửa của người khác). Lưu vào bảng comment mới khóa theo event_slug (hoặc case_id với khảo sát), hoặc một sidecar gop-y.yaml bên cạnh brief.yaml.
  3. Góp ý hiện cùng phiếu để khi viết caption / khi họp xét đọc đủ nhiều góc nhìn.

Việc này dùng chung hạ tầng với 1b (ghi thực địa trên điện thoại) — nên làm cùng một lượt: trang chi tiết case/sự kiện vừa thêm ảnh + thông tin, vừa nhận góp ý nhiều người.

Cần chốt: phạm vi áp dụng — chỉ phiếu thực địa sự kiện (Stream A), hay cả case khảo sát (mục 1b), hay cả hai? Khuyến nghị làm cho cả hai vì cùng một mẫu.

3 — Cách nạp tài liệu: bài viết, SEL, học bạ / KQHT DỰNG MỚI

How to upload information: essays, SEL, school reports….

Hiện trạng: đã có ô nạp tài liệu theo từng học sinh trên hub — /children/{code}/school-doc (app/templates/school_doc.html) — nhưng chỉ 4 loại: học bạ, sổ điểm, chuyên cần, họp phụ huynh. Bài viết (viết văn) và SEL (đánh giá cảm xúc-xã hội) chưa có loại riêng trên hub; chúng hiện đi qua biểu mẫu "Upload tài liệu" chung (HMT_UPLOAD_FORM_ID) hoặc thư mục thả, rồi phân loại tay.

Hub — theo HShọc bạ · sổ điểm · chuyên cần · họp PH (đã có)
+ bài viết · SEL · báo cáo khácthêm loại mới
Form Google chungthả tệp → triage tay (đã có)
Email / thư mục thảlane sẵn (một phần chưa bật)

Đề xuất:

  1. Mở rộng ô nạp theo-học-sinh thêm loại: bài viết / viết văn (→ essay_score + lưu bản gốc), phiếu SEL / đánh giá cảm xúc-xã hội (→ school_report/se hoặc ghi chú có cánh), và báo cáo trường khác (prose chung → profile_entry kèm nguồn gốc).
  2. Đặt ô nạp trên hub làm đường chính thức, và viết một trang "Cách nạp tài liệu" (ở tab Mẫu văn bản / Trợ giúp) liệt kê rõ 4 kênh: hub (chính), Form Google chung, email, thư mục thả — mỗi kênh dùng khi nào.
  3. Mọi tài liệu nạp đều giữ bản gốc trong Tai-lieu-goc/ của HS + một dòng source_doc để mọi dữ kiện truy ngược được (đúng quy tắc care-data v2).

Cần chốt: bài viết và SEL có cần trích xuất tự động (OCR/AI rút trường) như học bạ không, hay chỉ lưu bản gốc + nhập tay vài trường chính?

4 — Chuyển giao đoạn (sổ tay HS): ai điền + đổi 5 nhãn SỬA NHANH

Chuyen giao doan (so tay HS) comments: HS chuyen cap 2 sang cap 3: coordinator to file?
– Hanh dong = Su kien · Ngay tot nghiep = Thoi diem · Ly do roi = Ly do · Noi hoc tiep = Noi chuyen tiep · Lop moi = T/tin khac

Ai điền? Đúng — điều phối viên điền trên hub. Khi HS chuyển cấp 2 → cấp 3, mở trang HS /children/{code}, dùng khối "Chuyển giai đoạn / tốt nghiệp" (app/templates/child.html:182–208, gửi tới POST /children/{code}/transition). Một bước chuyển cấp = hành động "tốt nghiệp & học tiếp" + nhập trường mới. Đề xuất nhỏ: thêm hẳn một lựa chọn hành động "Chuyển cấp" cho rõ nghĩa (thay vì mượn "graduate-continue").

Đổi nhãn (chỉ đổi chữ hiển thị; giữ nguyên tên cột DB — không đụng dữ liệu). Việc đổi này cũng làm phiếu tổng quát hơn, hợp cả chuyển cấp chứ không chỉ tốt nghiệp:

Nhãn cũNhãn mớiVị trí
Hành độngSự kiệnchild.html:184
Ngày tốt nghiệpThời điểmchild.html:193 · CSV app/main.py:552 · banner child.html:28–34
Lý do rờiLý dochild.html:194 · sổ tay §2 so_tay.py:624 · banner
Nơi học tiếp (ĐH/CĐ)Nơi chuyển tiếpchild.html:204 · banner
Lớp/bậc mớiT/tin khácchild.html:205

Mức độ: nhỏ, gần như chỉ sửa chuỗi + 1 lựa chọn dropdown mới. Rủi ro thấp. Lưu ý: "Nơi học tiếp (ĐH/CĐ)" đổi thành "Nơi chuyển tiếp" thì bỏ gợi ý "(ĐH/CĐ)" để dùng được cho cả lên cấp 3.

5 — Phân tích: BC tài trợ đã nhận + đã chi DỰNG MỚI

Phan tich: – BC tai tro da nhan – BC tai tro da chi

Hiện trạng: trang Phân tích có bảng "Phúc lợi theo nguồn tài trợ" (app/main.py:1576–1608) gộp cam kết (dòng register_entry kind=funding) với phúc lợi per-student. Chưa tách rạch ròi tiền vào (đã nhận) với tiền ra (đã chi cho HS).

BC tài trợ ĐÃ NHẬNcam kết thỏa thuận (register_entry) + đóng góp nhà tài trợ (Khu vực 3/4)
Quỹtheo trường · năm · nguồn
BC tài trợ ĐÃ CHIphúc lợi đã trao cho HS (benefit: tiền + hiện vật)
Làm rõ yêu cầu (bạn nói "chưa rõ"). Hai báo cáo này thực ra là hai vế của một dòng tiền, và báo cáo trường đã hiện cả hai ở cấp một trường — việc cần làm là gom lên cấp toàn Quỹ trong tab Phân tích. Lấy đúng số thật của THCS Tam Thanh (báo cáo bạn gửi) làm ví dụ:
Báo cáoLà gìNguồn dữ liệuVí dụ THCS Tam Thanh
Tài trợ ĐÃ NHẬNTiền Quỹ thực nhận vào tài khoản từ nhà tài trợ (quyết định 30/06: tiền thực nhận, không phải số cam kết)sổ tài chính phía nhà tài trợ — so-tai-chinh.sqlite / đóng góp đã ghi (Khu vực 3/4)lấy từ phía tài chính; số cam kết theo thỏa thuận (vd Tam Thanh 543.984.400đ) chỉ dùng để đối chiếu
Tài trợ ĐÃ CHITiền + hiện vật Quỹ thực trao tới học sinhdòng benefit (amount_vnd + amount_inkind) — chính là mục "Khen thưởng & hỗ trợ học sinh"7.350.000đ + 63 hiện vật

Đề xuất: trên tab Phân tích thêm hai bảng tổng toàn Quỹ (cộng mọi trường), mỗi bảng tách theo trường × năm học × nguồn:

  1. BC tài trợ đã nhận — tổng cam kết theo nguồn + năm học (từ register_entry).
  2. BC tài trợ đã chi — tổng đã trao cho HS theo trường + năm (từ benefit).
  3. Thêm cột chênh lệch (nhận − chi) = phần cam kết chưa giải ngân. Tránh cộng trùng: mỗi nguồn tính một lần ở mỗi vế.
Quyết định (bạn, 30/06): "đã nhận" = tiền thực nhận vào tài khoản. Nguồn dữ liệu là sổ tài chính phía nhà tài trợ (Khu vực 3/4), không phải số cam kết trong thỏa thuận. Hệ quả: đây là việc lớn hơn — cần nối phía tài chính (đóng góp/biên nhận) với phía học sinh (tài trợ trường) qua funding_source để biết khoản thực nhận nào ứng với trường/năm nào. Số cam kết theo thỏa thuận vẫn hiển thị làm cột đối chiếu (đã cam kết vs thực nhận vs đã chi). Việc này không nằm trong đợt async Web (cần dữ liệu + thiết kế nối hai khu vực) — xếp vào đợt có giám sát.

6 — Đổi nhãn "Trợ giúp" → "Mẫu văn bản" SỬA NHANH

Tro giup = Mau van ban

Hiện trạng: tab tên "Trợ giúp" (/tro-giup); bên trong đã có mục "Mẫu văn bản thường dùng" + "Biểu mẫu Google" + hướng dẫn. Nhãn tab nằm ở sidebar app/templates/hub/base.htmlapp/templates/base.html.

Đề xuất: đổi nhãn tab thành "Mẫu văn bản". Sửa chuỗi nhãn (giữ route /tro-giup để không vỡ link). Mức rất nhỏ.

Một điểm cần chốt: tab này hiện còn chứa biểu mẫu Google (phiếu hoạt động + khảo sát) và hướng dẫn gây quỹ — không chỉ mẫu văn bản. Bạn muốn (a) đổi cả tab thành "Mẫu văn bản" và để các thứ kia bên trong, hay (b) tách: tab "Mẫu văn bản" chỉ chứa mẫu, còn biểu mẫu/hướng dẫn sang chỗ khác? Khuyến nghị (a) cho nhanh, gọn.

7 — Báo cáo trường (BC trường) CẦN CHỐT

BC truong: add theo nam hoc va tat ca cac nam, add SL HS ban dau.
– Remove 6.1 item. – Item 7: what is it? – Item 8 = anh chi em tham gia lop HMT.

Hiện trạng — các mục BC trường (đánh số tự động từ thứ tự tiêu đề, tools/report_school.py:171–262):

#Mục hiện tạiNội dung
1Số học sinhTổng đã tham gia (mọi lứa) + theo trạng thái + bảng theo lứa. Chưa có "SL HS ban đầu" riêng.
2Tài trợ cấp trường (thỏa thuận)Tổng + theo năm học.
3Khen thưởng & hỗ trợ HSTiền mặt + đếm hiện vật.
4Kết quả học tập (KQHT)Top/Bottom theo GPA mới nhất.
5Đánh giá chungNarrative (Claude).
6Nhật ký trườngDòng thời gian sự kiện ghi nhận.
7Nguồn ghi chú (trong kỳ)Thống kê nội bộ: ghi chú đến từ trường / ĐPV. ← chính là "mục 7" bạn hỏi "là gì".
8Phủ rộng 8 cánhPhân bố ghi chú theo 8 cánh. ← "mục 8" bạn muốn thay bằng anh-chị-em.
9Em theo chương trìnhDanh sách theo từng chương trình (9.1, 9.2…).

Đã đọc báo cáo thật (THCS Tam Thanh, qua tài khoản dịch vụ của Quỹ): tiêu đề trong Doc không đánh số; cấu trúc cấp-1 đúng như bảng trên. Tiểu mục duy nhất giữa bài là §4 Top-5 / Bottom-5 điểm KQHT§9 theo chương trình — không có "6.1" theo nghĩa đánh số. Xử lý từng ý:

8 — Hiện vật: ghi chi tiết là gì ĐÃ CHỐT (ô tự do) · LÀM

Cac tai tro/ khen thuong hien vat: ghi chi tiet la gi.

Quyết định (bạn, 30/06): dùng ô mô tả tự do (không tách cấu trúc loại/số lượng/đơn vị).

Hiện trạng: đã có sẵn ô tự do — benefit.amount_inkind là TEXT ("1 xe đạp", "10 quyển vở"), hiện ở sổ tay (so_tay.py:699) và báo cáo HS (report_child.py:371–384). Vấn đề: (a) khi ghi phúc lợi hiện vật, mô tả không được nhắc/bắt nhập; (b) ở BC trường, hiện vật chỉ bị đếm số (report_school.py:133 — ví dụ thật "63 hiện vật"), không hiện là gì.

Sẽ làm:

  1. Form ghi phúc lợi (POST /benefits, app/main.py:771): khi loại = hiện vật, nhắc/bắt nhập mô tả ("ghi rõ hiện vật là gì") vào amount_inkind.
  2. Hiện mô tả ở mọi nơi — đặc biệt BC trường mục 3: thay "63 hiện vật" bằng danh sách/liệt kê "63 hiện vật: xe đạp, vở, áo ấm…".

9 — Tạo lại báo cáo thì thay bản cũ ĐÃ CHỐT (thay + lưu trữ) · LÀM

When a same report is created, have the old version one replaced.

Quyết định (bạn, 30/06): thay bản cũ VÀ giữ một bản lưu trữ.

Hiện trạng: tạo lại cùng báo cáo không ghi đè — so_tay.create_versioned_doc() (tools/so_tay.py:278–305) đẻ bản song song · bản 2, · bản 3… Kết quả: thư mục báo cáo đầy bản, đúng như bạn thấy.

Sẽ làm (thay tại chỗ + lưu trữ):

  1. Một Doc hiện hành duy nhất mỗi (loại báo cáo × trường/lứa): cập nhật nội dung ngay trong Doc cũ qua Docs API → link giữ nguyên, luôn là bản mới nhất, không còn "bản 2/3". Tận dụng logic dọn/khử trùng đã có trong report_index + _publish_report_doc (app/main.py:321–337).
  2. Lưu trữ bản cũ: trước khi ghi đè, copy bản hiện hành vào thư mục con Bao-cao/_luu-tru/<YYYY-MM-DD>/ để giữ vết lịch sử (không mất bản trước, nhưng không bày ra ngoài).

Lưu ý: phần "thay tại chỗ" cần Docs API + quyền ghi Drive sống → không chạy được trên Claude Code Web (chỉ-đọc). Web sẽ viết code + test với bản giả (fake Drive client); deploy + chạy thật làm sau từ máy Windows.

10 — Giới hạn số ký tự mỗi trường? TRẢ LỜI

In the survey/ field trip form is there any limit of typing character's number per field?

Trả lời: hệ thống của mình không đặt giới hạn riêng — không có ràng buộc độ dài trong file biểu mẫu (survey-form-v1.yaml, coordinator-brief-form-v1.yaml) cũng như trong code Cloud Run; câu trả lời được lưu nguyên văn, không cắt.

Giới hạn duy nhất là mặc định của Google Forms: ô ngắn (text) ~1.000 ký tự, ô đoạn văn (paragraph) ~40.000 ký tự. Hầu hết trường hoàn cảnh/ghi chú là đoạn văn nên dư sức.

Nếu bạn muốn: mình có thể (a) thêm nhắc độ dài gợi ý cho vài ô (ví dụ tóm tắt sự kiện nên ≤ X chữ để caption gọn), hoặc (b) xác nhận đang có ô nào bị người dùng than là chạm giới hạn — cho mình biết ô cụ thể.

Bước tiếp theo cho điều phối viên / Editor.

  1. ĐANG LÀM (async, Web) mục 4 (đổi 5 nhãn + lựa chọn "Chuyển cấp"), 6 (đổi tab → "Mẫu văn bản"), 8 (hiện vật ô tự do + liệt kê), 9 (thay tại chỗ + lưu trữ), và phần đã rõ của 7 (theo năm học, SL HS ban đầu, bỏ mục 7 Nguồn ghi chú, thay mục 8 bằng anh-chị-em). Web chỉ sửa code + test + commit lên nhánh — không deploy, không ghi dữ liệu sống; deploy sau từ máy Windows.
  2. Còn 1 ý cần bạn xác nhận (mục 7): "6.1" có phải là bảng §4.2 Bottom-5 điểm thấp nhất (bỏ) không? Mặc định mình sẽ bỏ bảng đó.
  3. Mục 5: "đã nhận" = tiền thực nhận vào tài khoản (sổ tài chính). Việc lớn hơn — cần nối Khu vực 3/4 với phía học sinh; xếp đợt có giám sát, không nằm trong async Web.
  4. Việc lớn, xếp lịch theo đợt (làm sau, có giám sát): mục 1 (5 phần — đề nghị 1a + 1c trước cho mùa xét chọn, rồi 1b/1d/1e), mục 2 (góp ý nhiều người — gộp hạ tầng với 1b), mục 3 (mở rộng ô nạp + trang "cách nạp"), và phần triển khai sống của 5/7/8/9.
  5. Mọi thay đổi dữ liệu sống (DB care) vẫn theo kỷ luật: sao lưu + tạm dừng hub + xác minh; không gì rời workspace ngoài /approve (Phase A).

Trang này là bản kế hoạch DRAFT — INTERNAL, chưa sửa code. Tên/mã học sinh được giữ ngoài trang (trang công khai).