ORIGINVN • APP STORE READINESS • 18/09/2026

Kiểm toán & Hướng dẫn đưa OriginVN lên App Store từ A–Z

Bản trình bày dành cho chủ dự án và đội kỹ thuật: app thực sự đang có gì, điểm nào cần sửa, chuẩn bị hình ảnh ra sao, điền thông tin trên App Store Connect thế nào và cách gửi Apple Review. Nội dung ưu tiên tiếng Việt dễ hiểu; thuật ngữ được giải thích ngay khi xuất hiện.

01. Kết luận nhanh

Hệ thốngTHẬTPhần lớn luồng chính đã nối từ giao diện → máy chủ → cơ sở dữ liệu.
App StoreCÓ THỂ BUILDNhưng cần xử lý các điểm rủi ro trước khi gửi lại Apple.
Ưu tiên20 VIỆCTrong đó có nhóm lỗi bảo mật và nhóm ảnh hưởng trực tiếp đến Apple Review.
🚨 Đặc biệt chú ý
Không nên gửi lại ngay. Báo cáo xác định 3 điểm GraphQL không kiểm tra đăng nhập/quyền, upload không yêu cầu xác thực, ràng buộc tạo batch chưa được bắt buộc; đồng thời App Review Notes cũ có câu nói không khớp với code về việc tự đăng ký tài khoản.
⚠️ Apple Review Risk
Có màn hình Financing “Coming Soon”, quyền vị trí “Always” được khai báo dù app chỉ dùng vị trí khi đang mở, và nội dung quyền camera nhắc quét QR dù app hiện không có chức năng quét QR trong mobile.
🟢 Phần đã xác nhận
Đăng nhập, tự đăng ký, ghi nhật ký GPS + ảnh, đồng bộ khi mất mạng, duyệt nhật ký, tạo mã truy xuất, tra cứu công khai và xóa tài khoản đều có triển khai thật theo báo cáo.

02. OriginVN thực chất là app gì?

OriginVN là hệ thống truy xuất nguồn gốc nông sản cho hợp tác xã/nông trại. Không phải app gọi xe, giao hàng, bán hàng hay thanh toán.

Thành phầnAi sử dụngLàm gì
MobileChủ yếu FARMERĐăng nhập, ghi nhật ký canh tác bằng GPS + ảnh, làm việc khi mất mạng, xem cảnh báo, hỏi trợ lý AI nông học.
CMSENGINEER / MANAGER / ADMINDuyệt nhật ký, quản lý lô đất, thành viên, kho, cảnh báo và tạo batch truy xuất.
PortalCông khaiTra cứu batch bằng mã và xem lịch sử canh tác đã được xác minh.
BackendHệ thốngĐăng nhập, dữ liệu, API, đồng bộ, AI, thời tiết và các quy trình tự động.
Giải thích thuật ngữ
Backend = phần máy chủ xử lý dữ liệu. API = “cổng giao tiếp” giữa app và máy chủ. CMS = màn hình quản trị dành cho đội vận hành. SHA-256 = cách tạo chuỗi kiểm tra dữ liệu; báo cáo xác định đây không phải blockchain.

03. Luồng nghiệp vụ chính từ A → Z

FARMER đăng nhập / đăng ký Ghi nhật ký canh tác GPS + ảnh Đồng bộ ENGINEER duyệt Tạo batch Mã OVN + SHA-256 + QR Người tiêu dùng tra cứu

Nhánh quan trọng

04. Những điểm phải xử lý trước khi gửi lại

🚨 Nhóm 1 — Bảo mật
  1. AI nông học chưa yêu cầu đăng nhập/quyền.
  2. Subscription “farmEvents/userEvents” chưa kiểm tra quyền xem farm/user.
  3. Đường upload file chưa yêu cầu xác thực.
  4. JWT secret có giá trị dự phòng viết sẵn trong mã mẫu.
  5. PIN mặc định 123456 chưa bắt buộc đổi.
  6. Chưa giới hạn số lần nhập PIN sai.
  7. Đổi PIN không yêu cầu PIN cũ.
  8. Weather chưa yêu cầu xác thực.
🚨 Nhóm 2 — Sai lệch nghiệp vụ
Tạo batch hiện có thể xảy ra khi chưa có nhật ký đã duyệt. Trong khi tài liệu nội bộ nói phải có ít nhất 1 nhật ký đã duyệt. Đây là điểm cần sửa trực tiếp ở máy chủ.
🚨 Nhóm 3 — Dữ liệu cá nhân
Tên người xác minh/người thao tác được lưu trong bản ghi lịch sử. Khi tài khoản bị ẩn danh, một số bản ghi snapshot vẫn có thể giữ tên và hiển thị trên portal.
⚠️ Nhóm 4 — Apple Review
  • Sửa App Review Notes về self-registration: app luồng “Register New Farm”.
  • Gỡ hẳn Financing khỏi bản build, không chỉ ẩn khỏi menu.
  • Bỏ quyền vị trí “Always” nếu chỉ dùng vị trí khi app đang mở.
  • Sửa câu xin quyền camera, bỏ nội dung quét QR nếu không có chức năng này.
  • Không quảng cáo push notification thời gian thực nếu hiện chỉ có thông báo cục bộ.
  • Không dùng “blockchain” trong mô tả vì báo cáo xác định không có blockchain thật.

