App làm bằng AI xong 80% mà không release được: 6 chỗ nối nên kiểm trước

Mình làm studio một người ở Seoul, chuyên nhận những app đã dựng bằng Cursor, Lovable, Bolt hay v0 nhưng dừng lại ở mức “gần xong”. Mình đọc nhiều topic ở đây về deploy, session, thanh toán, nên muốn chia sẻ danh sách kiểm tra mình dùng mỗi lần nhận một codebase như vậy. Bạn nào đang tự làm sản phẩm thì dùng được luôn.

Điều mình thấy: vấn đề hiếm khi là thiếu tính năng. Code do AI sinh ra thường đủ tốt, đôi khi cấu trúc còn gọn hơn code agency. Cái thiếu là kiểm chứng. Demo chạy trên laptop, gọi vào môi trường preview, nên mọi chỗ nối với thế giới bên ngoài chưa từng được thử trong điều kiện thật.

Sáu chỗ nối, kiểm theo đúng thứ tự này

  1. Session. Reload trang, khôi phục tab, và cold start của serverless function. Token lưu trong biến của module trông y như auth đang chạy — cho đến request đầu tiên sau khi server ngủ.
  2. Quyền sở hữu dữ liệu. Mỗi endpoint kiểm tra ai là chủ bản ghi, hay chỉ kiểm tra “đã đăng nhập chưa”? Phải thử bằng hai tài khoản, không phải một. Đây là lỗi mình gặp nhiều nhất.
  3. Thanh toán. Giao dịch được xác nhận bằng trang redirect mà người dùng mở lại được bằng nút Back, hay bằng webhook có chữ ký hợp lệ và idempotency key? Một lần trả bằng thẻ thật, một lần hoàn tiền thật, ở chế độ live.
  4. Schema database. Database production là kết quả của migration tool, hay của vài cú click trên dashboard ba tuần trước?
  5. Môi trường và tên miền. App chết ngay khi thiếu biến môi trường, hay chỉ chết ở lần gọi API bên thứ ba đầu tiên? Cookie, CORS và domain canonical phải khớp nhau.
  6. Khả năng nhìn thấy lỗi. Khi người dùng nói “nó lỗi”, có error boundary, có request id, và có một kênh cảnh báo mà thật sự có người đọc?

Mỗi mục nhận một trong ba trạng thái: đạt, đã sửa, hoặc ghi rõ là ngoài phạm vi. Danh sách đó — không phải danh sách tính năng — mới là kế hoạch phát hành.

Hai điều mình học được sau vài lần làm việc này

Thứ nhất, “3–5 ngày hoàn thiện” chỉ đúng khi các tích hợp đã tồn tại. Nếu cần hợp đồng ngân hàng (Stripe verification, cổng thanh toán VN), đăng ký đầu số SMS/Zalo, hay chờ duyệt App Store thì đó là ngày lịch, không phải ngày công — nói ra từ đầu rẻ hơn nhiều so với phát hiện ở ngày thứ ba.
Thứ hai, phần lớn thời gian không nằm ở việc viết code mà ở việc chứng minh: chạy lại luồng đó trên production, bằng hai tài khoản, trên điện thoại dùng 4G, với một giao dịch thật. Đó là phần ai cũng muốn bỏ qua, và cũng là phần quyết định “gần xong” có thành “đã xong” hay không.

Nếu bạn đang giữ một codebase như vậy

Cứ trả lời ngay trong topic này: bạn dừng ở chỗ nào, dùng công cụ nào, và đã kiểm được mục nào trong 6 mục trên. Mình sẽ trả lời cụ thể từng trường hợp, không cần email riêng.

Mình cũng nhận làm phần này cho người khác: studio một người ở Seoul, hợp đồng trực tiếp với công ty Hàn Quốc, làm remote, trao đổi bằng tiếng Anh hoặc tiếng Hàn. Chi tiết và form báo giá ở trang tiếng Anh: https://cpcai-studio.netlify.app/en/ — hoặc email [email protected]. Review code và báo giá miễn phí; chưa ký hợp đồng thì chưa mất đồng nào.

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?