Skip to Content
DocumentationSoftware Requirements Specification

📋 W4S - Software Requirements Specification

Phiên bản: 1.0.0 | Ngày cập nhật: 19/12/2025 | Tác giả: AnhBen


1. Giới Thiệu (Introduction)

1.1 Mục Đích (Purpose)

Tài liệu này mô tả chi tiết các yêu cầu phần mềm cho hệ thống W4S (Wallet For Self) - một ứng dụng quản lý tài chính cá nhân toàn diện. W4S được thiết kế để giúp người dùng theo dõi thu chi, quản lý ngân sách và đạt được các mục tiêu tài chính cá nhân.

Đối tượng sử dụng tài liệu:

  • Product Owner & Business Analysts
  • Development Team (Frontend, Backend, Mobile)
  • QA/QC Team
  • DevOps & Infrastructure Team
  • Stakeholders & Investors

1.2 Phạm Vi (Scope)

W4S là một hệ thống quản lý tài chính cá nhân bao gồm:

Thành phầnMô tả
📱 Mobile AppỨng dụng iOS & Android (React Native/Flutter)
🌐 Web PortalGiao diện web quản lý (Optional)
⚙️ Backend APIRESTful API services
🗄️ DatabasePostgreSQL + Redis Cache
📊 AnalyticsHệ thống báo cáo & phân tích

Phạm vi chức năng chính:

  • Quản lý nhiều ví (wallets) với đa loại tiền tệ
  • Ghi nhận giao dịch thu/chi/chuyển khoản
  • Quản lý ngân sách theo danh mục
  • Theo dõi công nợ (cho vay/đi vay)
  • Mục tiêu tiết kiệm
  • Báo cáo & phân tích chi tiêu
  • Giao dịch định kỳ & nhắc nhở

1.3 Định Nghĩa & Viết Tắt

Thuật ngữĐịnh nghĩa
W4SWallet For Self - Tên sản phẩm
WalletVí tiền - đơn vị chứa tiền (tiền mặt, tài khoản ngân hàng, ví điện tử…)
TransactionGiao dịch tài chính (thu/chi/chuyển khoản)
CategoryDanh mục phân loại giao dịch
BudgetNgân sách - giới hạn chi tiêu theo danh mục/thời gian
RecurringGiao dịch định kỳ (lặp lại theo chu kỳ)
Debt/LoanCông nợ - khoản cho vay hoặc đi vay
Saving GoalMục tiêu tiết kiệm
LedgerSổ cái - ghi nhận tất cả giao dịch
FRFunctional Requirement
NFRNon-Functional Requirement
APIApplication Programming Interface
JWTJSON Web Token
OTPOne-Time Password

2. Mô Tả Tổng Quan (Overall Description)

2.1 Góc Nhìn Sản Phẩm (Product Perspective)

┌─────────────────────────────────────────────────────────────────┐ │ W4S ECOSYSTEM │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Mobile │ │ Web │ │ Admin │ │ │ │ App │ │ Portal │ │ Portal │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ │ │ │ │ └───────────────┼───────────────┘ │ │ │ │ │ ▼ │ │ ┌─────────────────┐ │ │ │ API Gateway │ │ │ │ (O24) │ │ │ └────────┬────────┘ │ │ │ │ │ ┌──────────────┼──────────────┐ │ │ ▼ ▼ ▼ │ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │ │ Auth │ │ Core │ │ Report │ │ │ │ Service │ │ Service │ │ Service │ │ │ └────┬────┘ └────┬────┘ └────┬────┘ │ │ │ │ │ │ │ └─────────────┼─────────────┘ │ │ ▼ │ │ ┌─────────────────────────┐ │ │ │ SQLServer DB │ │ │ │ + Redis Cache │ │ │ └─────────────────────────┘ │ │ │ └─────────────────────────────────────────────────────────────────┘

Tính năng:

Tính năngW4S
Quản lý ví
Đa tiền tệ
Ngân sách
Công nợ
Mục tiêu tiết kiệm
Báo cáo
API Public
Self-hosted
Audit Trail

2.2 Phân Loại Người Dùng

Loại Người DùngMô Tả
Người Dùng Cuối (End Users)Cá nhân quản lý tài chính cá nhân, theo dõi thu chi, lập ngân sách.

2.3 Môi Trường Vận Hành

