<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Trang chủ on AKAIUNSAN — Tài liệu nghiệp vụ</title>
		<link>https://akaiunsan.pages.dev/</link>
		<description>Recent content in Trang chủ on AKAIUNSAN — Tài liệu nghiệp vụ</description>
		<generator>Hugo</generator>
		<language>vi-VN</language>
		
		
		
		
			<atom:link href="https://akaiunsan.pages.dev/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>BL — Trạng thái đơn hàng</title>
				<link>https://akaiunsan.pages.dev/docs/nghiep-vu/trang-thai-don-hang/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/nghiep-vu/trang-thai-don-hang/</guid>
				<description>&lt;h1 id=&#34;bl-ord--trạng-thái-đơn-hàng&#34;&gt;BL-ORD — Trạng thái đơn hàng&lt;a class=&#34;anchor&#34; href=&#34;#bl-ord--tr%e1%ba%a1ng-th%c3%a1i-%c4%91%c6%a1n-h%c3%a0ng&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;bl-ord-01--các-trạng-thái&#34;&gt;BL-ORD-01 · Các trạng thái&lt;a class=&#34;anchor&#34; href=&#34;#bl-ord-01--c%c3%a1c-tr%e1%ba%a1ng-th%c3%a1i&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Mã trạng thái dùng thống nhất trong API, ứng dụng và quản trị:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Giá trị&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Tên&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Ý nghĩa&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Ai chuyển đến&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;0&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;PENDING&lt;/code&gt; — Chờ xử lý&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Khách vừa tạo đơn, chưa ghép helper&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Khách hàng (khi tạo đơn)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;1&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;MATCH&lt;/code&gt; — Đã ghép&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Đã có helper nhận việc&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Hệ thống / Quản trị viên&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;2&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;COMPLETED&lt;/code&gt; — Hoàn thành&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Dịch vụ đã thực hiện xong&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Hệ thống / Helper&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;3&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;CANCEL&lt;/code&gt; — Đã hủy&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Đơn bị hủy&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Khách hàng / Quản trị viên&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;4&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;ON_PROCESS&lt;/code&gt; — Đang làm&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Helper đang thực hiện dịch vụ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Helper&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;5&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;WAITING_CONFIRM&lt;/code&gt; — Chờ xác nhận&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Helper xong việc, chờ khách xác nhận&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Helper&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;6&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;RECEIVED&lt;/code&gt; — Đã nghiệm thu&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Khách xác nhận nhận kết quả&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Khách hàng&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;bl-ord-02--luật-chuyển-trạng-thái&#34;&gt;BL-ORD-02 · Luật chuyển trạng thái&lt;a class=&#34;anchor&#34; href=&#34;#bl-ord-02--lu%e1%ba%adt-chuy%e1%bb%83n-tr%e1%ba%a1ng-th%c3%a1i&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Từ&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Được phép sang&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Điều kiện&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Hệ quả&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;PENDING&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;MATCH&lt;/code&gt;, &lt;code&gt;CANCEL&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Có helper nhận / khách hủy&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;MATCH&lt;/code&gt; tạo thông báo cho khách; &lt;code&gt;CANCEL&lt;/code&gt; rời danh sách đang tới&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;MATCH&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;ON_PROCESS&lt;/code&gt;, &lt;code&gt;CANCEL&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Đến giờ làm / khách hủy&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;ON_PROCESS&lt;/code&gt; khóa một số sửa đổi trên đơn&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;ON_PROCESS&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;WAITING_CONFIRM&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Helper hoàn thành&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Không cho hủy thông thường&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;WAITING_CONFIRM&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;RECEIVED&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Khách xác nhận&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Sinh điểm thưởng, cho phép đánh giá&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;RECEIVED&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;COMPLETED&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Chốt sau nghiệm thu/đối soát&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Đơn vào lịch sử vĩnh viễn&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;&lt;strong&gt;Hệ quả liên quan:&lt;/strong&gt;&lt;/p&gt;</description>
			</item>
			<item>
				<title>Đặt dịch vụ từng bước</title>
				<link>https://akaiunsan.pages.dev/docs/huong-dan-su-dung/dat-dich-vu/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/huong-dan-su-dung/dat-dich-vu/</guid>
				<description>&lt;h1 id=&#34;đặt-dịch-vụ-trong-6-bước&#34;&gt;Đặt dịch vụ trong 6 bước&lt;a class=&#34;anchor&#34; href=&#34;#%c4%91%e1%ba%b7t-d%e1%bb%8bch-v%e1%bb%a5-trong-6-b%c6%b0%e1%bb%9bc&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;bước-1--chọn-dịch-vụ&#34;&gt;Bước 1 — Chọn dịch vụ&lt;a class=&#34;anchor&#34; href=&#34;#b%c6%b0%e1%bb%9bc-1--ch%e1%bb%8dn-d%e1%bb%8bch-v%e1%bb%a5&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Mở ứng dụng → ở &lt;strong&gt;Trang chủ&lt;/strong&gt; chọn nhóm dịch vụ bạn cần (Dọn nhà, Chăm sóc em bé, Chăm sóc người cao tuổi, Vệ sinh máy lạnh, Chăm sóc thú cưng).&lt;/p&gt;&#xA;&lt;h2 id=&#34;bước-2--tùy-chỉnh-công-việc&#34;&gt;Bước 2 — Tùy chỉnh công việc&lt;a class=&#34;anchor&#34; href=&#34;#b%c6%b0%e1%bb%9bc-2--t%c3%b9y-ch%e1%bb%89nh-c%c3%b4ng-vi%e1%bb%87c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Kéo thanh &lt;strong&gt;số giờ&lt;/strong&gt; để chọn thời lượng (ví dụ 3 giờ).&lt;/li&gt;&#xA;&lt;li&gt;Chọn số phòng, số thú cưng (với Petcare), hoặc công việc thêm như &lt;strong&gt;ủi đồ&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Muốn một helper cụ thể? Bật &lt;strong&gt;chọn helper đặc biệt&lt;/strong&gt; và chọn người bạn muốn.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;Giá sẽ hiển thị ngay khi bạn thay đổi lựa chọn.&lt;/p&gt;</description>
			</item>
			<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>Màn hình — Tab chính</title>
				<link>https://akaiunsan.pages.dev/docs/man-hinh/tab-chinh/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/man-hinh/tab-chinh/</guid>
				<description>&lt;h1 id=&#34;tab-chính-bottom-bar&#34;&gt;Tab chính (Bottom Bar)&lt;a class=&#34;anchor&#34; href=&#34;#tab-ch%c3%adnh-bottom-bar&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Container: &lt;code&gt;Main/BottomBar&lt;/code&gt; — bottom tab 4 mục, badge số thông báo chưa đọc trên tab Inbox.&lt;/p&gt;&#xA;&lt;h2 id=&#34;home--trang-chủ&#34;&gt;Home — Trang chủ&lt;a class=&#34;anchor&#34; href=&#34;#home--trang-ch%e1%bb%a7&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;Main/Home.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-HOME-01&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Thành phần:&lt;/strong&gt; header (tên + điểm + chọn ngôn ngữ), banner carousel, hàng dịch vụ yêu thích, lưới 5 nhóm dịch vụ (+3 mục sắp ra mắt), mục Cập nhật &amp;amp; khuyến mãi.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Vào/Đi:&lt;/strong&gt; từ đăng nhập hoặc tab; đi tới Service (chọn dịch vụ), Promotion/Detail (chạm banner), AllService, Favourite/Service.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Trạng thái:&lt;/strong&gt; pull-to-refresh làm mới; token rỗng → replace sang Auth/Login; lỗi API → Alert và giữ giao diện.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hành động:&lt;/strong&gt; chạm dịch vụ → mở cấu hình; chạm mục khuyến mãi → chi tiết.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;booking--danh-sách-đơn&#34;&gt;Booking — Danh sách đơn&lt;a class=&#34;anchor&#34; href=&#34;#booking--danh-s%c3%a1ch-%c4%91%c6%a1n&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;Main/Booking.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-BOOK-05&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Thành phần:&lt;/strong&gt; header với icon lịch (→ &lt;code&gt;Booking/Calendar&lt;/code&gt;), hai tab &lt;strong&gt;sắp tới / lịch sử&lt;/strong&gt;, danh sách thẻ đơn.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hành động:&lt;/strong&gt; chạm đơn sắp tới → &lt;code&gt;Booking/BookingDetail&lt;/code&gt;; chạm đơn lịch sử → &lt;code&gt;Booking/DetailHistory&lt;/code&gt;; kéo-cuối tải thêm trang; kéo-tải làm mới (xóa list rồi tải trang 1).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;inbox--hộp-thông-báo&#34;&gt;Inbox — Hộp thông báo&lt;a class=&#34;anchor&#34; href=&#34;#inbox--h%e1%bb%99p-th%c3%b4ng-b%c3%a1o&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;Main/Inbox.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-NOTI-01..03&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Thành phần:&lt;/strong&gt; header (đọc tất cả, xóa), hai tab Thông báo / Khuyến mãi, danh sách dòng (chấm vàng = chưa đọc), checkbox chế độ xóa.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hành động:&lt;/strong&gt; chạm mục → đánh dấu đã đọc + mở chi tiết; icon trống → xóa mục đã chọn; “Tất cả” → xóa toàn bộ tab; đọc tất cả → POST read-all rồi refresh.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;account--tài-khoản&#34;&gt;Account — Tài khoản&lt;a class=&#34;anchor&#34; href=&#34;#account--t%c3%a0i-kho%e1%ba%a3n&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;Main/Account.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-PRO-01&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Thành phần:&lt;/strong&gt; khối hồ sơ (ảnh, tên, điểm), danh sách menu (Hồ sơ, Thanh toán, Yêu thích, My Booking, Về chúng tôi, Giới thiệu…), mục đăng xuất.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hành động:&lt;/strong&gt; chạm menu → điều hướng màn tương ứng; đăng xuất → hộp xác nhận → xóa token → về Auth/Login.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Bảng thông điệp i18n</title>
				<link>https://akaiunsan.pages.dev/docs/kiem-thu/thong-diep-i18n/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/kiem-thu/thong-diep-i18n/</guid>
				<description>&lt;h1 id=&#34;bảng-thông-điệp-i18n-dùng-khi-kiểm-thử&#34;&gt;Bảng thông điệp i18n dùng khi kiểm thử&lt;a class=&#34;anchor&#34; href=&#34;#b%e1%ba%a3ng-th%c3%b4ng-%c4%91i%e1%bb%87p-i18n-d%c3%b9ng-khi-ki%e1%bb%83m-th%e1%bb%ad&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Tester đối chiếu thông báo trên UI với catalog dưới đây (nguồn: &lt;code&gt;apps/src/shared/I18n/en.ts|vi.ts|th.ts&lt;/code&gt; — 3 ngôn ngữ phải đồng bộ về tập khóa).&lt;/p&gt;&#xA;&lt;h2 id=&#34;xác-thực&#34;&gt;Xác thực&lt;a class=&#34;anchor&#34; href=&#34;#x%c3%a1c-th%e1%bb%b1c&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Khóa&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Tiếng Anh (hiển thị)&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Khi nào xuất hiện&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;auth.register_success&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Account registered successfully&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Đăng ký thành công&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;auth.token_expired&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Token expired&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;JWT hết hạn → tự đăng xuất (FR-ACC-05)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;auth.error&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Something wrong&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Tiêu đề hộp lỗi chung&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;home.error_400&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Request failed with status code 400&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Lỗi 400 từ API (dữ liệu không hợp lệ)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;dịch-vụ--đặt-lịch&#34;&gt;Dịch vụ &amp;amp; đặt lịch&lt;a class=&#34;anchor&#34; href=&#34;#d%e1%bb%8bch-v%e1%bb%a5--%c4%91%e1%ba%b7t-l%e1%bb%8bch&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Khóa&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Tiếng Anh&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Khi nào xuất hiện&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;home.date_not_min&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;You can not select day and time in past&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Chọn ngày/giờ trong quá khứ (FR-BOOK-01)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;home.select_your_helper&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Select your helper&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Xác nhận khi chưa chọn helper&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;home.specify_helper&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Specific helper (if you have)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Nhãn phần helper đặc biệt&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;home.suggest_for_you&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Suggest for you&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Nhãn danh sách gợi ý&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;home.select_age&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;(chọn độ tuổi)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Nany: chưa chọn độ tuổi bé&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;thanh-toán--thẻ&#34;&gt;Thanh toán &amp;amp; thẻ&lt;a class=&#34;anchor&#34; href=&#34;#thanh-to%c3%a1n--th%e1%ba%bb&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Khóa&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Tiếng Anh&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Khi nào xuất hiện&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;home.add_card_success&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Add card success&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Thêm thẻ thành công (FR-PAY-01)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;home.confirm_delete_card&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Confirm delete this card ?&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Xác nhận xóa thẻ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;home.permission_camera&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;(yêu cầu quyền)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Chụp ảnh thẻ/hồ sơ chưa cấp quyền&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;thông-báo--danh-sách&#34;&gt;Thông báo &amp;amp; danh sách&lt;a class=&#34;anchor&#34; href=&#34;#th%c3%b4ng-b%c3%a1o--danh-s%c3%a1ch&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Khóa&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Tiếng Anh&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Khi nào xuất hiện&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;home.data_empty&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Data empty&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Trạng thái trống chung&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;home.notification_empty&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Notification is empty&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Tab Thông báo rỗng&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;home.promotion_empty&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Promotion is empty&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Tab Khuyến mãi rỗng&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;home.confirm_delete&lt;/code&gt; / &lt;code&gt;home.yes&lt;/code&gt; / &lt;code&gt;home.no&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Confirm delete / Yes / No&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Hộp xóa thông báo&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;home.delete_successfully&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Delete successfully&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Xóa thành công&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;home.send_review_successfully&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Send review successfully&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Gửi đánh giá (FR-HIST-01)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;home.copy_success&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Copy to clipboard success&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Copy mã/thông tin&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;quy-tắc-kiểm-thử-i18n&#34;&gt;Quy tắc kiểm thử i18n&lt;a class=&#34;anchor&#34; href=&#34;#quy-t%e1%ba%afc-ki%e1%bb%83m-th%e1%bb%ad-i18n&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Mỗi thông báo trên UI phải có &lt;strong&gt;khóa&lt;/strong&gt; tương ứng — không chấp nhận chuỗi cứng (hard-coded) mới.&lt;/li&gt;&#xA;&lt;li&gt;Đổi ngôn ngữ → mọi khóa ở trên phải đổi theo; khóa thiếu bản dịch là bug (NFR-04).&lt;/li&gt;&#xA;&lt;li&gt;Thông báo lỗi không được lộ chi tiết kỹ thuật (stack, SQL, đường dẫn).&lt;/li&gt;&#xA;&lt;/ol&gt;</description>
			</item>
			<item>
				<title>BL — Giá &amp; điểm</title>
				<link>https://akaiunsan.pages.dev/docs/nghiep-vu/gia-va-diem/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/nghiep-vu/gia-va-diem/</guid>
				<description>&lt;h1 id=&#34;bl-price--bl-point--giá-và-điểm-thưởng&#34;&gt;BL-PRICE / BL-POINT — Giá và điểm thưởng&lt;a class=&#34;anchor&#34; href=&#34;#bl-price--bl-point--gi%c3%a1-v%c3%a0-%c4%91i%e1%bb%83m-th%c6%b0%e1%bb%9fng&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;bl-price-01--thành-giá-cơ-bản&#34;&gt;BL-PRICE-01 · Thành giá cơ bản&lt;a class=&#34;anchor&#34; href=&#34;#bl-price-01--th%c3%a0nh-gi%c3%a1-c%c6%a1-b%e1%ba%a3n&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Giá gốc = Đơn giá theo dịch vụ × Số giờ&#xA;        + Giá dịch vụ thêm (ủi, dắt chó…)&#xA;        + Phụ phí theo tùy chọn (số phòng / số thú / số người)&lt;/code&gt;&lt;/pre&gt;&lt;ul&gt;&#xA;&lt;li&gt;Bảng giá theo từng loại dịch vụ do Quản trị viên cấu hình (&lt;code&gt;config-price&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;Số giờ cho phép bước lẻ 0.5 giờ; hai đầu khoảng thời gian phải cách nhau tối thiểu 2 giờ.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;bl-price-02--ưu-đãi-theo-gói-dịch-vụ&#34;&gt;BL-PRICE-02 · Ưu đãi theo gói dịch vụ&lt;a class=&#34;anchor&#34; href=&#34;#bl-price-02--%c6%b0u-%c4%91%c3%a3i-theo-g%c3%b3i-d%e1%bb%8bch-v%e1%bb%a5&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Khách có &lt;strong&gt;gói còn giờ&lt;/strong&gt; được áp bảng giá ưu đãi riêng cho dịch vụ cùng loại (ví dụ gói dọn nhà ưu đãi cho đơn dọn nhà).&lt;/li&gt;&#xA;&lt;li&gt;Số giờ còn lại của gói giảm dần theo từng đơn áp gói; hết giờ thì về giá gốc.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;bl-point-01--quy-đổi-điểm&#34;&gt;BL-POINT-01 · Quy đổi điểm&lt;a class=&#34;anchor&#34; href=&#34;#bl-point-01--quy-%c4%91%e1%bb%95i-%c4%91i%e1%bb%83m&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Điểm quy đổi thành tiền theo tỷ lệ cấu hình hệ thống (&lt;code&gt;POINT.MONEY_CONVERT_POINT&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;li&gt;Khách chỉ dùng được điểm ≤ số dư hiện có; điểm dùng ghi giảm ngay khi tạo đơn.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;bl-point-02--tích-điểm&#34;&gt;BL-POINT-02 · Tích điểm&lt;a class=&#34;anchor&#34; href=&#34;#bl-point-02--t%c3%adch-%c4%91i%e1%bb%83m&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Đơn kết thúc thành công (&lt;code&gt;RECEIVED&lt;/code&gt;/&lt;code&gt;COMPLETED&lt;/code&gt;) sinh điểm thưởng cho khách.&lt;/li&gt;&#xA;&lt;li&gt;Đơn hủy không sinh điểm; điểm đã dùng cho đơn hủy được hoàn lại theo chính sách hoàn.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;ví-dụ-bằng-số&#34;&gt;Ví dụ bằng số&lt;a class=&#34;anchor&#34; href=&#34;#v%c3%ad-d%e1%bb%a5-b%e1%ba%b1ng-s%e1%bb%91&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;blockquote class=&#39;&#39;&gt;&#xA;&lt;p&gt;Dọn nhà 3 giờ, đơn giá 150.000₫/giờ, dịch vụ thêm ủi đồ 50.000₫, có gói giảm 10%, dùng mã giảm 50.000₫:&#xA;Giá gốc = 450.000 + 50.000 = 500.000₫ → sau gói (−10%) = 450.000₫ → sau mã (−50.000₫) = &lt;strong&gt;400.000₫&lt;/strong&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Câu hỏi thường gặp (FAQ)</title>
				<link>https://akaiunsan.pages.dev/docs/huong-dan-su-dung/faq/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/huong-dan-su-dung/faq/</guid>
				<description>&lt;h1 id=&#34;câu-hỏi-thường-gặp&#34;&gt;Câu hỏi thường gặp&lt;a class=&#34;anchor&#34; href=&#34;#c%c3%a2u-h%e1%bb%8fi-th%c6%b0%e1%bb%9dng-g%e1%ba%b7p&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;&lt;strong&gt;Tôi phải đăng ký mới đặt được dịch vụ không?&lt;/strong&gt;&#xA;Có. Bạn có thể xem dịch vụ khi chưa có tài khoản, nhưng để đặt lịch cần đăng ký và đăng nhập.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;App có tính phí sử dụng không?&lt;/strong&gt;&#xA;Không. Bạn chỉ trả tiền cho dịch vụ đã đặt (và các phí liên quan hiển thị trước khi xác nhận).&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;Tôi đặt nhầm giờ, có sửa được không?&lt;/strong&gt;&#xA;Được, khi đơn chưa bắt đầu. Vào chi tiết đơn và chọn sửa; sau khi helper bắt đầu làm việc, hãy liên hệ hỗ trợ.&lt;/p&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>Màn hình — Xác thực</title>
				<link>https://akaiunsan.pages.dev/docs/man-hinh/xac-thuc/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/man-hinh/xac-thuc/</guid>
				<description>&lt;h1 id=&#34;màn-hình-xác-thực&#34;&gt;Màn hình xác thực&lt;a class=&#34;anchor&#34; href=&#34;#m%c3%a0n-h%c3%acnh-x%c3%a1c-th%e1%bb%b1c&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Chỉ hiển thị khi &lt;strong&gt;chưa có token&lt;/strong&gt;. Sau đăng nhập/đăng ký thành công, nhóm này rời khỏi ngăn xếp.&lt;/p&gt;&#xA;&lt;h2 id=&#34;authlogin--đăng-nhập&#34;&gt;Auth/Login — Đăng nhập&lt;a class=&#34;anchor&#34; href=&#34;#authlogin--%c4%91%c4%83ng-nh%e1%ba%adp&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;Auth/Login.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-ACC-02&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Thành phần:&lt;/strong&gt; ô email + mật khẩu, nút &lt;strong&gt;Sign In&lt;/strong&gt;, đăng nhập Google, quên mật khẩu, liên kết sang Đăng ký.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hành động:&lt;/strong&gt; đăng nhập thành công → lưu token → Trang chủ → đăng ký token FCM + gọi cập nhật ngôn ngữ.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Lỗi:&lt;/strong&gt; sai thông tin (thông báo chung), hủy Google (quay lại màn hình), lỗi 400 (thông báo dịch i18n &lt;code&gt;home.error_400&lt;/code&gt;).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;authsignup--đăng-ký&#34;&gt;Auth/Signup — Đăng ký&lt;a class=&#34;anchor&#34; href=&#34;#authsignup--%c4%91%c4%83ng-k%c3%bd&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;Auth/Signup.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-ACC-01&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Thành phần:&lt;/strong&gt; tên, họ, email, số điện thoại, mật khẩu, giới tính, nhà tài trợ (tùy chọn), đồng ý điều khoản.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hành động:&lt;/strong&gt; submit hợp lệ → tạo tài khoản → đăng nhập → tới Trang chủ. Lỗi trùng email/biếu thuật → nhãn lỗi tại ô.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;authforgotpassword--quên-mật-khẩu&#34;&gt;Auth/ForgotPassword — Quên mật khẩu&lt;a class=&#34;anchor&#34; href=&#34;#authforgotpassword--qu%c3%aan-m%e1%ba%adt-kh%e1%ba%a9u&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;Auth/ForgotPassword.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-ACC-03&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Thành phần:&lt;/strong&gt; nhập email/SĐT → nhận OTP → nhập OTP + mật khẩu mới.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Lỗi:&lt;/strong&gt; OTP sai/hết hạn → cho nhập lại; đặt lại xong → về Login.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>BL — Khuyến mãi</title>
				<link>https://akaiunsan.pages.dev/docs/nghiep-vu/khuyen-mai/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/nghiep-vu/khuyen-mai/</guid>
				<description>&lt;h1 id=&#34;bl-promo--khuyến-mãi&#34;&gt;BL-PROMO — Khuyến mãi&lt;a class=&#34;anchor&#34; href=&#34;#bl-promo--khuy%e1%ba%bfn-m%c3%a3i&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;bl-promo-01--loại-khuyến-mãi&#34;&gt;BL-PROMO-01 · Loại khuyến mãi&lt;a class=&#34;anchor&#34; href=&#34;#bl-promo-01--lo%e1%ba%a1i-khuy%e1%ba%bfn-m%c3%a3i&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Loại&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Tên&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Cách giảm&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;GIFT_MONEY&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Tặng tiền&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Trừ trực tiếp số tiền cấu hình khỏi giá đơn&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;GIFT_PERCENT&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Tặng phần trăm&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Trừ &lt;code&gt;%&lt;/code&gt; trên giá đơn (tính trên thành giá trước khuyến mãi)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;bl-promo-02--điều-kiện-áp-dụng&#34;&gt;BL-PROMO-02 · Điều kiện áp dụng&lt;a class=&#34;anchor&#34; href=&#34;#bl-promo-02--%c4%91i%e1%bb%81u-ki%e1%bb%87n-%c3%a1p-d%e1%bb%a5ng&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Mã còn trong thời hạn hiệu lực.&lt;/li&gt;&#xA;&lt;li&gt;Giá đơn đạt mức tối thiểu (nếu cấu hình).&lt;/li&gt;&#xA;&lt;li&gt;Một đơn chỉ áp &lt;strong&gt;một&lt;/strong&gt; mã khuyến mãi.&lt;/li&gt;&#xA;&lt;li&gt;Khuyến mãi áp &lt;strong&gt;trước&lt;/strong&gt; khi tính điểm thưởng (giảm giá làm thay đổi phần điểm quy đổi).&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;bl-promo-03--thứ-tự-tính-tiền&#34;&gt;BL-PROMO-03 · Thứ tự tính tiền&lt;a class=&#34;anchor&#34; href=&#34;#bl-promo-03--th%e1%bb%a9-t%e1%bb%b1-t%c3%adnh-ti%e1%bb%81n&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Thành tiền = Giá gốc (BL-PRICE-01)&#xA;           − Ưu đãi gói dịch vụ (BL-PRICE-02)&#xA;           − Khuyến mãi (BL-PROMO-01)&#xA;           − Điểm quy đổi (BL-POINT-01)&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Khuyến mãi &lt;strong&gt;không hoàn thành tiền mặt&lt;/strong&gt;; giá trị giảm không vượt thành tiền (tối đa về 0₫).&lt;/p&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>Màn hình — Dịch vụ &amp; đặt lịch</title>
				<link>https://akaiunsan.pages.dev/docs/man-hinh/dich-vu-dat-lich/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/man-hinh/dich-vu-dat-lich/</guid>
				<description>&lt;h1 id=&#34;màn-hình-dịch-vụ--đặt-lịch&#34;&gt;Màn hình dịch vụ &amp;amp; đặt lịch&lt;a class=&#34;anchor&#34; href=&#34;#m%c3%a0n-h%c3%acnh-d%e1%bb%8bch-v%e1%bb%a5--%c4%91%e1%ba%b7t-l%e1%bb%8bch&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;service--cấu-hình-dịch-vụ-wizard&#34;&gt;Service — Cấu hình dịch vụ (wizard)&lt;a class=&#34;anchor&#34; href=&#34;#service--c%e1%ba%a5u-h%c3%acnh-d%e1%bb%8bch-v%e1%bb%a5-wizard&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;ServiceScreen/Service.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-SVC-02/03&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Thành phần:&lt;/strong&gt; 3 bước — (1) tùy chọn dịch vụ (giờ, phòng/thú, extra services), (2) ngày giờ + helper + địa chỉ, (3) thanh toán &amp;amp; xác nhận.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Trạng thái:&lt;/strong&gt; giá cập nhật realtime; khối slider giờ ép khoảng cách tối thiểu 2h; nút bấm qua các bước có validate.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Đi:&lt;/strong&gt; tạo đơn thành công → thông báo + về danh sách đơn; thanh toán thẻ qua Omise.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;allservice--tất-cả-dịch-vụ&#34;&gt;AllService — Tất cả dịch vụ&lt;a class=&#34;anchor&#34; href=&#34;#allservice--t%e1%ba%a5t-c%e1%ba%a3-d%e1%bb%8bch-v%e1%bb%a5&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;ServiceScreen/AllService.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-SVC-01&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hành động:&lt;/strong&gt; chạm một dịch vụ → &lt;code&gt;Service&lt;/code&gt; (wizard). Dùng để xem trọn danh mục khi Trang chủ chỉ hiển thị 5 mục.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;editandreorderandeditservice--sửa--đặt-lại&#34;&gt;EditAndReOrderAndEditService — Sửa / đặt lại&lt;a class=&#34;anchor&#34; href=&#34;#editandreorderandeditservice--s%e1%bb%ada--%c4%91%e1%ba%b7t-l%e1%ba%a1i&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;EditAndReOrderServiceScreen/EditAndReOrderService.tsx&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Mục đích:&lt;/strong&gt; cùng wizard bước 1–3 nhưng chạy &lt;strong&gt;chế độ sửa&lt;/strong&gt; (điền sẵn dữ liệu đơn) hoặc &lt;strong&gt;đặt lại dịch vụ&lt;/strong&gt; cho đơn cũ; bước 3 gọi API sửa đơn thay vì tạo mới.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Vào:&lt;/strong&gt; từ chi tiết đơn có hành động “Sửa/Đặt lại”.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;paymentpetcare--thanh-toán-petcare--tiền-mặt&#34;&gt;PaymentPetcare — Thanh toán Petcare / tiền mặt&lt;a class=&#34;anchor&#34; href=&#34;#paymentpetcare--thanh-to%c3%a1n-petcare--ti%e1%bb%81n-m%e1%ba%b7t&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;Other/PaymentPetcare.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-PAY-03&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Mục đích:&lt;/strong&gt; màn thanh toán riêng cho luồng petcare/đơn tiền mặt, hiển thị thời gian đã chọn và xác nhận thanh toán.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;bookingcalendar--lịch&#34;&gt;Booking/Calendar — Lịch&lt;a class=&#34;anchor&#34; href=&#34;#bookingcalendar--l%e1%bb%8bch&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;Booking/Calendar.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-BOOK-01&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Thành phần:&lt;/strong&gt; lịch tháng (đổi tháng qua mũi tên, ô hôm nay tô lime), dải khung giờ 06:00–21:00, job đã đặt hiển thị dạng khối trên lưới giờ.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Hành động:&lt;/strong&gt; chọn khung giờ hợp lệ → truyền ngày giờ về wizard; quá khứ bị chặn.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;bookingbookingdetail--chi-tiết-đơn&#34;&gt;Booking/BookingDetail — Chi tiết đơn&lt;a class=&#34;anchor&#34; href=&#34;#bookingbookingdetail--chi-ti%e1%ba%bft-%c4%91%c6%a1n&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;Booking/BookingDetail.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-BOOK-04/06/07&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Thành phần:&lt;/strong&gt; bảng thông tin dịch vụ/giờ/địa chỉ, helper, giá &amp;amp; khuyến mãi, nút theo trạng thái (hủy, yêu cầu đặc biệt, xác nhận).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Lỗi:&lt;/strong&gt; hủy ở trạng thái không cho phép → Alert; thiếu dữ liệu → trạng thái trống.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;bookingdetailhistory--chi-tiết-đơn-lịch-sử&#34;&gt;Booking/DetailHistory — Chi tiết đơn lịch sử&lt;a class=&#34;anchor&#34; href=&#34;#bookingdetailhistory--chi-ti%e1%ba%bft-%c4%91%c6%a1n-l%e1%bb%8bch-s%e1%bb%ad&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;Booking/DetailHistory.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-HIST-01&lt;/li&gt;&#xA;&lt;li&gt;Giống BookingDetail nhưng chỉ đọc, cho đơn &lt;code&gt;COMPLETED/CANCEL&lt;/code&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;historylist--historydetail--lịch-sử-có-lọc-ngày&#34;&gt;History/List &amp;amp; History/Detail — Lịch sử có lọc ngày&lt;a class=&#34;anchor&#34; href=&#34;#historylist--historydetail--l%e1%bb%8bch-s%e1%bb%ad-c%c3%b3-l%e1%bb%8dc-ng%c3%a0y&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;History/HistoryList.tsx&lt;/code&gt;, &lt;code&gt;History/HistoryDetail.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-HIST-01&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Thành phần:&lt;/strong&gt; bộ chọn khoảng ngày (DateTimePicker) + danh sách đơn; chi tiết hiển thị số giờ dịch vụ (duration).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;mybookinglist--mybookingdetail--việc-đã-đặt&#34;&gt;MyBooking/List &amp;amp; MyBooking/Detail — Việc đã đặt&lt;a class=&#34;anchor&#34; href=&#34;#mybookinglist--mybookingdetail--vi%e1%bb%87c-%c4%91%c3%a3-%c4%91%e1%ba%b7t&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;MyBooking/ListMyBooking.tsx&lt;/code&gt; (Detail tái dùng BookingDetail) · &lt;strong&gt;FR:&lt;/strong&gt; FR-BOOK-05&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Mục đích:&lt;/strong&gt; danh sách việc đã đặt để truy cập nhanh/hủy; hỗ trợ pull-to-refresh và xóa việc.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>BL — Gói dịch vụ</title>
				<link>https://akaiunsan.pages.dev/docs/nghiep-vu/goi-dich-vu/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/nghiep-vu/goi-dich-vu/</guid>
				<description>&lt;h1 id=&#34;bl-sub--gói-dịch-vụ-subscription&#34;&gt;BL-SUB — Gói dịch vụ (Subscription)&lt;a class=&#34;anchor&#34; href=&#34;#bl-sub--g%c3%b3i-d%e1%bb%8bch-v%e1%bb%a5-subscription&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;bl-sub-01--hai-loại-gói&#34;&gt;BL-SUB-01 · Hai loại gói&lt;a class=&#34;anchor&#34; href=&#34;#bl-sub-01--hai-lo%e1%ba%a1i-g%c3%b3i&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Loại&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Tên&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Bản chất&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Flexible&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Gói linh hoạt&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Mua một lượng giờ dùng dần cho một loại dịch vụ; đặt lịch nào cũng trừ giờ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Fix&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Gói cố định&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Lịch lặp cố định theo tuần (ví dụ 3 buổi/tuần), thường kèm helper cố định&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;bl-sub-02--ưu-đãi-giá-theo-gói&#34;&gt;BL-SUB-02 · Ưu đãi giá theo gói&lt;a class=&#34;anchor&#34; href=&#34;#bl-sub-02--%c6%b0u-%c4%91%c3%a3i-gi%c3%a1-theo-g%c3%b3i&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Đơn cùng loại dịch vụ với gói đang hiệu lực được áp &lt;strong&gt;bảng giá ưu đãi của gói&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;Ưu đãi chỉ áp cho phần giờ còn của gói; phần vượt giới hạn về giá gốc.&lt;/li&gt;&#xA;&lt;li&gt;Số giờ còn lại hiển thị cho khách khi cấu hình dịch vụ.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;bl-sub-03--gia-hạn-tự-động-toggle-renew&#34;&gt;BL-SUB-03 · Gia hạn tự động (toggle renew)&lt;a class=&#34;anchor&#34; href=&#34;#bl-sub-03--gia-h%e1%ba%a1n-t%e1%bb%b1-%c4%91%e1%bb%99ng-toggle-renew&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Mỗi gói có công tắc &lt;strong&gt;tự động gia hạn&lt;/strong&gt;: bật → khi chu kỳ kết thúc hệ thống gia hạn; tắt → gói kết thúc tự nhiên.&lt;/li&gt;&#xA;&lt;li&gt;Công tắc trong ứng dụng phải phản ánh đúng trạng thái server sau mỗi lần đổi (gọi API riêng cho flexible và fix).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;bl-sub-04--hủy-gói&#34;&gt;BL-SUB-04 · Hủy gói&lt;a class=&#34;anchor&#34; href=&#34;#bl-sub-04--h%e1%bb%a7y-g%c3%b3i&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Hủy gói phải qua xác nhận; sau hủy, ưu đãi ngừng áp dụng cho &lt;strong&gt;đơn mới&lt;/strong&gt; (đơn đã tạo không đổi giá).&lt;/li&gt;&#xA;&lt;li&gt;Hủy không hoàn lại phần giờ đã dùng.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;bl-sub-05--quy-tắc-kết-hợp&#34;&gt;BL-SUB-05 · Quy tắc kết hợp&lt;a class=&#34;anchor&#34; href=&#34;#bl-sub-05--quy-t%e1%ba%afc-k%e1%ba%bft-h%e1%bb%a3p&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Một khách có thể có &lt;strong&gt;nhiều&lt;/strong&gt; gói cho nhiều loại dịch vụ, nhưng một đơn chỉ áp ưu đãi của &lt;strong&gt;một&lt;/strong&gt; gói cùng loại dịch vụ.&lt;/li&gt;&#xA;&lt;li&gt;Gói và khuyến mãi có thể cùng áp cho một đơn (theo &lt;code&gt;BL-PROMO-03&lt;/code&gt;).&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>Màn hình — Kế hoạch &amp; ưu đãi</title>
				<link>https://akaiunsan.pages.dev/docs/man-hinh/ke-hoach-uu-dai/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/man-hinh/ke-hoach-uu-dai/</guid>
				<description>&lt;h1 id=&#34;màn-hình-kế-hoạch-plan--ưu-đãi&#34;&gt;Màn hình kế hoạch (plan) &amp;amp; ưu đãi&lt;a class=&#34;anchor&#34; href=&#34;#m%c3%a0n-h%c3%acnh-k%e1%ba%bf-ho%e1%ba%a1ch-plan--%c6%b0u-%c4%91%c3%a3i&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;fixplan--gói-cố-định&#34;&gt;FixPlan — Gói cố định&lt;a class=&#34;anchor&#34; href=&#34;#fixplan--g%c3%b3i-c%e1%bb%91-%c4%91%e1%bb%8bnh&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;FixPlan/AddFixPlan&lt;/code&gt;&lt;/strong&gt; (&lt;code&gt;Other/FixPlan/AddFixPlan.tsx&lt;/code&gt;): tạo gói Fix — chọn dịch vụ, số giờ mỗi buổi, ngày trong tuần (lặp), helper; nút giảm giờ phản hồi giá tức thời (BL-SUB-01).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;FixPlan/PickAddress&lt;/code&gt;&lt;/strong&gt; (&lt;code&gt;Other/FixPlan/PickAddress.tsx&lt;/code&gt;): chọn địa chỉ + thời gian từng buổi, gợi ý thêm 3 buổi kế tiếp (cùng khung giờ tuần kế); xác nhận gói kèm điểm/khuyến mãi (charges-plan).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;FixPlan/ResultPayment&lt;/code&gt;&lt;/strong&gt; (&lt;code&gt;Other/FixPlan/ResultPayment.tsx&lt;/code&gt;): trang kết quả sau thanh toán gói — tổng tiền, danh sách buổi đã đặt; nút về trang chủ.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;fexibleplan--gói-linh-hoạt&#34;&gt;FexiblePlan — Gói linh hoạt&lt;a class=&#34;anchor&#34; href=&#34;#fexibleplan--g%c3%b3i-linh-ho%e1%ba%a1t&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;FexiblePlan/ListPlan&lt;/code&gt;&lt;/strong&gt; (&lt;code&gt;Other/FexiblePlan/ListPlan.tsx&lt;/code&gt;): danh sách gói Flexible đang bán + gói hiện tại; vào chi tiết để mua/đồng ý.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;FexiblePlan/Detail&lt;/code&gt;&lt;/strong&gt; (&lt;code&gt;Other/FexiblePlan/Detail.tsx&lt;/code&gt;): chi tiết gói — giá, ưu đãi, công tắc tự động gia hạn (BL-SUB-03), nút mua (Agree) và hủy gói có lý do.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;FexiblePlan/Agree&lt;/code&gt;&lt;/strong&gt; (&lt;code&gt;Other/FexiblePlan/Agree.tsx&lt;/code&gt;): xác nhận điều khoản và chốt mua gói.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;subscription--quản-lý-gói&#34;&gt;Subscription — Quản lý gói&lt;a class=&#34;anchor&#34; href=&#34;#subscription--qu%e1%ba%a3n-l%c3%bd-g%c3%b3i&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;AllSubscriptionPlan&lt;/code&gt;&lt;/strong&gt; (&lt;code&gt;Subscription/AllSubscriptionPlan.tsx&lt;/code&gt;): toàn bộ gói theo nhóm (Flexible/Fix), trạng thái hủy của từng mục.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Subscription/Detail&lt;/code&gt;&lt;/strong&gt; (&lt;code&gt;Subscription/SubscriptionDetail.tsx&lt;/code&gt;): gói hiện tại; phần nội dung booking đang vô hiệu hóa (dead code giữ lại) — chỉ hiển thị hai nhãn dẫn tới gói.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;promotion--khuyến-mãi&#34;&gt;Promotion — Khuyến mãi&lt;a class=&#34;anchor&#34; href=&#34;#promotion--khuy%e1%ba%bfn-m%c3%a3i&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Promotion/List&lt;/code&gt;&lt;/strong&gt; (&lt;code&gt;Promotion/PromotionList.tsx&lt;/code&gt;): danh sách khuyến mãi/news đang chạy.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Promotion/Detail&lt;/code&gt;&lt;/strong&gt; (&lt;code&gt;Promotion/PromotionDetail.tsx&lt;/code&gt;): chi tiết khuyến mãi — gallery ảnh, nội dung HTML, điều kiện; là đích deep link của thông báo loại 1/2.&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>BL — Ghép helper</title>
				<link>https://akaiunsan.pages.dev/docs/nghiep-vu/ghep-helper/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/nghiep-vu/ghep-helper/</guid>
				<description>&lt;h1 id=&#34;bl-help--ghép-helper&#34;&gt;BL-HELP — Ghép helper&lt;a class=&#34;anchor&#34; href=&#34;#bl-help--gh%c3%a9p-helper&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;bl-help-01--gợi-ý-helper&#34;&gt;BL-HELP-01 · Gợi ý helper&lt;a class=&#34;anchor&#34; href=&#34;#bl-help-01--g%e1%bb%a3i-%c3%bd-helper&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Khi khách tới bước chọn helper, hệ thống gọi API &lt;strong&gt;gợi ý&lt;/strong&gt; với: loại dịch vụ, địa chỉ, ngôn ngữ ưu tiên, khung thời gian.&lt;/li&gt;&#xA;&lt;li&gt;Danh sách gợi ý có thể rỗng — khách vẫn tiếp tục được (hệ thống ghép sau).&lt;/li&gt;&#xA;&lt;li&gt;Khách có thể chọn helper từ gợi ý, từ &lt;strong&gt;toàn bộ helper&lt;/strong&gt;, hoặc từ &lt;strong&gt;helper yêu thích&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;bl-help-02--helper-đặc-biệt&#34;&gt;BL-HELP-02 · Helper đặc biệt&lt;a class=&#34;anchor&#34; href=&#34;#bl-help-02--helper-%c4%91%e1%ba%b7c-bi%e1%bb%87t&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Khách có thể yêu cầu &lt;strong&gt;helper cụ thể&lt;/strong&gt; (special helper) khi cấu hình dịch vụ; yêu cầu này đi kèm đơn để vận hành ưu tiên ghép.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;bl-help-03--ngôn-ngữ--sở-thích&#34;&gt;BL-HELP-03 · Ngôn ngữ &amp;amp; sở thích&lt;a class=&#34;anchor&#34; href=&#34;#bl-help-03--ng%c3%b4n-ng%e1%bb%af--s%e1%bb%9f-th%c3%adch&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Gợi ý ưu tiên helper đúng &lt;strong&gt;ngôn ngữ&lt;/strong&gt; khách chọn trong tùy chọn dịch vụ (khả năng ngôn ngữ của helper).&lt;/li&gt;&#xA;&lt;li&gt;Helper ở trạng thái hoạt động (&lt;code&gt;ACTIVE&lt;/code&gt;) mới xuất hiện trong gợi ý.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;bl-help-04--helper-yêu-thích&#34;&gt;BL-HELP-04 · Helper yêu thích&lt;a class=&#34;anchor&#34; href=&#34;#bl-help-04--helper-y%c3%aau-th%c3%adch&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Khách đánh dấu helper yêu thích ở trang chi tiết/sau đánh giá; danh sách hiển thị tại Trang chủ và bước chọn helper.&lt;/li&gt;&#xA;&lt;li&gt;Chọn helper yêu thích không đảm bảo chắc chắn — vẫn phụ thuộc lịch rảnh của helper.&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>Màn hình — Tài khoản &amp; tiện ích</title>
				<link>https://akaiunsan.pages.dev/docs/man-hinh/tai-khoan-tien-ich/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/man-hinh/tai-khoan-tien-ich/</guid>
				<description>&lt;h1 id=&#34;màn-hình-tài-khoản--tiện-ích&#34;&gt;Màn hình tài khoản &amp;amp; tiện ích&lt;a class=&#34;anchor&#34; href=&#34;#m%c3%a0n-h%c3%acnh-t%c3%a0i-kho%e1%ba%a3n--ti%e1%bb%87n-%c3%adch&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;editprofile--sửa-hồ-sơ&#34;&gt;EditProfile — Sửa hồ sơ&lt;a class=&#34;anchor&#34; href=&#34;#editprofile--s%e1%bb%ada-h%e1%bb%93-s%c6%a1&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;Other/EditProfile.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-PRO-01&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Thành phần:&lt;/strong&gt; ảnh đại diện (chụp/chọn thư viện), họ tên, giới tính, email, số điện thoại (validate), địa chỉ.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Lỗi:&lt;/strong&gt; số điện thoại/email sai định dạng → nhãn lỗi; lưu xong → hồ sơ trên Trang chủ cập nhật.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;paymentlist--quản-lý-thẻ&#34;&gt;Payment/List — Quản lý thẻ&lt;a class=&#34;anchor&#34; href=&#34;#paymentlist--qu%e1%ba%a3n-l%c3%bd-th%e1%ba%bb&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;Payment/PaymentList.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-PAY-01&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Thành phần:&lt;/strong&gt; danh sách thẻ (4 số cuối, tên, hạn), radio thẻ mặc định, nút xóa có xác nhận, nút &lt;strong&gt;Add&lt;/strong&gt; mở modal Omise (AddCardPayment).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Trạng thái:&lt;/strong&gt; rỗng → nhãn “chưa có thẻ” + nút thanh toán vô hiệu.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;address--addresspick--sổ-địa-chỉ&#34;&gt;Address &amp;amp; Address/Pick — Sổ địa chỉ&lt;a class=&#34;anchor&#34; href=&#34;#address--addresspick--s%e1%bb%95-%c4%91%e1%bb%8ba-ch%e1%bb%89&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;Address/Address.tsx&lt;/code&gt;, &lt;code&gt;Address/PickAddress.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-PRO-02&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Address:&lt;/strong&gt; danh sách địa chỉ đã lưu — thêm/sửa/xóa, đặt mặc định.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Pick:&lt;/strong&gt; nhập tìm gợi ý hoặc chọn điểm trên bản đồ → trả tọa độ + địa chỉ về màn gọi.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;favourite--yêu-thích&#34;&gt;Favourite — Yêu thích&lt;a class=&#34;anchor&#34; href=&#34;#favourite--y%c3%aau-th%c3%adch&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Favourite/Menu&lt;/code&gt;&lt;/strong&gt; (&lt;code&gt;Favourite/Menu.tsx&lt;/code&gt;): hai lựa chọn — Dịch vụ yêu thích / Helper yêu thích.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Favourite/Service&lt;/code&gt;&lt;/strong&gt; (&lt;code&gt;Favourite/Service.tsx&lt;/code&gt;): danh sách dịch vụ đã thích; chạm → mở dịch vụ; trái tim → bỏ thích.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;Favourite/ServiceProvider&lt;/code&gt;&lt;/strong&gt; (&lt;code&gt;Favourite/ServiceProvider.tsx&lt;/code&gt;): danh sách helper đã thích; hỗ trợ xóa hàng loạt (checkbox).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;inboxdetail--chi-tiết-thông-báo&#34;&gt;InboxDetail — Chi tiết thông báo&lt;a class=&#34;anchor&#34; href=&#34;#inboxdetail--chi-ti%e1%ba%bft-th%c3%b4ng-b%c3%a1o&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;Other/InboxDetail.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-NOTI-01&lt;/li&gt;&#xA;&lt;li&gt;Hiển thị tiêu đề, thời gian (đổi múi giờ về Việt Nam), nội dung; thông báo đơn hàng kèm chi tiết giờ làm (đổi ra số giờ).&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;prefertofriend--giới-thiệu-bạn-bè&#34;&gt;PreferToFriend — Giới thiệu bạn bè&lt;a class=&#34;anchor&#34; href=&#34;#prefertofriend--gi%e1%bb%9bi-thi%e1%bb%87u-b%e1%ba%a1n-b%c3%a8&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;Other/PreferToFriend.tsx&lt;/code&gt; · &lt;strong&gt;FR:&lt;/strong&gt; FR-REF-01&lt;/li&gt;&#xA;&lt;li&gt;Danh sách người được giới thiệu (không trùng theo userId), nút chia sẻ; phân trang khi tải thêm.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;aboutus--aboutusview--về-chúng-tôi&#34;&gt;AboutUs (+ AboutUs/View) — Về chúng tôi&lt;a class=&#34;anchor&#34; href=&#34;#aboutus--aboutusview--v%e1%bb%81-ch%c3%bang-t%c3%b4i&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Tệp:&lt;/strong&gt; &lt;code&gt;Other/AboutUs.tsx&lt;/code&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;code&gt;AboutUs&lt;/code&gt; nhận &lt;code&gt;url&lt;/code&gt; từ route params và mở trong WebView; &lt;code&gt;AboutUs/View&lt;/code&gt; là biến thể xem nội dung tĩnh (điều khoản, chính sách).&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>
			<item>
				<title>Quy trình dịch vụ đầu–cuối</title>
				<link>https://akaiunsan.pages.dev/docs/nghiep-vu/quy-trinh-dich-vu/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/nghiep-vu/quy-trinh-dich-vu/</guid>
				<description>&lt;h1 id=&#34;quy-trình-dịch-vụ-đầucuối&#34;&gt;Quy trình dịch vụ đầu–cuối&lt;a class=&#34;anchor&#34; href=&#34;#quy-tr%c3%acnh-d%e1%bb%8bch-v%e1%bb%a5-%c4%91%e1%ba%a7ucu%e1%bb%91i&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;Đăng ký/Đăng nhập&#xA;      │&#xA;      ▼&#xA;Chọn dịch vụ &amp;amp; tùy chọn ──► Giá hiển thị tức thời (BL-PRICE-01)&#xA;      │&#xA;      ▼&#xA;Chọn ngày giờ (FR-BOOK-01) ──► Chọn/gợi ý helper (FR-BOOK-02, BL-HELP-01)&#xA;      │&#xA;      ▼&#xA;Chọn địa chỉ (FR-BOOK-03) ──► Xem lại &amp;amp; áp Khuyến mãi/Điểm (BL-PROMO-03)&#xA;      │&#xA;      ▼&#xA;Tạo đơn → trạng thái PENDING (BL-ORD-01) ──► Thanh toán thẻ/tiền mặt (FR-PAY)&#xA;      │&#xA;      ▼&#xA;Ghép helper → MATCH ──► (có thể gửi Yêu cầu đặc biệt, BL-ORD-04)&#xA;      │&#xA;      ▼&#xA;ON_PROCESS ──► WAITING_CONFIRM ──► Khách xác nhận → RECEIVED&#xA;      │&#xA;      ▼&#xA;Đánh giá sao (BL-ORD-03) + Tích điểm (BL-POINT-02) ──► COMPLETED&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;điểm-chạm-thông-báo&#34;&gt;Điểm chạm thông báo&lt;a class=&#34;anchor&#34; href=&#34;#%c4%91i%e1%bb%83m-ch%e1%ba%a1m-th%c3%b4ng-b%c3%a1o&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Sự kiện&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Khách hàng nhận&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Đơn được ghép helper (&lt;code&gt;MATCH&lt;/code&gt;)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Thông báo đẩy + mục trong Inbox&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Helper bắt đầu làm (&lt;code&gt;ON_PROCESS&lt;/code&gt;)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Thông báo đẩy&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Helper hoàn thành (&lt;code&gt;WAITING_CONFIRM&lt;/code&gt;)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Thông báo yêu cầu xác nhận&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Khuyến mãi / tin mới&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Mục trong tab Khuyến mãi&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;hủy--rủi-ro&#34;&gt;Hủy &amp;amp; rủi ro&lt;a class=&#34;anchor&#34; href=&#34;#h%e1%bb%a7y--r%e1%bb%a7i-ro&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Khách hủy ở &lt;code&gt;PENDING/MATCH&lt;/code&gt; theo &lt;code&gt;BL-ORD-02&lt;/code&gt;; chính sách phí hoàn do vận hành quyết định trên quản trị.&lt;/li&gt;&#xA;&lt;li&gt;Sau &lt;code&gt;ON_PROCESS&lt;/code&gt;, hủy cần xử lý thủ công qua quản trị viên (liên hệ hỗ trợ).&lt;/li&gt;&#xA;&lt;/ul&gt;</description>
			</item>
			<item>
				<title>Giới thiệu</title>
				<link>https://akaiunsan.pages.dev/docs/gioi-thieu/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/gioi-thieu/</guid>
				<description>&lt;h1 id=&#34;giới-thiệu-akaiunsan&#34;&gt;Giới thiệu AKAIUNSAN&lt;a class=&#34;anchor&#34; href=&#34;#gi%e1%bb%9bi-thi%e1%bb%87u-akaiunsan&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;1-nền-tảng-là-gì&#34;&gt;1. Nền tảng là gì?&lt;a class=&#34;anchor&#34; href=&#34;#1-n%e1%bb%81n-t%e1%ba%a3ng-l%c3%a0-g%c3%ac&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;strong&gt;AKAIUNSAN&lt;/strong&gt; là nền tảng trung gian kết nối &lt;strong&gt;Khách hàng&lt;/strong&gt; có nhu cầu chăm sóc nhà cửa với các &lt;strong&gt;Người trợ giúp (Helper)&lt;/strong&gt; đã được xác minh. Khách hàng đặt lịch theo giờ, hệ thống gợi ý helper phù hợp, theo dõi tiến trình đơn hàng, thanh toán bằng thẻ hoặc tiền mặt và đánh giá sau dịch vụ.&lt;/p&gt;&#xA;&lt;h2 id=&#34;2-các-bề-mặt-sản-phẩm&#34;&gt;2. Các bề mặt sản phẩm&lt;a class=&#34;anchor&#34; href=&#34;#2-c%c3%a1c-b%e1%bb%81-m%e1%ba%b7t-s%e1%ba%a3n-ph%e1%ba%a9m&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Bề mặt&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Công nghệ&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Đối tượng&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Mục đích&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Ứng dụng di động (&lt;code&gt;apps/&lt;/code&gt;)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;React Native + Expo&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Khách hàng&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Đặt lịch, thanh toán, theo dõi, đánh giá&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Trang web (&lt;code&gt;frontend/&lt;/code&gt;)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Web&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Khách hàng / Tiếp thị&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Giới thiệu, landing page dịch vụ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Trang quản trị (&lt;code&gt;admin/&lt;/code&gt;)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;React + Vite&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Quản trị viên&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Quản lý dịch vụ, helper, đơn hàng, khuyến mãi&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;API (&lt;code&gt;backend/&lt;/code&gt;)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Express 5 + Sequelize + MariaDB&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Hệ thống&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Toàn bộ logic dữ liệu và nghiệp vụ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;3-ai-nên-đọc-tài-liệu-này&#34;&gt;3. Ai nên đọc tài liệu này?&lt;a class=&#34;anchor&#34; href=&#34;#3-ai-n%c3%aan-%c4%91%e1%bb%8dc-t%c3%a0i-li%e1%bb%87u-n%c3%a0y&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;Ban lãnh đạo / Sản phẩm:&lt;/strong&gt; mục &lt;a href=&#34;https://akaiunsan.pages.dev/docs/tong-quan-he-thong/&#34;&gt;Tổng quan hệ thống&lt;/a&gt;, &lt;a href=&#34;https://akaiunsan.pages.dev/docs/tinh-nang/&#34;&gt;Danh sách tính năng&lt;/a&gt;, &lt;a href=&#34;https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/&#34;&gt;Yêu cầu chức năng&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Lập trình viên:&lt;/strong&gt; toàn bộ mục &lt;a href=&#34;https://akaiunsan.pages.dev/docs/nghiep-vu/&#34;&gt;Nghiệp vụ hệ thống&lt;/a&gt; — mỗi quy tắc &lt;code&gt;BL-&lt;/code&gt; là hợp đồng hành vi cần triển khai đúng.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Kiểm thử viên:&lt;/strong&gt; &lt;a href=&#34;https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/&#34;&gt;Yêu cầu chức năng&lt;/a&gt; (tiêu chí chấp nhận) + &lt;a href=&#34;https://akaiunsan.pages.dev/docs/kiem-thu/&#34;&gt;Hướng dẫn kiểm thử&lt;/a&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Người dùng cuối:&lt;/strong&gt; &lt;a href=&#34;https://akaiunsan.pages.dev/docs/huong-dan-su-dung/&#34;&gt;Hướng dẫn sử dụng&lt;/a&gt; — ngôn ngữ đời thường, không thuật ngữ kỹ thuật.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;4-nguyên-tắc-ngôn-ngữ&#34;&gt;4. Nguyên tắc ngôn ngữ&lt;a class=&#34;anchor&#34; href=&#34;#4-nguy%c3%aan-t%e1%ba%afc-ng%c3%b4n-ng%e1%bb%af&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Ứng dụng hỗ trợ đa ngôn ngữ (&lt;strong&gt;Tiếng Việt&lt;/strong&gt;, &lt;strong&gt;Tiếng Anh&lt;/strong&gt;, &lt;strong&gt;Tiếng Thái&lt;/strong&gt;). Tài liệu này viết bằng tiếng Việt là ngôn ngữ chuẩn; thuật ngữ kỹ thuật giữ nguyên tiếng Anh kèm giải thích ở &lt;a href=&#34;https://akaiunsan.pages.dev/docs/thuattu/&#34;&gt;Bảng thuật ngữ&lt;/a&gt;.&lt;/p&gt;</description>
			</item>
			<item>
				<title>Tổng quan hệ thống</title>
				<link>https://akaiunsan.pages.dev/docs/tong-quan-he-thong/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/tong-quan-he-thong/</guid>
				<description>&lt;h1 id=&#34;tổng-quan-hệ-thống&#34;&gt;Tổng quan hệ thống&lt;a class=&#34;anchor&#34; href=&#34;#t%e1%bb%95ng-quan-h%e1%bb%87-th%e1%bb%91ng&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;1-sơ-đồ-kiến-trúc-mức-cao&#34;&gt;1. Sơ đồ kiến trúc mức cao&lt;a class=&#34;anchor&#34; href=&#34;#1-s%c6%a1-%c4%91%e1%bb%93-ki%e1%ba%bfn-tr%c3%bac-m%e1%bb%a9c-cao&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;pre tabindex=&#34;0&#34;&gt;&lt;code&gt;┌──────────────────┐   ┌──────────────────┐   ┌──────────────────┐&#xA;│  Ứng dụng khách  │   │   Trang quản trị │   │    Trang web     │&#xA;│  hàng (iOS/      │   │   (admin/)       │   │    (frontend/)   │&#xA;│  Android apps/)  │   │                  │   │                  │&#xA;└────────┬─────────┘   └────────┬─────────┘   └────────┬─────────┘&#xA;         │        HTTPS + JWT│              │&#xA;         └──────────────┬────────┴──────────────────────┘&#xA;                        ▼&#xA;              ┌───────────────────┐        ┌──────────────┐&#xA;              │  Backend API      │◄──────►│  MariaDB     │&#xA;              │  (Express 5)      │        │  (Dữ liệu)   │&#xA;              └─────┬───────┬─────┘        └──────────────┘&#xA;                    │       │&#xA;        ┌───────────▼──┐  ┌─▼──────────────────────┐&#xA;        │ Omise (thẻ)  │  │ Firebase FCM (thông báo)│&#xA;        └──────────────┘  └────────────────────────┘&lt;/code&gt;&lt;/pre&gt;&lt;h2 id=&#34;2-thành-phần-chính&#34;&gt;2. Thành phần chính&lt;a class=&#34;anchor&#34; href=&#34;#2-th%c3%a0nh-ph%e1%ba%a7n-ch%c3%adnh&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Thành phần&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Vai trò&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Ghi chú&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;API Backend&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Mọi nghiệp vụ: tài khoản, đơn hàng, giá, khuyến mãi, thông báo&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Bảo vệ bằng JWT&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Ứng dụng khách hàng&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Điểm chạm chính của khách hàng&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Hỗ trợ iOS &amp;amp; Android, đa ngôn ngữ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Trang quản trị&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Quản lý nội dung, helper, đơn, khuyến mãi&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Dành cho nhân viên vận hành&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Omise&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Cổng thanh toán thẻ tín dụng/ghi nợ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Lưu thẻ an toàn theo chuẩn PCI&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Firebase FCM&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Thông báo đẩy realtime&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Kèm badge số lượng chưa đọc&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;3-môi-trường&#34;&gt;3. Môi trường&lt;a class=&#34;anchor&#34; href=&#34;#3-m%c3%b4i-tr%c6%b0%e1%bb%9dng&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Môi trường&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Dùng để&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Dữ liệu&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Dev&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Phát triển tính năng mới&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Dữ liệu giả lập&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Staging&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Kiểm thử chấp nhận (UAT)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Dữ liệu giống production, đã ẩn danh&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Production&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Khách hàng thật&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Dữ liệu thật — chỉ vận hành mới được vào&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;4-vai-trò-người-dùng&#34;&gt;4. Vai trò người dùng&lt;a class=&#34;anchor&#34; href=&#34;#4-vai-tr%c3%b2-ng%c6%b0%e1%bb%9di-d%c3%b9ng&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Vai trò&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Mô tả&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Hành động chính&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Khách hàng (Customer)&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Người đặt dịch vụ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Đăng ký, đặt lịch, thanh toán, đánh giá&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Helper (Người trợ giúp)&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Người thực hiện dịch vụ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Nhận việc, cập nhật tiến trình&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Quản trị viên (Admin)&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Nhân viên vận hành nền tảng&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Quản lý helper, giá, khuyến mãi, xử lý khiếu nại&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Khách (Guest)&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Chưa đăng nhập&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Xem trang giới thiệu, dịch vụ; phải đăng ký để đặt lịch&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;</description>
			</item>
			<item>
				<title>API tổng quan</title>
				<link>https://akaiunsan.pages.dev/docs/api-tong-quan/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/api-tong-quan/</guid>
				<description>&lt;h1 id=&#34;api-tổng-quan&#34;&gt;API tổng quan&lt;a class=&#34;anchor&#34; href=&#34;#api-t%e1%bb%95ng-quan&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Backend Express 5 tổ chức API thành &lt;strong&gt;5 nhóm route&lt;/strong&gt; theo tầng truy cập. Số liệu dưới đây lấy trực tiếp từ &lt;code&gt;backend/routes/&lt;/code&gt; (thay đổi khi backend phát triển — đây là bức tranh định hướng, không phải hợp đồng endpoint chi tiết).&lt;/p&gt;&#xA;&lt;h2 id=&#34;1-các-nhóm-route&#34;&gt;1. Các nhóm route&lt;a class=&#34;anchor&#34; href=&#34;#1-c%c3%a1c-nh%c3%b3m-route&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Nhóm&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Tệp&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Số endpoint&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Xác thực&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Dùng bởi&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Public&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;public.route.ts&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;25&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Không (công khai)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Đăng ký/đăng nhập, quên mật khẩu, banner, danh mục dịch vụ công khai&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Client&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;client.route.ts&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;43&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;JWT khách hàng&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Đơn hàng, địa chỉ, thẻ, thông báo, hồ sơ, gói, yêu thích&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Back-office&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;backoffice.route.ts&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;127&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;JWT quản trị + phân quyền&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Toàn bộ vận hành: dịch vụ, giá, helper, đơn, khuyến mãi&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Agency&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;agency.route.ts&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;8&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;JWT đối tác&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Tích hợp đối tác&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Bot&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;bot.route.ts&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;3&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Khóa riêng&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Tích hợp chatbot&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;2-quy-ước-bảo-mật-chung&#34;&gt;2. Quy ước bảo mật chung&lt;a class=&#34;anchor&#34; href=&#34;#2-quy-%c6%b0%e1%bb%9bc-b%e1%ba%a3o-m%e1%ba%adt-chung&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;/client/*&lt;/code&gt;&lt;/strong&gt; yêu cầu &lt;code&gt;Authorization: Bearer &amp;lt;JWT&amp;gt;&lt;/code&gt; (&lt;code&gt;clientValidator&lt;/code&gt;) — JWT hết hạn → 401 → ứng dụng tự đăng xuất (FR-ACC-05).&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;&lt;code&gt;/back-office/*&lt;/code&gt;&lt;/strong&gt; yêu cầu JWT quản trị, middleware &lt;code&gt;recordHistory&lt;/code&gt; và kiểm tra quyền &lt;code&gt;checkPermission&lt;/code&gt; theo từng phân hệ.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;h2 id=&#34;3-nhóm-endpoint-client-hay-dùng-nhất&#34;&gt;3. Nhóm endpoint client hay dùng nhất&lt;a class=&#34;anchor&#34; href=&#34;#3-nh%c3%b3m-endpoint-client-hay-d%c3%b9ng-nh%e1%ba%a5t&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Đường dẫn&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Phương thức&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Mục đích&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;FR liên quan&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;/auth/signin&lt;/code&gt;, &lt;code&gt;/auth/signup&lt;/code&gt;, &lt;code&gt;/auth/forget-password&lt;/code&gt;, &lt;code&gt;/auth/reset-password&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;POST&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Xác thực&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;FR-ACC-01..03&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;/client/user&lt;/code&gt;, &lt;code&gt;/client/user/language&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;GET / PUT&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Hồ sơ, ngôn ngữ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;FR-PRO-01, FR-ACC-06&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;/client/addresses&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;GET / POST / PUT / DELETE&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Sổ địa chỉ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;FR-PRO-02&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;/client/jobs&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;GET&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Danh sách đơn (lọc &lt;code&gt;orderStatus&lt;/code&gt;, &lt;code&gt;page&lt;/code&gt;)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;FR-BOOK-05&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;/booking/detail&lt;/code&gt;, &lt;code&gt;/booking/detail/edit&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;GET / PUT&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Chi tiết / sửa đơn&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;FR-BOOK-04/06&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;/orders/*&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;POST&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Tạo đơn từng loại dịch vụ, hủy, đánh giá&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;FR-BOOK-04/06&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;/client/credit-cards&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;GET / POST / PUT / DELETE&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Thẻ thanh toán&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;FR-PAY-01/02&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;/charges&lt;/code&gt;, &lt;code&gt;/charges-card&lt;/code&gt;, &lt;code&gt;/charges-plan&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;POST&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Thực hiện thanh toán&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;FR-PAY-02/03&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;/promotion/*&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;GET / POST&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Khuyến mãi (áp mã, chi tiết)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;FR-PAY-04&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;/client/subscriptions&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;GET / PUT&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Gói dịch vụ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;FR-SUB-01..04&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;/client/notifications&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;GET / POST / DELETE&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Thông báo (danh sách, đọc tất cả, xóa)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;FR-NOTI-01&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;/favourite/services&lt;/code&gt;, &lt;code&gt;/favourite/service-providers&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;GET / POST&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Yêu thích&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;FR-FAV-01&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;/services-management*&lt;/code&gt;, &lt;code&gt;/config-price&lt;/code&gt;, &lt;code&gt;/config-point&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;GET&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Dịch vụ, bảng giá, điểm&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;FR-SVC-02/03&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;</description>
			</item>
			<item>
				<title>Quản trị &amp; vận hành</title>
				<link>https://akaiunsan.pages.dev/docs/admin-va-van-hanh/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/admin-va-van-hanh/</guid>
				<description>&lt;h1 id=&#34;trang-quản-trị--vận-hành&#34;&gt;Trang quản trị &amp;amp; vận hành&lt;a class=&#34;anchor&#34; href=&#34;#trang-qu%e1%ba%a3n-tr%e1%bb%8b--v%e1%ba%adn-h%c3%a0nh&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;h2 id=&#34;1-trang-quản-trị-admin&#34;&gt;1. Trang quản trị (admin)&lt;a class=&#34;anchor&#34; href=&#34;#1-trang-qu%e1%ba%a3n-tr%e1%bb%8b-admin&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;Xây bằng React 19 + Vite + TanStack Router, chia theo phân hệ:&lt;/p&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Phân hệ&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Nội dung chính&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Dashboard&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Tổng quan hoạt động&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Apps&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Quản lý ứng dụng/dịch vụ hiển thị cho khách&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Tasks&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Công việc/việc theo dõi&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Users&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Quản lý người dùng và helper&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Chats&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Trao đổi/hỗ trợ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Settings&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Cấu hình hệ thống, phân quyền&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;p&gt;Mọi thao tác quản trị đi qua &lt;code&gt;/back-office/*&lt;/code&gt; với JWT + &lt;code&gt;recordHistory&lt;/code&gt; (ghi vết) + &lt;code&gt;checkPermission&lt;/code&gt; (phân quyền theo phân hệ).&lt;/p&gt;</description>
			</item>
			<item>
				<title>Bảng thuật ngữ</title>
				<link>https://akaiunsan.pages.dev/docs/thuattu/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/thuattu/</guid>
				<description>&lt;h1 id=&#34;bảng-thuật-ngữ&#34;&gt;Bảng thuật ngữ&lt;a class=&#34;anchor&#34; href=&#34;#b%e1%ba%a3ng-thu%e1%ba%adt-ng%e1%bb%af&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Thuật ngữ&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Giải thích&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;AKAIUNSAN&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Nền tảng trung gian dịch vụ chăm sóc nhà cửa&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Helper&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Người trợ giúp thực hiện dịch vụ cho khách hàng&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Đơn (Order/Job)&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Một lần đặt dịch vụ của khách hàng, có trạng thái riêng&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;PENDING / MATCH / …&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Các mã trạng thái đơn — xem &lt;a href=&#34;https://akaiunsan.pages.dev/docs/nghiep-vu/trang-thai-don-hang/&#34;&gt;BL-ORD-01&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Maid / Nany / Elder / AC / Petcare&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Năm nhóm dịch vụ: dọn nhà, chăm bé, chăm người cao tuổi, vệ sinh máy lạnh, chăm thú cưng&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Extra service&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Dịch vụ thêm mua kèm (ủi đồ, dắt chó đi dạo…)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Flexible plan&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Gói linh hoạt: mua giờ dùng dần cho một loại dịch vụ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Fix plan&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Gói cố định: lịch lặp theo tuần, ưu đãi giá&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Giờ còn lại (hour remain)&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Số giờ của gói chưa được sử dụng&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Điểm (Point)&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Điểm thưởng tích từ đơn thành công, quy đổi được thành tiền giảm giá&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Khuyến mãi (Promotion)&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Mã giảm giá: giảm tiền mặt hoặc giảm phần trăm&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Helper yêu thích&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Helper được khách đánh dấu để đặt lại nhanh&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Helper đặc biệt&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Yêu cầu chỉ định một helper cụ thể cho đơn&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Badge&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Số chưa đọc hiển thị trên tab thông báo&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Deep link&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Chạm thông báo mở thẳng màn hình chi tiết tương ứng&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;JWT&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Phiên đăng nhập dạng token, kèm mọi gọi API&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;Omise&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Cổng thanh toán thẻ tín dụng/ghi nợ mà nền tảng sử dụng&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;FCM&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Dịch vụ thông báo đẩy của Google (Firebase Cloud Messaging)&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;strong&gt;UAT&lt;/strong&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Kiểm thử chấp nhận trên môi trường staging trước khi ra mắt&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;</description>
			</item>
			<item>
				<title>Chỉ số tra cứu</title>
				<link>https://akaiunsan.pages.dev/docs/chi-so-tra-cuu/</link>
				<pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
				<guid>https://akaiunsan.pages.dev/docs/chi-so-tra-cuu/</guid>
				<description>&lt;h1 id=&#34;chỉ-số-tra-cứu-mã-định-danh&#34;&gt;Chỉ số tra cứu mã định danh&lt;a class=&#34;anchor&#34; href=&#34;#ch%e1%bb%89-s%e1%bb%91-tra-c%e1%bb%a9u-m%c3%a3-%c4%91%e1%bb%8bnh-danh&#34;&gt;&lt;/a&gt;&lt;/h1&gt;&#xA;&lt;p&gt;Một trang duy nhất để tra mọi mã yêu cầu/quy tắc đã dùng trong tài liệu. Chọn mã để nhảy tới trang định nghĩa.&lt;/p&gt;&#xA;&lt;h2 id=&#34;tính-năng-f&#34;&gt;Tính năng (F)&lt;a class=&#34;anchor&#34; href=&#34;#t%c3%adnh-n%c4%83ng-f&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Mã&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Tên&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Trang&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;F-ACC-01..06&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Đăng ký, đăng nhập, quên mật khẩu, đổi mật khẩu, phiên, đa ngôn ngữ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://akaiunsan.pages.dev/docs/tinh-nang/&#34;&gt;Tính năng — Tài khoản&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;F-HOME-01&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Trang chủ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://akaiunsan.pages.dev/docs/tinh-nang/&#34;&gt;Tính năng — Khám phá&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;F-SVC-01..03&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Danh mục, tùy chọn, bảng giá động&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://akaiunsan.pages.dev/docs/tinh-nang/&#34;&gt;Tính năng — Khám phá&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;F-BOOK-01..07&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Chọn ngày giờ, helper, địa chỉ, tạo đơn, theo dõi, hủy, yêu cầu đặc biệt&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://akaiunsan.pages.dev/docs/tinh-nang/&#34;&gt;Tính năng — Đặt lịch&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;F-PAY-01..05&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Thẻ, thanh toán thẻ/tiền mặt, khuyến mãi, điểm&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://akaiunsan.pages.dev/docs/tinh-nang/&#34;&gt;Tính năng — Thanh toán&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;F-NOTI-01..03&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Inbox, badge, deep link&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://akaiunsan.pages.dev/docs/tinh-nang/&#34;&gt;Tính năng — Thông báo&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;F-PRO-01..02&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Hồ sơ, sổ địa chỉ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://akaiunsan.pages.dev/docs/tinh-nang/&#34;&gt;Tính năng — Hồ sơ&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;F-FAV-01&lt;/code&gt; / &lt;code&gt;F-HIST-01&lt;/code&gt; / &lt;code&gt;F-SUB-01&lt;/code&gt; / &lt;code&gt;F-REF-01&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Yêu thích / Lịch sử &amp;amp; đánh giá / Gói dịch vụ / Giới thiệu&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://akaiunsan.pages.dev/docs/tinh-nang/&#34;&gt;Tính năng — Hồ sơ&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;F-ADM-01..04&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Quản trị: dịch vụ &amp;amp; giá, helper, đơn, khuyến mãi&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://akaiunsan.pages.dev/docs/tinh-nang/&#34;&gt;Tính năng — Quản trị&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;yêu-cầu-chức-năng-fr&#34;&gt;Yêu cầu chức năng (FR)&lt;a class=&#34;anchor&#34; href=&#34;#y%c3%aau-c%e1%ba%a7u-ch%e1%bb%a9c-n%c4%83ng-fr&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;table&gt;&#xA;&#x9;&lt;thead&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Nhóm&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Các mã&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;th&gt;Trang chi tiết&lt;/th&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/thead&gt;&#xA;&#x9;&lt;tbody&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Tài khoản &amp;amp; xác thực&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;FR-ACC-01&lt;/code&gt; → &lt;code&gt;FR-ACC-06&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/tai-khoan-xac-thuc/&#34;&gt;FR-ACC&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Trang chủ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;FR-HOME-01&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/kham-pha-dich-vu/&#34;&gt;FR-HOME/SVC&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Dịch vụ&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;FR-SVC-01&lt;/code&gt; → &lt;code&gt;FR-SVC-03&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/kham-pha-dich-vu/&#34;&gt;FR-HOME/SVC&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Đặt lịch &amp;amp; đơn&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;FR-BOOK-01&lt;/code&gt; → &lt;code&gt;FR-BOOK-07&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/dat-lich-don-hang/&#34;&gt;FR-BOOK&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Thanh toán&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;FR-PAY-01&lt;/code&gt; → &lt;code&gt;FR-PAY-05&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/thanh-toan/&#34;&gt;FR-PAY&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Thông báo&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;FR-NOTI-01&lt;/code&gt; → &lt;code&gt;FR-NOTI-03&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/thong-bao/&#34;&gt;FR-NOTI&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&#x9;&#x9;&lt;tr&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;Hồ sơ &amp;amp; tiện ích&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;code&gt;FR-PRO-01/02&lt;/code&gt;, &lt;code&gt;FR-FAV-01&lt;/code&gt;, &lt;code&gt;FR-HIST-01&lt;/code&gt;, &lt;code&gt;FR-SUB-01&lt;/code&gt;, &lt;code&gt;FR-REF-01&lt;/code&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&#x9;&#x9;&lt;td&gt;&lt;a href=&#34;https://akaiunsan.pages.dev/docs/yeu-cau-chuc-nang/ho-so-tien-ich/&#34;&gt;FR-PRO &amp;amp; tiện ích&lt;/a&gt;&lt;/td&gt;&#xA;&#x9;&#x9;&#x9;&lt;/tr&gt;&#xA;&#x9;&lt;/tbody&gt;&#xA;&lt;/table&gt;&#xA;&lt;h2 id=&#34;yêu-cầu-phi-chức-năng-nfr&#34;&gt;Yêu cầu phi chức năng (NFR)&lt;a class=&#34;anchor&#34; href=&#34;#y%c3%aau-c%e1%ba%a7u-phi-ch%e1%bb%a9c-n%c4%83ng-nfr&#34;&gt;&lt;/a&gt;&lt;/h2&gt;&#xA;&lt;p&gt;&lt;code&gt;NFR-01&lt;/code&gt; Hiệu năng · &lt;code&gt;NFR-02&lt;/code&gt; Bảo mật · &lt;code&gt;NFR-03&lt;/code&gt; Sẵn sàng · &lt;code&gt;NFR-04&lt;/code&gt; Đa ngôn ngữ · &lt;code&gt;NFR-05&lt;/code&gt; Giao diện nhất quán · &lt;code&gt;NFR-06&lt;/code&gt; Tương thích · &lt;code&gt;NFR-07&lt;/code&gt; Khả năng kiểm thử · &lt;code&gt;NFR-08&lt;/code&gt; Quan sát · &lt;code&gt;NFR-09&lt;/code&gt; Khả năng truy cập · &lt;code&gt;NFR-10&lt;/code&gt; Dữ liệu cá nhân&lt;/p&gt;</description>
			</item>
	</channel>
</rss>
