<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Yêu cầu chức năng on AKAIUNSAN — Tài liệu nghiệp vụ</title>
		<link>https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/</link>
		<description>Recent content in Yêu cầu chức năng on AKAIUNSAN — Tài liệu nghiệp vụ</description>
		<generator>Hugo</generator>
		<language>vi-VN</language>
		
		
		
		
			<atom:link href="https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>FR — Tài khoản &amp; xác thực</title>
				<link>https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/tai-khoan-xac-thuc/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/tai-khoan-xac-thuc/</guid>
				<description>&lt;h1 id=&#34;fr-acc--tài-khoản--xác-thực&#34;&gt;FR-ACC — Tài khoản &amp;amp; xác thực&lt;a class=&#34;anchor&#34; href=&#34;#fr-acc--t%c3%a0i-kho%e1%ba%a3n--x%c3%a1c-th%e1%bb%b1c&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;fr-acc-01--đăng-ký-tài-khoản--ưu-tiên-c&#34;&gt;FR-ACC-01 · Đăng ký tài khoản · Ưu tiên C&lt;a class=&#34;anchor&#34; href=&#34;#fr-acc-01--%c4%91%c4%83ng-k%c3%bd-t%c3%a0i-kho%e1%ba%a3n--%c6%b0u-ti%c3%aan-c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Mô tả:&lt;/strong&gt; Khách tạo tài khoản bằng email/số điện thoại và mật khẩu, sau đó bổ sung họ tên, giới tính, địa chỉ.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Điều kiện kích hoạt:&lt;/strong&gt; Chạm “Đăng ký” trên màn đăng nhập.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Luồng chính:&lt;/strong&gt; Nhập email + mật khẩu → hệ thống kiểm tra trùng lặp → tạo tài khoản → đăng nhập tự động → chuyển tới màn hồ sơ.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Email/số điện thoại đã tồn tại → báo lỗi “Tài khoản đã tồn tại”, không tạo tài khoản.&lt;/li&gt;&#xA;&lt;li&gt;Mật khẩu dưới độ dài tối thiểu → báo lỗi tại ô nhập, không gửi yêu cầu.&lt;/li&gt;&#xA;&lt;li&gt;Đăng ký thành công → token lưu lại, mở app lần sau không cần đăng nhập lại.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-acc-02--đăng-nhập--c&#34;&gt;FR-ACC-02 · Đăng nhập · C&lt;a class=&#34;anchor&#34; href=&#34;#fr-acc-02--%c4%91%c4%83ng-nh%e1%ba%adp--c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Mô tả:&lt;/strong&gt; Đăng nhập bằng email/mật khẩu hoặc tài khoản Google.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Luồng chính:&lt;/strong&gt; Nhập thông tin → xác thực → về Trang chủ; thông báo đẩy đăng ký thiết bị sau đăng nhập.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Sai mật khẩu → báo lỗi chung “Email hoặc mật khẩu không đúng”, không tiết lộ trường nào sai.&lt;/li&gt;&#xA;&lt;li&gt;Đăng nhập thành công → token hợp lệ được dùng cho mọi request cần xác thực.&lt;/li&gt;&#xA;&lt;li&gt;Đăng nhập Google bị hủy giữa chừng → quay về màn đăng nhập, không crash, không tạo phiên.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-acc-03--quên-mật-khẩu--h&#34;&gt;FR-ACC-03 · Quên mật khẩu · H&lt;a class=&#34;anchor&#34; href=&#34;#fr-acc-03--qu%c3%aan-m%e1%ba%adt-kh%e1%ba%a9u--h&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Mô tả:&lt;/strong&gt; Người dùng nhận mã OTP để đặt lại mật khẩu.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt; OTP sai/hết hạn → báo lỗi, cho nhập lại; đặt lại thành công → đăng nhập được bằng mật khẩu mới, mật khẩu cũ hết hiệu lực.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-acc-04--đổi-mật-khẩu--h&#34;&gt;FR-ACC-04 · Đổi mật khẩu · H&lt;a class=&#34;anchor&#34; href=&#34;#fr-acc-04--%c4%91%e1%bb%95i-m%e1%ba%adt-kh%e1%ba%a9u--h&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt; Phải nhập mật khẩu hiện tại đúng; sau đổi, các phiên khác có thể bị yêu cầu đăng nhập lại.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-acc-05--phiên-đăng-nhập-hết-hạn--c&#34;&gt;FR-ACC-05 · Phiên đăng nhập hết hạn · C&lt;a class=&#34;anchor&#34; href=&#34;#fr-acc-05--phi%c3%aan-%c4%91%c4%83ng-nh%e1%ba%adp-h%e1%ba%bft-h%e1%ba%a1n--c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Mô tả:&lt;/strong&gt; Token hết hạn (mọi API trả 401) → ứng dụng tự đăng xuất.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Khi token hết hạn, thao tác bất kỳ → hiện cảnh báo “Phiên đăng nhập hết hạn” → về màn Đăng nhập.&lt;/li&gt;&#xA;&lt;li&gt;Dữ liệu nháp ở màn hình không giữ lại.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-acc-06--đa-ngôn-ngữ--h&#34;&gt;FR-ACC-06 · Đa ngôn ngữ · H&lt;a class=&#34;anchor&#34; href=&#34;#fr-acc-06--%c4%91a-ng%c3%b4n-ng%e1%bb%af--h&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Đổi ngôn ngữ → toàn bộ nhãn màn hình đổi ngay, gọi API cập nhật ngôn ngữ lên server.&lt;/li&gt;&#xA;&lt;li&gt;Ngôn ngữ được khôi phục sau khi đăng nhập lại. Tiếng Việt hiển thị dấu đầy đủ, không lỗi font.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>FR — Khám phá dịch vụ</title>
				<link>https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/kham-pha-dich-vu/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/kham-pha-dich-vu/</guid>
				<description>&lt;h1 id=&#34;fr-home--fr-svc--trang-chủ--khám-phá-dịch-vụ&#34;&gt;FR-HOME / FR-SVC — Trang chủ &amp;amp; khám phá dịch vụ&lt;a class=&#34;anchor&#34; href=&#34;#fr-home--fr-svc--trang-ch%e1%bb%a7--kh%c3%a1m-ph%c3%a1-d%e1%bb%8bch-v%e1%bb%a5&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;fr-home-01--trang-chủ--c&#34;&gt;FR-HOME-01 · Trang chủ · C&lt;a class=&#34;anchor&#34; href=&#34;#fr-home-01--trang-ch%e1%bb%a7--c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Mô tả:&lt;/strong&gt; Trang chủ gồm: banner khuyến mãi (carousel), dịch vụ nổi bật theo loại, dịch vụ yêu thích, cập nhật &amp;amp; khuyến mãi.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Vào Trang chủ tải đủ: banner, danh mục dịch vụ, badge số thông báo chưa đọc.&lt;/li&gt;&#xA;&lt;li&gt;Kéo-tải (pull-to-refresh) làm mới toàn bộ dữ liệu.&lt;/li&gt;&#xA;&lt;li&gt;Chưa đăng nhập (token rỗng) → tự chuyển tới màn Đăng nhập.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-svc-01--danh-mục-dịch-vụ--c&#34;&gt;FR-SVC-01 · Danh mục dịch vụ · C&lt;a class=&#34;anchor&#34; href=&#34;#fr-svc-01--danh-m%e1%bb%a5c-d%e1%bb%8bch-v%e1%bb%a5--c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Mô tả:&lt;/strong&gt; 5 nhóm dịch vụ: Maid (dọn nhà), Nany (chăm sóc em bé), Elder (chăm sóc người cao tuổi), AC (vệ sinh máy lạnh), Petcare (chăm sóc thú cưng). Mỗi nhóm hiển thị tên song ngữ và ảnh.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt; Chạm dịch vụ → mở trang cấu hình dịch vụ; dịch vụ chưa mở bán có thể hiển thị trạng thái “sắp ra mắt”.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-svc-02--tùy-chọn-dịch-vụ--c&#34;&gt;FR-SVC-02 · Tùy chọn dịch vụ · C&lt;a class=&#34;anchor&#34; href=&#34;#fr-svc-02--t%c3%b9y-ch%e1%bb%8dn-d%e1%bb%8bch-v%e1%bb%a5--c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Mô tả:&lt;/strong&gt; Khách cấu hình số giờ, số phòng/người/thú, dịch vụ thêm (extra services: ủi đồ, dắt chó đi dạo…), chọn helper đặc biệt, nhập ghi chú.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Giá cập nhật tức thời khi đổi tùy chọn (theo bảng giá &lt;code&gt;BL-PRICE-01&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;Số giờ ngoài khoảng cho phép → không cho tiếp tục, hiển thị nhãn lỗi.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-svc-03--bảng-giá-động--c&#34;&gt;FR-SVC-03 · Bảng giá động · C&lt;a class=&#34;anchor&#34; href=&#34;#fr-svc-03--b%e1%ba%a3ng-gi%c3%a1-%c4%91%e1%bb%99ng--c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Giá = đơn giá theo giờ × số giờ, cộng giá dịch vụ thêm, trừ ưu đãi gói (xem &lt;code&gt;BL-PRICE-02&lt;/code&gt;, &lt;code&gt;BL-SUB-02&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;Khách hàng có gói dịch vụ còn giờ → thấy giá ưu đãi so với khách thường.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>FR — Đặt lịch &amp; đơn hàng</title>
				<link>https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/dat-lich-don-hang/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/dat-lich-don-hang/</guid>
				<description>&lt;h1 id=&#34;fr-book--đặt-lịch--đơn-hàng&#34;&gt;FR-BOOK — Đặt lịch &amp;amp; đơn hàng&lt;a class=&#34;anchor&#34; href=&#34;#fr-book--%c4%91%e1%ba%b7t-l%e1%bb%8bch--%c4%91%c6%a1n-h%c3%a0ng&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;fr-book-01--chọn-ngày-giờ--c&#34;&gt;FR-BOOK-01 · Chọn ngày giờ · C&lt;a class=&#34;anchor&#34; href=&#34;#fr-book-01--ch%e1%bb%8dn-ng%c3%a0y-gi%e1%bb%9d--c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Luồng chính:&lt;/strong&gt; Mở lịch → chọn ngày → chọn khung giờ bắt đầu (danh sách giờ từ ~06:00–21:00) → giờ kết thúc tự tính theo số giờ dịch vụ.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Chỉ được chọn ngày hôm nay trở đi; khung giờ đã quá hôm nay không chọn được.&lt;/li&gt;&#xA;&lt;li&gt;Với đơn đặt cho ngày mai, giờ bắt đầu phải cách hiện tại tối thiểu theo quy định (&lt;code&gt;BL-BOOK-02&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;Chọn thời lượng lẻ 0.5 giờ (ví dụ 2.5h) hệ thống tự chỉnh về bước 2h nếu vi phạm khoảng cách tối thiểu giữa hai đầu slider.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-book-02--chọn-helper--c&#34;&gt;FR-BOOK-02 · Chọn helper · C&lt;a class=&#34;anchor&#34; href=&#34;#fr-book-02--ch%e1%bb%8dn-helper--c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Luồng chính:&lt;/strong&gt; Hệ thống gọi gợi ý helper phù hợp (theo dịch vụ, địa chỉ, ngôn ngữ, thời gian) → hiển thị danh sách gợi ý và toàn bộ helper → chọn helper hoặc bỏ trống (để hệ thống ghép).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Danh sách gợi ý trống → vẫn cho tiếp tục, gửi danh sách helper rỗng.&lt;/li&gt;&#xA;&lt;li&gt;Helper yêu thích hiển thị đánh dấu; helper được chọn hiển thị tên + ảnh + số sao.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-book-03--chọn-địa-chỉ--c&#34;&gt;FR-BOOK-03 · Chọn địa chỉ · C&lt;a class=&#34;anchor&#34; href=&#34;#fr-book-03--ch%e1%bb%8dn-%c4%91%e1%bb%8ba-ch%e1%bb%89--c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt; Dùng địa chỉ đã lưu hoặc thêm mới (kể cả chọn điểm trên bản đồ); đơn phải có địa chỉ mới tạo được.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-book-04--tạo-đơn--c&#34;&gt;FR-BOOK-04 · Tạo đơn · C&lt;a class=&#34;anchor&#34; href=&#34;#fr-book-04--t%e1%ba%a1o-%c4%91%c6%a1n--c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Luồng chính:&lt;/strong&gt; Xem lại (ngày giờ, địa chỉ, helper, tùy chọn, giá) → áp khuyến mãi/điểm (tùy chọn) → chọn phương thức thanh toán → xác nhận.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Tạo đơn thành công → đơn xuất hiện ở tab “Đang tới” với trạng thái &lt;code&gt;PENDING&lt;/code&gt;, nhận thông báo.&lt;/li&gt;&#xA;&lt;li&gt;Thanh toán thẻ thất bại → đơn không được tạo ở trạng thái hoàn tất; hiện cảnh báo lỗi.&lt;/li&gt;&#xA;&lt;li&gt;Thiếu thông tin bắt buộc (ngày giờ, địa chỉ) → chặn xác nhận và nhấn mạnh ô thiếu.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-book-05--theo-dõi-đơn--c&#34;&gt;FR-BOOK-05 · Theo dõi đơn · C&lt;a class=&#34;anchor&#34; href=&#34;#fr-book-05--theo-d%c3%b5i-%c4%91%c6%a1n--c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Tab “Đang tới” liệt kê đơn theo trạng thái &lt;code&gt;PENDING → MATCH → ON_PROCESS → WAITING_CONFIRM → RECEIVED&lt;/code&gt;; tab “Lịch sử” liệt kê &lt;code&gt;COMPLETED/CANCEL&lt;/code&gt; kèm sao đánh giá và helper.&lt;/li&gt;&#xA;&lt;li&gt;Kéo-tải làm mới; kéo xuống cuối tải trang tiếp theo (phân trang).&lt;/li&gt;&#xA;&lt;li&gt;Chạm đơn → mở chi tiết với đầy đủ thông tin &lt;code&gt;BL-ORD-01&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-book-06--hủy-đơn--h&#34;&gt;FR-BOOK-06 · Hủy đơn · H&lt;a class=&#34;anchor&#34; href=&#34;#fr-book-06--h%e1%bb%a7y-%c4%91%c6%a1n--h&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Chỉ hủy được ở trạng thái cho phép (tham chiếu &lt;code&gt;BL-ORD-02&lt;/code&gt;); sau hủy, đơn chuyển &lt;code&gt;CANCEL&lt;/code&gt; và rời khỏi “Đang tới”.&lt;/li&gt;&#xA;&lt;li&gt;Mỗi hủy phải qua hộp xác nhận; hủy lý do được ghi nhận.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-book-07--yêu-cầu-đặc-biệt--m&#34;&gt;FR-BOOK-07 · Yêu cầu đặc biệt · M&lt;a class=&#34;anchor&#34; href=&#34;#fr-book-07--y%c3%aau-c%e1%ba%a7u-%c4%91%e1%ba%b7c-bi%e1%bb%87t--m&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt; Đơn ở trạng thái &lt;code&gt;MATCH&lt;/code&gt; cho phép gửi yêu cầu đặc biệt cho helper; gửi xong hiện xác nhận.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>FR — Thanh toán</title>
				<link>https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/thanh-toan/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/thanh-toan/</guid>
				<description>&lt;h1 id=&#34;fr-pay--thanh-toán&#34;&gt;FR-PAY — Thanh toán&lt;a class=&#34;anchor&#34; href=&#34;#fr-pay--thanh-to%c3%a1n&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;fr-pay-01--quản-lý-thẻ--c&#34;&gt;FR-PAY-01 · Quản lý thẻ · C&lt;a class=&#34;anchor&#34; href=&#34;#fr-pay-01--qu%e1%ba%a3n-l%c3%bd-th%e1%ba%bb--c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Luồng chính:&lt;/strong&gt; Màn Thanh toán → “Thêm” → nhập thông tin thẻ (form Omise) → thẻ được lưu an toàn, chỉ hiển thị 4 số cuối.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Thêm thẻ thành công → thẻ xuất hiện trong danh sách, có thể đặt làm mặc định (vòng tròn chọn).&lt;/li&gt;&#xA;&lt;li&gt;Xóa thẻ phải qua xác nhận; xóa thẻ mặc định → danh sách cập nhật, không còn thẻ mặc định.&lt;/li&gt;&#xA;&lt;li&gt;Số thẻ đầy đủ không bao giờ hiển thị trong ứng dụng.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-pay-02--thanh-toán-bằng-thẻ--c&#34;&gt;FR-PAY-02 · Thanh toán bằng thẻ · C&lt;a class=&#34;anchor&#34; href=&#34;#fr-pay-02--thanh-to%c3%a1n-b%e1%ba%b1ng-th%e1%ba%bb--c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt; Tạo đơn với thẻ mặc định → hệ thống trừ tiền; đơn hiển thị đã thanh toán bằng thẻ.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-pay-03--thanh-toán-tiền-mặt--h&#34;&gt;FR-PAY-03 · Thanh toán tiền mặt · H&lt;a class=&#34;anchor&#34; href=&#34;#fr-pay-03--thanh-to%c3%a1n-ti%e1%bb%81n-m%e1%ba%b7t--h&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt; Chọn tiền mặt → đơn tạo thành công không trừ thẻ; helper/admin đối soát khi hoàn thành.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-pay-04--khuyến-mãi--h&#34;&gt;FR-PAY-04 · Khuyến mãi · H&lt;a class=&#34;anchor&#34; href=&#34;#fr-pay-04--khuy%e1%ba%bfn-m%c3%a3i--h&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Mã hợp lệ → giảm tiền (&lt;code&gt;GIFT_MONEY&lt;/code&gt;) hoặc giảm phần trăm (&lt;code&gt;GIFT_PERCENT&lt;/code&gt;) theo &lt;code&gt;BL-PROMO-01&lt;/code&gt;; hiển thị nhãn xác nhận và số tiền giảm.&lt;/li&gt;&#xA;&lt;li&gt;Mã sai/hết hạn/không đạt điều kiện → báo lỗi rõ ràng, không giảm giá.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-pay-05--điểm-thưởng--m&#34;&gt;FR-PAY-05 · Điểm thưởng · M&lt;a class=&#34;anchor&#34; href=&#34;#fr-pay-05--%c4%91i%e1%bb%83m-th%c6%b0%e1%bb%9fng--m&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt; Nhập điểm sử dụng → giá giảm theo tỷ lệ quy đổi &lt;code&gt;BL-POINT-01&lt;/code&gt;; điểm không đủ hoặc vượt số dư → chặn và báo lỗi; điểm tương ứng bị trừ khi đơn hoàn tất.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>FR — Thông báo</title>
				<link>https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/thong-bao/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/thong-bao/</guid>
				<description>&lt;h1 id=&#34;fr-noti--thông-báo&#34;&gt;FR-NOTI — Thông báo&lt;a class=&#34;anchor&#34; href=&#34;#fr-noti--th%c3%b4ng-b%c3%a1o&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;fr-noti-01--hộp-thông-báo--c&#34;&gt;FR-NOTI-01 · Hộp thông báo · C&lt;a class=&#34;anchor&#34; href=&#34;#fr-noti-01--h%e1%bb%99p-th%c3%b4ng-b%c3%a1o--c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Luồng chính:&lt;/strong&gt; Tab Inbox → hai tab con: &lt;strong&gt;Thông báo&lt;/strong&gt; (đơn hàng, loại 0/3) và &lt;strong&gt;Khuyến mãi&lt;/strong&gt; (loại 1/2). Mỗi dòng hiển thị tiêu đề, thời gian (múi giờ Việt Nam), chấm vàng nếu chưa đọc.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Chạm thông báo đơn hàng → đánh dấu đã đọc, badge giảm 1, mở chi tiết đơn.&lt;/li&gt;&#xA;&lt;li&gt;Chạm thông báo khuyến mãi → mở chi tiết khuyến mãi/news tương ứng.&lt;/li&gt;&#xA;&lt;li&gt;Chạm “đọc tất cả” → mọi mục tab hiện tại thành đã đọc, badge cập nhật.&lt;/li&gt;&#xA;&lt;li&gt;Chế độ xóa: chọn từng mục hoặc “tất cả” → xác nhận → các mục bị xóa, danh sách tải lại.&lt;/li&gt;&#xA;&lt;li&gt;Kéo xuống cuối → tải trang tiếp theo (phân trang); kéo xuống đầu → làm mới về trang 1.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-noti-02--badge-chưa-đọc--c&#34;&gt;FR-NOTI-02 · Badge chưa đọc · C&lt;a class=&#34;anchor&#34; href=&#34;#fr-noti-02--badge-ch%c6%b0a-%c4%91%e1%bb%8dc--c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt; Badge trên tab hiển thị đúng &lt;code&gt;totalUnRead&lt;/code&gt; từ server; sau đọc/xóa, badge giảm tương ứng; khi 0 thì ẩn badge.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-noti-03--thông-báo-đẩy--deep-link--c&#34;&gt;FR-NOTI-03 · Thông báo đẩy &amp;amp; deep link · C&lt;a class=&#34;anchor&#34; href=&#34;#fr-noti-03--th%c3%b4ng-b%c3%a1o-%c4%91%e1%ba%a9y--deep-link--c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Nhận đẩy khi app đang mở và khi app bị đóng (notification đã được ghi nhận hệ thống).&lt;/li&gt;&#xA;&lt;li&gt;Mở app từ thông báo → điều hướng đúng màn hình theo loại: đơn hàng → chi tiết đơn; khuyến mãi/news → chi tiết khuyến mãi.&lt;/li&gt;&#xA;&lt;li&gt;Đăng ký token thiết bị diễn ra sau đăng nhập; token đổi không mất đăng ký.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>FR — Hồ sơ &amp; tiện ích</title>
				<link>https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/ho-so-tien-ich/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/ho-so-tien-ich/</guid>
				<description>&lt;h1 id=&#34;fr-pro--fr-fav--fr-hist--fr-sub--fr-ref--hồ-sơ--tiện-ích&#34;&gt;FR-PRO / FR-FAV / FR-HIST / FR-SUB / FR-REF — Hồ sơ &amp;amp; tiện ích&lt;a class=&#34;anchor&#34; href=&#34;#fr-pro--fr-fav--fr-hist--fr-sub--fr-ref--h%e1%bb%93-s%c6%a1--ti%e1%bb%87n-%c3%adch&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;fr-pro-01--hồ-sơ-cá-nhân--h&#34;&gt;FR-PRO-01 · Hồ sơ cá nhân · H&lt;a class=&#34;anchor&#34; href=&#34;#fr-pro-01--h%e1%bb%93-s%c6%a1-c%c3%a1-nh%c3%a2n--h&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt; Xem/sửa họ tên, giới tính, ngày sinh; chọn ảnh đại diện từ thư viện/chụp máy; lưu xong dữ liệu mới hiển thị ngay ở Trang chủ (tên, điểm).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-pro-02--sổ-địa-chỉ--c&#34;&gt;FR-PRO-02 · Sổ địa chỉ · C&lt;a class=&#34;anchor&#34; href=&#34;#fr-pro-02--s%e1%bb%95-%c4%91%e1%bb%8ba-ch%e1%bb%89--c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt; Thêm địa chỉ (gõ tìm gợi ý hoặc chọn trên bản đồ), sửa, xóa (có xác nhận); địa chỉ dùng cho đơn mới; xóa địa chỉ đang dùng không làm lỗi màn khác.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-fav-01--yêu-thích--m&#34;&gt;FR-FAV-01 · Yêu thích · M&lt;a class=&#34;anchor&#34; href=&#34;#fr-fav-01--y%c3%aau-th%c3%adch--m&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt; Đánh dấu dịch vụ/helper yêu thích → xuất hiện ở Trang chủ và trong màn chọn helper; bỏ yêu thích → rời khỏi danh sách.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-hist-01--lịch-sử--đánh-giá--h&#34;&gt;FR-HIST-01 · Lịch sử &amp;amp; đánh giá · H&lt;a class=&#34;anchor&#34; href=&#34;#fr-hist-01--l%e1%bb%8bch-s%e1%bb%ad--%c4%91%c3%a1nh-gi%c3%a1--h&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Đơn &lt;code&gt;COMPLETED&lt;/code&gt; hiển thị đầy đủ: dịch vụ, helper (ảnh, sao), thời gian, địa chỉ, tổng tiền.&lt;/li&gt;&#xA;&lt;li&gt;Đánh giá sao (1–5) gửi thành công và hiển thị ở danh sách lịch sử.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-sub-01--gói-dịch-vụ--h&#34;&gt;FR-SUB-01 · Gói dịch vụ · H&lt;a class=&#34;anchor&#34; href=&#34;#fr-sub-01--g%c3%b3i-d%e1%bb%8bch-v%e1%bb%a5--h&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Xem gói hiện tại (Flexible/Fix) và danh sách gói đang bán.&lt;/li&gt;&#xA;&lt;li&gt;Bật/tắt &lt;strong&gt;tự động gia hạn&lt;/strong&gt; — trạng thái công tắc phản ánh đúng server.&lt;/li&gt;&#xA;&lt;li&gt;Hủy gói qua xác nhận; sau khi hủy, ưu đãi giá của gói ngừng áp dụng cho đơn mới.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fr-ref-01--giới-thiệu-bạn-bè--m&#34;&gt;FR-REF-01 · Giới thiệu bạn bè · M&lt;a class=&#34;anchor&#34; href=&#34;#fr-ref-01--gi%e1%bb%9bi-thi%e1%bb%87u-b%e1%ba%a1n-b%c3%a8--m&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tiêu chí chấp nhận:&lt;/strong&gt; Xem danh sách lời giới thiệu; chia sẻ thông tin tới bạn bè; trạng thái được ghi nhận trong danh sách.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
	</channel>
</rss>