Thành phầnYêu cầu
Mobile AppiOS 13+ / Android 8+
Web BrowserChrome 80+, Firefox 75+, Safari 13+, Edge 80+
BackendNode.js 18+ / Go 1.20+
DatabaseSQLServer 2019+
CacheRedis 7+
ContainerDocker 20+, Kubernetes 1.25+
CloudAWS / GCP / Azure compatible

2.4 Ràng Buộc Thiết Kế & Triển Khai

Các ràng buộc quan trọng:

  1. Bảo mật: Tuân thủ OWASP Top 10, mã hóa dữ liệu nhạy cảm
  2. Hiệu năng: Response time < 200ms cho 95% requests
  3. Khả dụng: Uptime 99.9%
  4. Đa ngôn ngữ: Hỗ trợ tiếng Việt và tiếng Anh
  5. Offline-first: Mobile app phải hoạt động offline
  6. GDPR Compliance: Quyền xóa dữ liệu, export data

3. Kiến Trúc Hệ Thống (System Architecture)

3.1 Kiến Trúc Tổng Quan

┌────────────────────────────────────────────────────────────────────────┐ │ CLIENT LAYER │ ├────────────────────────────────────────────────────────────────────────┤ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │ iOS App │ │ Android App │ │ Web App │ │ Admin Panel │ │ │ │(ReactNative)│ │(ReactNative)│ │ (Next.js) │ │ (Next.js) │ │ │ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ └──────┬──────┘ │ │ │ │ │ │ │ │ └────────────────┴────────────────┴────────────────┘ │ │ │ │ │ ▼ │ │ ┌───────────────┐ │ │ │ CDN / WAF │ │ │ └───────┬───────┘ │ └──────────────────────────────────┼─────────────────────────────────────┘ ┌──────────────────────────────────┼─────────────────────────────────────┐ │ API GATEWAY LAYER │ ├──────────────────────────────────┼─────────────────────────────────────┤ │ ┌───────▼───────┐ │ │ │ API Gateway │ │ │ │ Rate Limiting │ │ │ │ Auth/JWT │ │ │ └───────┬───────┘ │ └──────────────────────────────────┼─────────────────────────────────────┘ ┌──────────────────────────────────┼─────────────────────────────────────┐ │ SERVICE LAYER (Microservices) │ ├──────────────────────────────────┼─────────────────────────────────────┤ │ ┌──────────┐ ┌──────────┐ ┌─▼─────────┐ ┌──────────┐ │ │ │ Auth │ │ Wallet │ │Transaction│ │ Budget │ │ │ │ Service │ │ Service │ │ Service │ │ Service │ │ │ └────┬─────┘ └────┬─────┘ └─────┬─────┘ └────┬─────┘ │ │ │ │ │ │ │ │ ┌────┴────┐ ┌─────┴────┐ ┌──────┴─────┐ ┌────┴─────┐ │ │ │ Debt │ │ Saving │ │ Report │ │ Notify │ │ │ │ Service │ │ Service │ │ Service │ │ Service │ │ │ └────┬────┘ └────┬─────┘ └──────┬─────┘ └────┬─────┘ │ │ │ │ │ │ │ │ └────────────┴───────────────┴────────────┘ │ │ │ │ └──────────────────────────────┼─────────────────────────────────────────┘ ┌──────────────────────────────┼────────────────────────────────────────┐ │ DATA LAYER │ ├──────────────────────────────┼────────────────────────────────────────┤ │ ┌─────────────┐ ┌──────▼──────┐ ┌─────────────┐ │ │ │ Redis │◄───│ SQLServer │───►│ S3/MinIO │ │ │ │ (Cache) │ │ (Master) │ │ (Storage) │ │ │ └─────────────┘ └──────┬──────┘ └─────────────┘ │ │ │ │ │ ┌──────▼──────┐ │ │ │ SQLServer │ │ │ │ (Replica) │ │ │ └─────────────┘ │ └───────────────────────────────────────────────────────────────────────┘

3.2 Giả Định Triển Khai

Môi trườngCấu hình
DevelopmentDocker Compose, SQLite/PostgreSQL local
StagingKubernetes cluster (3 nodes), PostgreSQL managed
ProductionKubernetes cluster (5+ nodes), PostgreSQL HA, Redis Cluster

4. Yêu Cầu Chức Năng (Functional Requirements)

4.1 Quản Lý Người Dùng & Bảo Mật (User & Security Management)

🔐

Module quản lý xác thực, phân quyền và bảo mật tài khoản người dùng.

FR-01.01: Đăng ký tài khoản

