Đợ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 độ và đ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).
| Mã | Việc | Loại | Mức độ |
|---|---|---|---|
| 1 | Quy 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 đình | DỰNG MỚI | Lớn (chia 5 phần) |
| 2 | Phiế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ận | DỰNG MỚI | Vừa |
| 3 | Cách nạp tài liệu: bài viết, SEL, học bạ / KQHT… | DỰNG MỚI | Vừa |
| 4 | Chuyể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ường | SỬA NHANH | Nhỏ |
| 5 | Phân tích: BC tài trợ đã nhận + BC tài trợ đã chi (đã làm rõ yêu cầu) | DỰNG MỚI | Vừa |
| 6 | Đổi nhãn tab "Trợ giúp" → "Mẫu văn bản" | SỬA NHANH | Rất nhỏ |
| 7 | BC 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ận | PHẦN LỚN ĐÃ RÕ | Vừa |
| 8 | Tài trợ / khen thưởng hiện vật: ghi chi tiết là gì — ô tự do | ĐÃ CHỐT · LÀM | Nhỏ |
| 9 | Tạo lại cùng báo cáo thì thay bản cũ — thay + giữ lưu trữ | ĐÃ CHỐT · LÀM | Nhỏ–Vừa |
| 10 | Phiế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 | — |
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ó.
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).
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
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:
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).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ó.
Đề 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 ý).
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.
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:
TITLE_TO_FIELD_ID trong cloud/apps-script/onSurveySubmit.gs:49–70 (tiêu đề câu hỏi → field id),candidate.dan_toc (ALTER an toàn) + nhãn ở _PHIEU_LABELS (hub_reads.py) + ô seed hồ sơ khi admit.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.
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.
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..7 và event_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:
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.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.
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.
Đề xuất:
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).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?
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ới | Vị trí |
|---|---|---|
| Hành động | Sự kiện | child.html:184 |
| Ngày tốt nghiệp | Thời điểm | child.html:193 · CSV app/main.py:552 · banner child.html:28–34 |
| Lý do rời | Lý do | child.html:194 · sổ tay §2 so_tay.py:624 · banner |
| Nơi học tiếp (ĐH/CĐ) | Nơi chuyển tiếp | child.html:204 · banner |
| Lớp/bậc mới | T/tin khác | child.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.
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).
| Báo cáo | Là gì | Nguồn dữ liệu | Ví dụ THCS Tam Thanh |
|---|---|---|---|
| Tài trợ ĐÃ NHẬN | Tiề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ợ ĐÃ CHI | Tiền + hiện vật Quỹ thực trao tới học sinh | dò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:
register_entry).benefit).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.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.html và app/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.
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ại | Nội dung |
|---|---|---|
| 1 | Số học sinh | Tổ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. |
| 2 | Tài trợ cấp trường (thỏa thuận) | Tổng + theo năm học. |
| 3 | Khen thưởng & hỗ trợ HS | Tiền mặt + đếm hiện vật. |
| 4 | Kết quả học tập (KQHT) | Top/Bottom theo GPA mới nhất. |
| 5 | Đánh giá chung | Narrative (Claude). |
| 6 | Nhật ký trường | Dòng thời gian sự kiện ghi nhận. |
| 7 | Nguồ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ì". |
| 8 | Phủ rộng 8 cánh | Phân bố ghi chú theo 8 cánh. ← "mục 8" bạn muốn thay bằng anh-chị-em. |
| 9 | Em theo chương trình | Danh 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 và §9 theo chương trình — không có "6.1" theo nghĩa đánh số. Xử lý từng ý:
nam-hoc=YYYY-YYYY đã có trong resolve_window (report_common.py:811–838).child.sibling_ids. Hiện thành từng cụm anh-chị-em (các em + lớp + lứa).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:
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.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ữ):
report_index + _publish_report_doc (app/main.py:321–337).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.
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.
/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).