05. Nội dung đề xuất điền trên App Store Connect

TrườngNội dung theo báo cáoLưu ý
Tên appOriginVN – Nhật Ký Canh TácPhải thống nhất với cấu hình app.
SubtitleTruy xuất nguồn gốc nông sản minh bạchKhông thêm “blockchain”.
DescriptionGhi nhật ký canh tác GPS + ảnh; đồng bộ offline; kỹ sư xác minh; tạo mã OVN; tra cứu công khai.Chỉ mô tả chức năng thật.
Keywordstruy xuất nguồn gốc, nông nghiệp, nhật ký canh tác, VietGAP, quản lý nông trạiKhông nhồi từ khóa không liên quan.
CategoryBusiness hoặc Food & DrinkPhải kiểm tra lại trên App Store Connect.
Age Rating4+Theo báo cáo; vẫn kiểm tra lại khi khai báo.
PrivacySố điện thoại, GPS khi sử dụng, ảnh.Không khai “Always location” nếu không dùng.
Support URLURL hỗ trợ thậtChưa được xác minh từ source.
Không được ghi vào metadata nếu chưa có thật
Thanh toán • blockchain • push notification thời gian thực • quét QR trong mobile • các tính năng “Coming Soon”.

06. Bộ ảnh App Store — kích thước và bố cục

Báo cáo ghi nhận bộ kích thước chính: iPhone 6.9" — 1320×2868 px, dọc. Vì cấu hình app có hỗ trợ tablet, cần chuẩn bị thêm iPad 13" — 2064×2752 px. Mỗi bộ có 1–10 ảnh; video preview là tùy chọn, tối đa 3 video/thiết bị/ngôn ngữ, 15–30 giây.

01 Đăng nhập / tổng quan farm

1320 × 2868 pxKHUNG ẢNH APP STORE

Đặt màn hình thật của app vào chính giữa.
Headline ngắn ở vùng trên ảnh.
Không che các nút quan trọng.

Kích thước file thiết kế: 1320×2868 px • Tỷ lệ dọc • Chụp từ build thật

02 Tạo nhật ký canh tác — ảnh + GPS

1320 × 2868 pxẢNH APP THẬT

Khoanh/nhấn mạnh vùng “ảnh + GPS”.
Dòng mô tả: “Ghi lại quá trình canh tác ngay tại ruộng”.

Không thêm giao diện giả hoặc số liệu không có trong app.

03 Danh sách lô đất

1320 × 2868 pxẢNH APP THẬT

Ưu tiên khu vực thể hiện lô đất/farm.

04 Giá trị xác minh

1320 × 2868 pxẢNH APP THẬT

Thể hiện trạng thái nhật ký đã được xác minh.
Không dùng Financing.

05 Mã truy xuất / QR của batch

1320 × 2868 pxẢNH APP THẬT

Nhấn mạnh mã OVN và thông tin truy xuất.

06 Tổng thể giá trị end-to-end

1320 × 2868 pxẢNH APP THẬT

Chỉ sử dụng nếu màn hình thực sự tồn tại trong binary.

Khung iPad cần chuẩn bị

2064 × 2752 pxKHUNG ẢNH iPAD 13"

Giữ cùng nội dung, bố cục và nhận diện với bộ iPhone.

07. App Review Notes — nội dung cần gửi Apple

Đây là phần để Apple hiểu app là gì và biết cách kiểm thử. Điểm quan trọng nhất là nói đúng với app thật.

OriginVN is an internal agricultural traceability tool for Vietnamese farming cooperatives. Farmers log cultivation activities with GPS and photos. Field engineers verify these logs, and verified logs are bundled into traceability batches with a unique OVN code and SHA-256 hash. A separate public web portal allows anyone to look up a batch by code. Demo account: Phone: 0868994461 PIN: 123456 Test flow: 1. Log in with the demo account. 2. View the plot list under the Farm tab. 3. Create a new cultivation log with camera photo and GPS. 4. To test account deletion: Profile > Data & Privacy > Request Account Deletion. Important notes: - No in-app purchases, subscriptions, or paid content. - Account creation is available both through internal provisioning and the self-service “Register New Farm” flow from the login screen. - Location is used only in the foreground to GPS-stamp cultivation logs. - Camera/photo library access is used to attach photo evidence to logs. - Weather data uses the Open-Meteo public API. - Before submission, confirm the demo account is active on production.
🚨 Không dùng lại câu cũ
Không ghi “we do not have a self-registration flow”. Báo cáo xác định câu này mâu thuẫn với màn hình register-farm.tsx.