Thuộc tínhChi tiết
Mô tảNgười dùng có thể đăng ký tài khoản mới bằng email hoặc số điện thoại
InputEmail/Phone, Password, Full Name
Validation- Email: format hợp lệ, chưa tồn tại
- Phone: 10-11 số, bắt đầu bằng 0
- Password: min 8 ký tự, có chữ hoa, chữ thường, số
OutputTài khoản được tạo, gửi OTP xác thực
Edge cases- Email đã tồn tại → Báo lỗi “Email đã được sử dụng”
- Rate limit: max 5 lần đăng ký/IP/giờ

FR-01.02: Đăng nhập

Thuộc tínhChi tiết
Mô tảNgười dùng đăng nhập bằng email/phone + password
InputEmail/Phone, Password, Device Info
Validation- Tài khoản phải đã xác thực
- Password đúng
OutputAccess Token (JWT), Refresh Token
Edge cases- Sai password 5 lần → Lock 15 phút
- Đăng nhập từ thiết bị mới → Gửi notification

FR-01.03: Xác thực 2 yếu tố (2FA)

Thuộc tínhChi tiết
Mô tảBật/tắt xác thực 2 yếu tố qua OTP hoặc Authenticator App
OptionsSMS OTP, Email OTP, Google Authenticator, Biometric
FlowLogin → Nhập OTP/Biometric → Access granted

FR-01.04: Quản lý phiên đăng nhập

Thuộc tínhChi tiết
Mô tảXem và quản lý các thiết bị đang đăng nhập
Features- Xem danh sách devices
- Đăng xuất từ xa
- Đăng xuất tất cả thiết bị

FR-01.05: Quên mật khẩu

Thuộc tínhChi tiết
Mô tảReset password qua email/SMS
FlowNhập email → Nhận OTP → Verify → Đặt password mới
ValidationOTP expire sau 5 phút, max 3 lần nhập sai

FR-01.06: Đổi mật khẩu

Thuộc tínhChi tiết
Mô tảThay đổi mật khẩu khi đã đăng nhập
InputCurrent password, New password, Confirm password
Validation- Password hiện tại đúng
- Password mới khác password cũ

4.2 Quản Lý Ví (Wallet Management)

💰

Module quản lý các ví tiền của người dùng.

FR-02.01: Tạo ví mới

Thuộc tínhChi tiết
Mô tảTạo ví mới với thông tin cơ bản
InputTên ví, Loại ví, Tiền tệ, Số dư ban đầu, Icon, Màu sắc
Loại víCash, Bank Account, Credit Card, E-Wallet, Investment, Other
Validation- Tên ví: 1-50 ký tự, unique trong account
- Số dư: >= 0 (trừ Credit Card)
OutputVí được tạo với balance = initial amount

FR-02.02: Chỉnh sửa ví

Thuộc tínhChi tiết
Mô tảCập nhật thông tin ví
EditableTên, Icon, Màu sắc, Ghi chú
Non-editableTiền tệ (sau khi có transaction)

FR-02.03: Xóa ví / Lưu trữ ví

Thuộc tínhChi tiết
Mô tảXóa mềm (archive) hoặc xóa cứng ví
ArchiveVí không hiển thị trong danh sách, có thể restore
DeleteChỉ xóa được nếu balance = 0 và không có transaction
Edge casesVí có transaction → Chỉ được archive

FR-02.04: Chuyển tiền giữa các ví

Thuộc tínhChi tiết
Mô tảChuyển tiền từ ví A sang ví B
InputVí nguồn, Ví đích, Số tiền, Phí (optional), Ghi chú
Validation- Số dư ví nguồn >= số tiền + phí
- Ví nguồn != Ví đích
OutputTạo 2 transactions (OUT từ A, IN vào B) linked với nhau
Multi-currencyNếu khác tiền tệ → Yêu cầu nhập tỷ giá

FR-02.05: Điều chỉnh số dư

Thuộc tínhChi tiết
Mô tảĐiều chỉnh số dư thực tế khi có sai lệch
InputVí, Số dư thực tế, Lý do
OutputTạo transaction adjustment với số tiền chênh lệch
AuditGhi log đầy đủ cho mục đích kiểm tra

4.3 Quản Lý Giao Dịch (Transaction Management)

💳

Core module - ghi nhận và quản lý tất cả giao dịch tài chính.

FR-03.01: Tạo giao dịch thu

Thuộc tínhChi tiết
Mô tảGhi nhận khoản thu nhập
InputVí, Số tiền, Danh mục, Ngày, Ghi chú, Tags, Ảnh đính kèm
Validation- Số tiền > 0
- Danh mục thuộc type INCOME
OutputTransaction created, Wallet balance += amount

FR-03.02: Tạo giao dịch chi

Thuộc tínhChi tiết
Mô tảGhi nhận khoản chi tiêu
InputVí, Số tiền, Danh mục, Ngày, Ghi chú, Tags, Ảnh đính kèm, Vendor
Validation- Số tiền > 0
- Danh mục thuộc type EXPENSE
- Optional: Check budget warning
OutputTransaction created, Wallet balance -= amount
Budget CheckNếu vượt ngân sách → Hiển thị warning (không block)

FR-03.03: Chỉnh sửa giao dịch

Thuộc tínhChi tiết
Mô tảSửa thông tin giao dịch đã tạo
EditableSố tiền, Danh mục, Ngày, Ghi chú, Tags, Ảnh
Non-editableVí (nếu muốn đổi ví → Xóa và tạo mới)
OutputCập nhật wallet balance tương ứng

FR-03.04: Xóa giao dịch

Thuộc tínhChi tiết
Mô tảXóa giao dịch và hoàn lại số dư
Soft deleteĐánh dấu deleted, có thể restore trong 30 ngày
Hard deleteXóa vĩnh viễn sau 30 ngày
OutputWallet balance được hoàn lại

FR-03.05: Tìm kiếm & Lọc giao dịch

Thuộc tínhChi tiết
Mô tảTìm kiếm giao dịch theo nhiều tiêu chí
Filters- Khoảng thời gian
- Loại (thu/chi/chuyển)
- Danh mục
- Ví
- Số tiền (min-max)
- Tags
- Keyword trong ghi chú
SortNgày, Số tiền, Danh mục
OutputDanh sách giao dịch + tổng thu/chi

FR-03.06: Duplicate giao dịch

Thuộc tínhChi tiết
Mô tảTạo giao dịch mới dựa trên giao dịch cũ
FlowChọn transaction → Duplicate → Sửa ngày/số tiền → Save

4.4 Quản Lý Danh Mục & Tags (Category & Tag Management)

🏷️

Phân loại giao dịch theo danh mục và tags.

FR-04.01: Danh mục mặc định

Thuộc tínhChi tiết
INCOMELương, Thưởng, Đầu tư, Cho thuê, Quà tặng, Khác
EXPENSEĂn uống, Di chuyển, Mua sắm, Giải trí, Y tế, Giáo dục, Hoá đơn, Nhà ở, Gia đình, Khác

FR-04.02: Tạo danh mục tùy chỉnh

Thuộc tínhChi tiết
Mô tảTạo danh mục mới hoặc danh mục con
InputTên, Loại (Income/Expense), Icon, Màu, Parent category
Validation- Tên unique trong cùng level
- Max 2 cấp (parent → child)

FR-04.03: Quản lý Tags

Thuộc tínhChi tiết
Mô tảTạo và gán nhiều tags cho một giao dịch
Use case#du_lich_da_nang, #project_abc, #thue_hang_thang
FeaturesAuto-suggest, thống kê theo tag

4.5 Quản Lý Ngân Sách (Budget Management)

📊

Thiết lập và theo dõi ngân sách chi tiêu.

FR-05.01: Tạo ngân sách

Thuộc tínhChi tiết
Mô tảĐặt giới hạn chi tiêu cho danh mục trong khoảng thời gian
InputDanh mục, Số tiền giới hạn, Chu kỳ (tuần/tháng/quý/năm), Ngày bắt đầu
Types- Overall budget (tổng chi tiêu)
- Category budget (theo danh mục)

FR-05.02: Theo dõi ngân sách

Thuộc tínhChi tiết
Mô tảHiển thị tiến độ sử dụng ngân sách
DisplayProgress bar, % đã dùng, số tiền còn lại, dự báo
Alerts- 80% → Warning notification
- 100% → Alert notification

FR-05.03: Rollover ngân sách

Thuộc tínhChi tiết
Mô tảChuyển số dư chưa dùng sang kỳ tiếp theo
OptionEnable/Disable per budget
ExampleBudget 5M, dùng 4M → Kỳ sau có 6M

4.6 Giao Dịch Định Kỳ & Nhắc Nhở (Recurring Transactions & Reminders)

🔄

Tự động hóa giao dịch lặp lại và nhắc nhở thanh toán.

FR-06.01: Tạo giao dịch định kỳ