08. Quy trình đưa app lên App Store từ A → Z

1 Chốt bản build

Đảm bảo source đã sửa các lỗi chặn. Tăng build number. Build production phải dùng đúng cấu hình production trong EAS.

2 Kiểm tra domain

Trong tài liệu có hai nhóm domain: origintrace.snail-ecommerce.comorigintrace.vn. Phải xác định một domain production chính và đồng bộ code, tài liệu, API, portal trước khi gửi.

3 Kiểm tra tài khoản demo

Đăng nhập bằng 0868994461 / 123456 trên build production thật. Không chờ đến lúc Apple hỏi mới kiểm tra.

4 Kiểm tra luồng chính

Đăng nhập → xem farm/lô đất → tạo nhật ký có ảnh + GPS → đồng bộ → kiểm tra trạng thái → thử xóa tài khoản.

5 Chuẩn bị metadata

Điền tên, subtitle, mô tả, keywords, category, age rating, privacy và support URL. Mọi nội dung phải khớp chức năng thật.

6 Chuẩn bị screenshots

Xuất bộ iPhone 6.9" 1320×2868 và iPad 13" 2064×2752 nếu vẫn hỗ trợ tablet. Dùng ảnh chụp từ build thật, không đưa tính năng chưa hoàn thiện.

7 App Privacy

Khai đúng dữ liệu: số điện thoại, vị trí khi dùng, ảnh và các dữ liệu thực tế khác của app. Không khai quyền vị trí nền nếu app không dùng.

8 App Review Information

Đưa demo account, hướng dẫn kiểm thử và giải thích ngắn gọn mô hình app. Dùng Review Notes mới, không dùng bản có thông tin sai về self-registration.

9 Upload build

Upload build production lên App Store Connect. Chờ Apple xử lý build và kiểm tra build đã xuất hiện trong phần chọn phiên bản.

10 Chọn build cho phiên bản

Trong phiên bản iOS chuẩn bị phát hành, chọn đúng build vừa upload. Kiểm tra version/build number và trạng thái xử lý.

11 Kiểm tra toàn bộ trước Submit

Rà lại metadata, screenshots, privacy, age rating, review notes, demo account, quyền camera/location và link hỗ trợ.

12 Submit for Review

Bấm gửi App Review sau khi tất cả trường bắt buộc đã hoàn tất. Sau đó theo dõi trạng thái xét duyệt và phản hồi trong App Store Connect/Resolution Center.

Giải thích “Submit for Review”
Đây là bước chính thức gửi phiên bản app cho Apple kiểm tra. “Review Notes” là ghi chú hướng dẫn nhân viên Apple cách mở và thử các chức năng cần thiết.

09. Checklist cuối cùng trước khi bấm Submit

🔐 Máy chủ

☐ Vá AI không xác thực
☐ Vá subscription
☐ Vá upload
☐ Vá Weather
☐ Không fallback JWT secret
☐ Enforce ≥1 log đã duyệt
☐ Xử lý PII snapshot

📱 Mobile

☐ Gỡ Financing khỏi build
☐ Bỏ Always Location
☐ Sửa Camera permission
☐ Kiểm tra xóa tài khoản
☐ Build production thật
☐ Đồng bộ domain

🍎 Apple

☐ Demo account còn hoạt động
☐ Review Notes trung thực
☐ Metadata đúng chức năng
☐ Screenshots đúng kích thước
☐ Privacy Policy hoạt động
☐ Support URL hoạt động
🟢 Chỉ nên bấm Submit khi
Tất cả ô trên đã được kiểm tra bằng build production thật, không chỉ kiểm tra trên source code hoặc giao diện CMS.

10. Các thuật ngữ dùng trong tài liệu

Thuật ngữNghĩa dễ hiểu
BackendPhần máy chủ xử lý dữ liệu và nghiệp vụ.
APICách app giao tiếp với máy chủ.
JWTLoại “thẻ đăng nhập” giúp máy chủ biết người đang dùng là ai.
GraphQLCách app yêu cầu dữ liệu từ máy chủ.
ResolverĐoạn xử lý quyết định máy chủ phải làm gì khi nhận một yêu cầu.
CMSHệ thống quản trị dành cho nhân viên.
SHA-256Chuỗi kiểm tra được tạo từ dữ liệu; thay đổi dữ liệu sẽ tạo ra chuỗi khác.
SnapshotBản chụp thông tin được lưu tại một thời điểm.
PIIDữ liệu có thể nhận diện một người, ví dụ số điện thoại hoặc tên.
BuildBản app đã được đóng gói để cài đặt hoặc đưa lên kho ứng dụng.
MetadataThông tin hiển thị trên App Store như tên, mô tả, từ khóa, ảnh.
Review NotesGhi chú riêng cho Apple biết cách kiểm tra app.