Thuộc tínhChi tiết
Mô tảThiết lập giao dịch tự động lặp lại
InputTemplate giao dịch, Tần suất, Ngày bắt đầu, Ngày kết thúc (optional)
FrequencyDaily, Weekly, Bi-weekly, Monthly, Quarterly, Yearly, Custom
CustomMỗi X ngày/tuần/tháng, Ngày cụ thể trong tháng

FR-06.02: Xử lý giao dịch định kỳ

Thuộc tínhChi tiết
Auto-createTự động tạo transaction vào ngày đến hạn
ConfirmationOption yêu cầu xác nhận trước khi tạo
SkipBỏ qua 1 lần mà không hủy recurring

FR-06.03: Nhắc nhở thanh toán

Thuộc tínhChi tiết
Mô tảNhắc nhở trước ngày đến hạn
Options1 ngày, 3 ngày, 1 tuần trước
ChannelsPush notification, Email, SMS (optional)

4.7 Theo Dõi khoản vay (Debt & Loan Tracking)

🤝

Quản lý các khoản cho vay và đi vay.

FR-07.01: Tạo khoản cho vay (Lend)

Thuộc tínhChi tiết
Mô tảGhi nhận khoản tiền cho người khác vay
InputNgười vay, Số tiền, Ngày cho vay, Ngày đến hạn, Lãi suất (optional), Ghi chú
Output- Tạo debt record
- Trừ wallet balance
- Tạo transaction type = LEND

FR-07.02: Tạo khoản đi vay (Borrow)

Thuộc tínhChi tiết
Mô tảGhi nhận khoản tiền đi vay
InputNgười cho vay, Số tiền, Ngày vay, Ngày đến hạn, Lãi suất (optional), Ghi chú
Output- Tạo loan record
- Cộng wallet balance
- Tạo transaction type = BORROW

FR-07.03: Ghi nhận trả nợ

Thuộc tínhChi tiết
Mô tảGhi nhận thanh toán một phần hoặc toàn bộ
InputKhoản nợ, Số tiền trả, Ngày trả
PartialCập nhật remaining balance
FullĐánh dấu khoản nợ = SETTLED

FR-07.04: Theo dõi & Nhắc nhở công nợ

Thuộc tínhChi tiết
DashboardTổng cho vay, Tổng đi vay, Net position
AlertsNhắc nhở trước ngày đến hạn
OverdueHighlight các khoản quá hạn

4.8 Mục Tiêu Tiết Kiệm (Saving Goals)

🎯

Đặt và theo dõi mục tiêu tiết kiệm.

FR-08.01: Tạo mục tiêu

Thuộc tínhChi tiết
Mô tảĐặt mục tiêu tiết kiệm với thời hạn
InputTên mục tiêu, Số tiền mục tiêu, Ngày mục tiêu, Icon, Màu sắc
Example”Mua iPhone 16” - 30,000,000 VND - 30/06/2026

FR-08.02: Gửi tiền vào mục tiêu

Thuộc tínhChi tiết
Mô tảChuyển tiền từ ví vào mục tiêu
FlowChọn ví nguồn → Nhập số tiền → Confirm
OutputWallet balance -= amount, Goal balance += amount

FR-08.03: Rút tiền từ mục tiêu

Thuộc tínhChi tiết
Mô tảRút tiền từ mục tiêu về ví
ValidationKhông rút quá số dư mục tiêu

FR-08.04: Theo dõi tiến độ

Thuộc tínhChi tiết
DisplayProgress bar, % hoàn thành, còn thiếu, dự báo ngày hoàn thành
SuggestionGợi ý số tiền cần gửi mỗi tháng để đạt mục tiêu

4.9 Báo Cáo & Phân Tích (Reports & Analytics)

📈

Báo cáo chi tiết và insights về tài chính cá nhân.

FR-09.01: Báo cáo tổng quan

Thuộc tínhChi tiết
Mô tảDashboard tổng quan tình hình tài chính
Metrics- Tổng tài sản
- Thu/Chi trong kỳ
- Net cash flow
- Top categories
PeriodNgày, Tuần, Tháng, Quý, Năm, Custom

FR-09.02: Báo cáo thu chi theo thời gian

Thuộc tínhChi tiết
ChartsLine chart thu/chi theo thời gian
ComparisonSo sánh với kỳ trước
TrendXu hướng tăng/giảm

FR-09.03: Báo cáo theo danh mục

Thuộc tínhChi tiết
ChartsPie chart, Bar chart theo category
Drill-downClick vào category → Xem chi tiết transactions

FR-09.04: Báo cáo theo ví

Thuộc tínhChi tiết
ContentBalance history, In/Out flow per wallet
ChartsStacked bar chart các ví

FR-09.05: Báo cáo ngân sách

Thuộc tínhChi tiết
ContentTiến độ từng budget, Over/Under budget
AlertsList các budget sắp/đã vượt

FR-09.06: Báo cáo công nợ

Thuộc tínhChi tiết
ContentReceivables vs Payables, Aging report
AlertsOverdue debts/loans

4.10 Xuất Dữ Liệu & Kiểm Toán (Export & Audit)

📤

Xuất dữ liệu và theo dõi lịch sử thay đổi.

FR-10.01: Xuất dữ liệu

Thuộc tínhChi tiết
FormatsCSV, Excel (XLSX), PDF
ScopeTransactions, Wallets, Reports
FiltersDate range, Categories, Wallets

FR-10.02: Import dữ liệu

Thuộc tínhChi tiết
FormatsCSV, Excel
MappingUI để map columns với fields
ValidationPreview trước khi import, rollback nếu lỗi

FR-10.03: Audit Trail

Thuộc tínhChi tiết
TrackedMọi thay đổi: Create, Update, Delete
FieldsWho, When, What changed, Old value, New value
RetentionLưu trữ tối thiểu 2 năm

FR-10.04: Backup & Restore

Thuộc tínhChi tiết
Auto backupDaily encrypted backup to cloud
Manual backupExport full data anytime
RestoreKhôi phục từ backup file

5. Yêu Cầu Phi Chức Năng (Non-Functional Requirements)

5.1 Hiệu Năng (Performance)

MetricRequirement
Response Time95th percentile < 200ms
ThroughputMin 1000 requests/second
Database Query99% queries < 100ms
App LaunchCold start < 3 seconds
Offline SyncSync < 10 seconds for 1000 transactions

5.2 Bảo Mật (Security)

RequirementImplementation
AuthenticationJWT với refresh token, 2FA support
AuthorizationRole-based access control (RBAC)
Data EncryptionTLS 1.3 in transit, AES-256 at rest
Passwordbcrypt với cost factor 12
Sensitive DataMask account numbers, encrypt PII
API SecurityRate limiting, CORS, CSRF protection
OWASPCompliance với OWASP Top 10
Penetration TestQuarterly security assessment

5.3 Khả Dụng (Availability)

MetricRequirement
Uptime99.9% (max 8.76 hours downtime/year)
RTORecovery Time Objective < 1 hour
RPORecovery Point Objective < 15 minutes
Maintenance WindowMax 4 hours/month, off-peak hours

5.4 Khả Năng Mở Rộng (Scalability)

AspectRequirement
Horizontal ScalingAuto-scale based on load
User CapacitySupport 100K+ concurrent users
Data VolumeHandle 10M+ transactions per user
Multi-regionReady for multi-region deployment

5.5 Kiểm Toán & Tuân Thủ (Audit & Compliance)

RequirementDetails
Audit LoggingComprehensive audit trail
Data RetentionConfigurable, min 7 years for financial data
GDPRRight to erasure, data portability
PCI-DSSReady nếu tích hợp payment

6. Yêu Cầu Dữ Liệu (Data Requirements)

6.1 Entity Relationship Diagram

┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ USER │ │ WALLET │ │ TRANSACTION │ ├─────────────┤ ├─────────────┤ ├─────────────┤ │ id (PK) │──┐ │ id (PK) │──┐ │ id (PK) │ │ email │ │ │ user_id (FK)│◄─┘ │ wallet_id │◄┐ │ phone │ │ │ name │ ┌───►│ category_id │ │ │ password │ │ │ type │ │ │ amount │ │ │ full_name │ │ │ currency │ │ │ type │ │ │ avatar │ │ │ balance │ │ │ date │ │ │ settings │ │ │ icon │ │ │ note │ │ │ created_at │ │ │ color │ │ │ created_at │ │ │ updated_at │ │ │ is_archived │ │ │ updated_at │ │ └─────────────┘ │ │ created_at │ │ │ deleted_at │ │ │ └─────────────┘ │ └─────────────┘ │ │ │ │ │ ┌─────────────┐ │ ┌─────────────┐ │ │ │ CATEGORY │ │ │ DEBT │ │ │ ├─────────────┤ │ ├─────────────┤ │ │ │ id (PK) │──┘ │ id (PK) │ │ │ │ user_id (FK)│◄──┐ │ user_id(FK) │◄┘ │ │ parent_id │ │ │ wallet_id │ │ │ name │ │ │ contact │ │ │ type │ │ │ amount │ │ │ icon │ │ │ remaining │ │ │ color │ │ │ type │ │ │ is_system │ │ │ due_date │ │ └─────────────┘ │ │ status │ │ │ └─────────────┘ │ ┌─────────────┐ │ │ │ BUDGET │ │ ┌─────────────┐ │ ├─────────────┤ │ │ SAVING_GOAL │ │ │ id (PK) │ │ ├─────────────┤ └───►│ user_id(FK) │ │ │ id (PK) │ │ category_id │◄──┘ │ user_id(FK) │◄┐ │ amount │ │ name │ │ │ period │ │ target │ │ │ start_date │ │ current │ │ │ rollover │ │ target_date │ │ └─────────────┘ │ status │ │ └─────────────┘ │ ┌─────────────┐ │ │ RECURRING │ │ ├─────────────┤ │ │ id (PK) │ │ │ user_id(FK) │◄──────────────────────┘ │ template │ │ frequency │ │ next_run │ │ end_date │ │ is_active │ └─────────────┘

6.2 Xử Lý Đa Tiền Tệ

AspectImplementation
Base CurrencyMỗi user chọn 1 base currency
Wallet CurrencyMỗi wallet có 1 currency cố định
Exchange Rate- Tự động lấy từ API (daily)
- Cho phép nhập manual
ConversionChuyển đổi khi báo cáo tổng hợp
StorageLưu amount gốc + converted amount

6.3 Khái Niệm Ledger (Sổ Cái)

┌────────────────────────────────────────────────────────────────┐ │ LEDGER ENTRIES │ ├────────────────────────────────────────────────────────────────┤ │ Mỗi transaction tạo ra các ledger entries theo nguyên tắc: │ │ │ │ EXPENSE (Chi tiêu): │ │ Debit: Expense Category │ │ Credit: Wallet (Cash/Bank) │ │ │ │ INCOME (Thu nhập): │ │ Debit: Wallet (Cash/Bank) │ │ Credit: Income Category │ │ │ │ TRANSFER (Chuyển khoản): │ │ Debit: Wallet B (destination) │ │ Credit: Wallet A (source) │ │ │ │ → Đảm bảo cân bằng: Total Debit = Total Credit │ └────────────────────────────────────────────────────────────────┘

7. Yêu Cầu API (API Requirements)

7.1 Tổng Quan API

AspectSpecification
ProtocolHTTPS (TLS 1.3)
FormatRESTful JSON
VersioningURL path (/api/v1/)
AuthenticationBearer JWT Token
Rate Limit100 requests/minute per user

7.2 Danh Sách API Chính

Authentication APIs

EndpointMethodPurpose
/auth/registerPOSTĐăng ký tài khoản mới
/auth/loginPOSTĐăng nhập
/auth/logoutPOSTĐăng xuất
/auth/refreshPOSTRefresh access token
/auth/verify-otpPOSTXác thực OTP
/auth/forgot-passwordPOSTYêu cầu reset password
/auth/reset-passwordPOSTĐặt password mới
/auth/2fa/enablePOSTBật 2FA
/auth/2fa/verifyPOSTXác thực 2FA

User APIs

EndpointMethodPurpose
/users/meGETLấy thông tin user hiện tại
/users/mePUTCập nhật thông tin user
/users/me/passwordPUTĐổi mật khẩu
/users/me/sessionsGETDanh sách phiên đăng nhập
/users/me/sessions/:idDELETEĐăng xuất 1 phiên

Wallet APIs

EndpointMethodPurpose
/walletsGETDanh sách ví
/walletsPOSTTạo ví mới
/wallets/:idGETChi tiết ví
/wallets/:idPUTCập nhật ví
/wallets/:idDELETEXóa/Archive ví
/wallets/:id/adjustPOSTĐiều chỉnh số dư
/wallets/transferPOSTChuyển tiền giữa ví

Transaction APIs

EndpointMethodPurpose
/transactionsGETDanh sách giao dịch (với filter)
/transactionsPOSTTạo giao dịch mới
/transactions/:idGETChi tiết giao dịch
/transactions/:idPUTCập nhật giao dịch
/transactions/:idDELETEXóa giao dịch
/transactions/:id/duplicatePOSTDuplicate giao dịch

Category APIs

EndpointMethodPurpose
/categoriesGETDanh sách danh mục
/categoriesPOSTTạo danh mục mới
/categories/:idPUTCập nhật danh mục
/categories/:idDELETEXóa danh mục

Budget APIs

EndpointMethodPurpose
/budgetsGETDanh sách ngân sách
/budgetsPOSTTạo ngân sách
/budgets/:idGETChi tiết & tiến độ
/budgets/:idPUTCập nhật ngân sách
/budgets/:idDELETEXóa ngân sách

Recurring APIs

EndpointMethodPurpose
/recurringGETDanh sách giao dịch định kỳ
/recurringPOSTTạo mới
/recurring/:idPUTCập nhật
/recurring/:idDELETEXóa
/recurring/:id/skipPOSTBỏ qua lần tiếp theo

Debt APIs

EndpointMethodPurpose
/debtsGETDanh sách công nợ
/debtsPOSTTạo khoản cho vay/đi vay
/debts/:idGETChi tiết công nợ
/debts/:id/paymentPOSTGhi nhận trả nợ
/debts/:id/settlePOSTĐánh dấu đã thanh toán

Saving Goal APIs

EndpointMethodPurpose
/goalsGETDanh sách mục tiêu
/goalsPOSTTạo mục tiêu mới
/goals/:idGETChi tiết mục tiêu
/goals/:idPUTCập nhật mục tiêu
/goals/:id/depositPOSTGửi tiền vào
/goals/:id/withdrawPOSTRút tiền ra

Report APIs

EndpointMethodPurpose
/reports/overviewGETBáo cáo tổng quan
/reports/cash-flowGETDòng tiền theo thời gian
/reports/by-categoryGETThống kê theo danh mục
/reports/by-walletGETThống kê theo ví
/reports/budgetGETBáo cáo ngân sách
/reports/debtGETBáo cáo công nợ

Export APIs

EndpointMethodPurpose
/export/transactionsGETXuất giao dịch (CSV/Excel/PDF)
/export/reportsGETXuất báo cáo
/import/transactionsPOSTImport giao dịch
/backupGETBackup toàn bộ dữ liệu
/restorePOSTKhôi phục từ backup

8. Giả Định, Rủi Ro & Phụ Thuộc

8.1 Giả Định (Assumptions)

#Giả định
A1Người dùng có smartphone với kết nối internet
A2Exchange rate API khả dụng và đáng tin cậy
A3User có kiến thức cơ bản về quản lý tài chính
A4Cloud infrastructure đáp ứng yêu cầu SLA
A5Team có đủ năng lực technical để implement

8.2 Rủi Ro (Risks)

#Rủi roMức độGiảm thiểu
R1Data breachHighEncryption, Security audit, Penetration test
R2System downtimeMediumHA architecture, Auto-failover
R3Data lossHighRegular backup, Multi-region replication
R4Performance degradationMediumLoad testing, Auto-scaling
R5Third-party API failureLowFallback mechanism, Caching

8.3 Phụ Thuộc (Dependencies)

#Phụ thuộcLoại
D1Cloud Provider (AWS/GCP/Azure)Infrastructure
D2Exchange Rate APIExternal Service
D3Push Notification Service (FCM/APNS)External Service
D4Email Service (SendGrid/SES)External Service
D5SMS GatewayExternal Service

9. Hướng Phát Triển Tương Lai (Future Enhancements)

Phase 2 (Q2 2026)

  • 🏦 Liên kết ngân hàng - Đồng bộ giao dịch tự động từ bank
  • 🤖 AI Insights - Phân tích chi tiêu bằng AI, gợi ý tiết kiệm
  • 📸 OCR Receipt - Scan hóa đơn tự động nhập giao dịch

Phase 3 (Q4 2026)

  • 👨‍👩‍👧‍👦 Family Sharing - Quản lý tài chính gia đình
  • 📊 Investment Tracking - Theo dõi danh mục đầu tư
  • 💹 Crypto Wallet - Hỗ trợ cryptocurrency

Phase 4 (2027)

  • 🌐 Open Banking API - Tích hợp Open Banking
  • 🎯 Financial Planning - Lập kế hoạch tài chính dài hạn
  • 🏪 Marketplace - Tích hợp khuyến mãi, cashback

Tài liệu này được cập nhật định kỳ. Phiên bản mới nhất luôn được lưu tại repository chính thức.


© 2025 O24 Team | Developed by O24

Last updated on