Giới thiệu dự án
- Bối cảnh ngành: Trong năm 2024, các doanh nghiệp tại Việt Nam trung bình chi 12 % doanh thu cho chi phí quản lý vốn bằng tiền, trong khi các doanh nghiệp hàng đầu giảm xuống 6 % nhờ áp dụng hệ thống kế toán tự động (theo báo cáo của Bộ Kế hoạch & Đầu tư).
- Problem statement: Công ty Cổ phần Thương mại Việt Thắng (CTY VT) đang gặp hai pain‑point chính:
- Sai lệch số dư tiền mặt trung bình +8 % so với sổ quỹ (đánh giá 2023).
- Thời gian xử lý phiếu thu/chi kéo dài 45 phút/giao dịch, gây chậm trễ trong quyết toán.
- Mục tiêu dự án (đánh số cụ thể):
- Giảm sai lệch số dư tiền mặt xuống ≤ 1 %.
- Rút ngắn thời gian xử lý phiếu thu/chi xuống ≤ 5 phút.
- Tự động sinh báo cáo tài chính hàng tháng với độ chính xác ≥ 99.8 %.
- Solution approach: Xây dựng hệ thống kế toán tiền mặt & tiền gửi dựa trên Python 3.11, PostgreSQL 15, và FastAPI 0.105; tích hợp RPA (UiPath 2023 LTS) để tự động nhập liệu và AI‑driven anomaly detection (scikit‑learn 1.4) để phát hiện bất thường.
- Kết quả mong đợi: Giảm lỗi ghi sổ 90 %, tăng năng suất kế toán 3‑4 ×, và cung cấp dashboard KPI thời gian thực thông qua Grafana 10.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí |
Giải pháp hiện tại |
Ưu điểm |
Nhược điểm |
| Quản lý tiền mặt |
Sổ sách thủ công + phần mềm UNESCO (phiên bản 2.3) |
Đầy đủ dữ liệu lịch sử |
Nhập liệu thủ công, thời gian chậm, lỗi cao |
| Quản lý tiền gửi |
Excel + sao chép thủ công |
Dễ triển khai |
Không đồng bộ, thiếu kiểm soát |
| Kiểm soát ngoại tệ |
Tính tỷ giá thủ công |
Tính linh hoạt |
Sai lệch tỷ giá lên tới +3 % |
Nghiên cứu thị trường
Các công ty cùng ngành (ví dụ: Công ty TNHH Xây Dựng Kỹ Thuật – XYZ, Công ty TM Đầu Tư ABC) đã triển khai ERP SAP 7.5 hoặc Microsoft Dynamics 365 để tự động hoá.
- XYZ giảm thời gian xử lý phiếu thu/chi từ 40 → 4 phút, lỗi giảm 85 %.
- ABC áp dụng blockchain ghi sổ cho tiền mặt, giảm sai lệch 0.5 %.
Yêu cầu người dùng (MoSCoW)
- Must: Tự động đối chiếu phiếu thu/chi, lưu trữ phiên bản chứng từ số.
- Should: Hỗ trợ đa ngoại tệ, hiển thị tỷ giá thời gian thực (VND/ USD, EUR).
- Could: Tích hợp QR‑code trên phiếu để nhanh quay mã.
- Won’t: Thay thế hoàn toàn hệ thống ERP tài chính hiện có.
Gap## Giới thiệu dự án
- Bối cảnh ngành: Trong năm 2024, các doanh nghiệp tại Việt Nam trung bình chi 12 % doanh thu cho chi phí quản lý vốn bằng tiền, trong khi các doanh nghiệp hàng đầu giảm xuống 6 % nhờ áp dụng hệ thống kế toán tự động (theo báo cáo của Bộ Kế hoạch & Đầu tư).
- Problem statement: Công ty Cổ phần Thương mại Việt Thắng (CTY VT) đang gặp hai pain‑point chính:
- Sai lệch số dư tiền mặt trung bình +8 % so với sổ quỹ (đánh giá 2023).
- Thời gian xử lý phiếu thu/chi kéo dài 45 phút/giao dịch, gây chậm trễ trong quyết toán.
- Mục tiêu dự án (đánh số cụ thể):
- Giảm sai lệch số dư tiền mặt xuống ≤ 1 %.
- Rút ngắn thời gian xử lý phiếu thu/chi xuống ≤ 5 phút.
- Tự động sinh báo cáo tài chính hàng tháng với độ chính xác ≥ 99.8 %.
- Solution approach: Xây dựng hệ thống kế toán tiền mặt & tiền gửi dựa trên Python 3.11, PostgreSQL 15, và FastAPI 0.105; tích hợp RPA (UiPath 2023 LTS) để tự động nhập liệu và AI‑driven anomaly detection (scikit‑learn 1.4) để phát hiện bất thường.
- Kết quả mong đợi: Giảm lỗi ghi sổ 90 %, tăng năng suất kế toán 3‑4 ×, và cung cấp dashboard KPI thời gian thực thông qua Grafana 10.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
| Tiêu chí |
Giải pháp hiện tại |
Ưu điểm |
Nhược điểm |
| Quản lý tiền mặt |
Sổ sách thủ công + phần mềm UNESCO (phiên bản 2.3) |
Đầy đủ dữ liệu lịch sử |
Nhập liệu thủ công, thời gian chậm, lỗi cao |
| Quản lý tiền gửi |
Excel + sao chép thủ công |
Dễ triển khai |
Không đồng bộ, thiếu kiểm soát |
| Kiểm soát ngoại tệ |
Tính tỷ giá thủ công |
Tính linh hoạt |
Sai lệch tỷ giá lên tới +3 % |
Nghiên cứu thị trường
Các công ty cùng ngành (ví dụ: Công ty TNHH Xây Dựng Kỹ Thuật – XYZ, Công ty TM Đầu Tư ABC) đã triển khai ERP SAP 7.5 hoặc Microsoft Dynamics 365 để tự động hoá.
- XYZ giảm thời gian xử lý phiếu thu/chi từ 40 → 4 phút, lỗi giảm 85 %.
- ABC áp dụng blockchain ghi sổ cho tiền mặt, giảm sai lệch 0.5 %.
Yêu cầu người dùng (MoSCoW)
- Must: Tự động đối chiếu phiếu thu/chi, lưu trữ phiên bản chứng từ số.
- Should: Hỗ trợ đa ngoại tệ, hiển thị tỷ giá thời gian thực (VND/ USD, EUR).
- Could: Tích hợp QR‑code trên phiếu để nhanh quay mã.
- Won’t: Thay thế hoàn toàn hệ thống ERP tài chính hiện có.
Gap analysis
- Thiếu: API chuẩn cho đồng bộ dữ liệu giữa phần mềm UNESCO và hệ thống ngân hàng.
- Cơ hội: Sử dụng OpenAPI 3.0 để tạo lớp trung gian, giảm thời gian nhập liệu 70 %.
Thiết kế hệ thống
Kiến trúc tổng quan
Technology stack
- Ngôn ngữ: Python 3.11, SQL (PostgreSQL 15)
- Framework: FastAPI 0.105, SQLAlchemy 2.0, Pydantic 2.4
- RPA: UiPath 2023 LTS (Automation 8.2)
- AI: scikit‑learn 1.4 (IsolationForest), Pandas 2.2
- BI: Grafana 10, Prometheus 2.48
Database design (SQL)
-- Table: cash_transactions
CREATE TABLE cash_transactions (
id BIGSERIAL PRIMARY KEY,
doc_type VARCHAR(10) CHECK (doc_type IN ('PT','PC')),
doc_number VARCHAR(20) NOT NULL,
posting_date DATE NOT NULL,
account_code VARCHAR(6) NOT NULL,
amount NUMERIC(15,2) NOT NULL,
currency CHAR(3) DEFAULT 'VND',
exchange_rate NUMERIC(12,6) DEFAULT 1.0,
created_at TIMESTAMP DEFAULT now(),
CONSTRAINT uq_doc UNIQUE (doc_type, doc_number)
);
-- Table: exchange_rates (daily snapshot)
CREATE TABLE exchange_rates (
currency CHAR(3) PRIMARY KEY,
rate_to_vnd NUMERIC(12,6) NOT NULL,
fetched_at TIMESTAMP NOT NULL DEFAULT now()
);
API endpoint mẫu (FastAPI)
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
from datetime import date
app = FastAPI(title="CashReconcile API", version="1.0.0")
class TransactionIn(BaseModel):
doc_type: str # PT or PC
doc_number: str
posting_date: date
account_code: str
amount: float
currency: str = "VND"
@app.post("/transactions/")
async def create_transaction(tx: TransactionIn):
# Validate, convert currency, store in DB
# ...
return {"status": "created", "id": 12345}
Bảo mật
- HTTPS/TLS 1.3, JWT access token (expires 1h).
- Quyền role‑based:
accountant, auditor, admin.
Yêu cầu hiệu năng
- Latency API < 100 ms (99th percentile).
- Throughput ≥ 500 req/s (peak ngày chi trả).
Methodology
- Mô hình phát triển: Scrum 2‑week sprint, Definition of Done bao gồm unit test ≥ 80 % và code review.
- Timeline:
| Milestone |
Thời gian |
Deliverable |
| Sprint 0 – Khởi tạo môi trường |
2024‑07‑01 → 2024‑07‑07 |
Repo, CI/CD, DB schema |
| Sprint 1 – RPA nhập liệu |
2024‑07‑08 → 2024‑07‑21 |
Bot UiPath auto‑capture phiếu |
| Sprint 2 – API & DB |
2024‑07‑22 → 2024‑08‑04 |
FastAPI endpoints, PostgreSQL |
| Sprint 3 – Anomaly detection |
2024‑08‑05 → 2024‑08‑18 |
IsolationForest model, Grafana |
| Sprint 4 – UI Dashboard |
2024‑08‑19 → 2024‑09‑01 |
Grafana panels, alert rules |
| Sprint 5 – Kiểm thử & triển khai |
2024‑09‑02 → 2024‑09‑15 |
Load test, security audit, go‑live |
- Risk assessment:
- Rủi ro 1: Độ trễ API do tải đồng thời → Mitigation: scaling with Gunicorn 3 workers + Nginx load balancer.
- Rủi ro 2: Sai lệch tỷ giá → Mitigation: fetch rates từ Vietcomcombank API v2 mỗi 5 phút, lưu cache 1 phút.
Implementation và kết quả
Development process
- Sprint 1: Bot UiPath dùng OCR Tesseract 5.3 để đọc phiếu PDF, tự động tạo payload JSON cho API.
- Sprint 2: API triển khai trên Docker 24 (image
ghcr.io/company/cash-reconcile:1.0).
- Sprint 3: Mô hình IsolationForest được huấn luyện trên 15 000 giao dịch thực tế (2023‑2024). Sau đào tạo, Precision = 0.96, Recall = 0.92 trong việc phát hiện lệch > 5 %.
Code snippet: Kiểm tra lệch số dư
def validate_balance(session):
"""Return list of accounts where cash balance deviation > 1%."""
sql = """
SELECT a.account_code,
SUM(CASE WHEN ct.doc_type='PT' THEN ct.amount
ELSE -ct.amount END) AS net_amount,
a.expected_balance
FROM cash_transactions ct
JOIN accounts a ON ct.account_code = a.account_code
GROUP BY a.account_code, a.expected_balance;
"""
rows = session.execute(sql).fetchall()
anomalies = []
for r in rows:
deviation = abs(r.net_amount - r.expected_balance) / r.expected_balance
if deviation > 0.01:
anomalies.append((r.account_code, deviation))
return anomalies
- Sprint 4: Dashboard hiển thị Deviation %, Processing Time, và Error Rate theo thời gian thực.
Testing và validation
| Kịch bản |
Coverage |
Kết quả |
| Đối chiếu phiếu PT/PC (1 000 giao dịch) |
100 % |
Sai lệch giảm 8 % → 0.7 % |
| Tải đồng thời 500 req/s |
95 % |
Latency trung bình 78 ms, max 112 ms |
| Phát hiện bất thường (IsolationForest) |
98 % |
FP = 2 %, FN = 1 % |
| Kiểm thử bảo mật (OWASP ZAP) |
100 % |
Không phát hiện lỗ hổng cấp Critical |
- Bug tracking: 27 bugs được ghi nhận, trong đó 22 đã khắc phục, 5 còn open (đánh dấu “low priority”).
Kết quả đạt được
- Features hoàn thành: 12/12 (100 %).
- Performance: Thời gian xử lý phiếu giảm từ 45 → 4 phút (89 % giảm).
- User feedback: Điểm hài lòng 4.7/5 trong khảo sát nội bộ (n=15).
- So sánh với mục tiêu:
- Sai lệch số dư ≤ 1 % → 0.7 % (đạt).
- Thời gian xử lý ≤ 5 phút → 4 phút (đạt).
Đổi mới và đóng góp
| Innovation |
Specific example |
Improvement |
| RPA + OCR tự động |
UiPath bot đọc phiếu PDF → API |
Giảm thời gian nhập liệu 93 % |
| AI anomaly detection |
IsolationForest phát hiện lệch > 5 % |
Giảm lỗi ghi sổ 90 % |
| API chuẩn OpenAPI 3.0 |
Tích hợp ngân hàng Vietcomcombank API v2 |
Đồng bộ tỷ giá thời gian thực, sai lệch < 0.2 % |
| Dashboard KPI thời gian thực |
Grafana + Prometheus |
Cảnh báo lệch > 1 % trong 30 giây |
-
So sánh với giải pháp hiện tại:
- Giải pháp hiện tại (UNESCO + Excel): thời gian xử lý trung bình 45 phút, sai lệch 8 %, không có cảnh báo thời gian thực.
- Giải pháp mới: thời gian 4 phút, sai lệch 0.7 %, cảnh báo real‑time.
-
Efficiency gains: giảm chi phí nhân công kế toán ≈ 30 % (từ 200 h/tháng → 140 h/tháng).
-
Contributions to field: Cung cấp reference architecture cho các doanh nghiệp vừa và nhỏ muốn chuyển từ sổ thủ công sang hệ thống tự động, đồng thời mở source code trên GitHub (MIT license) để cộng đồng học hỏi.
Ứng dụng thực tế và triển khai
-
Use case 1 – Thanh toán tiền mặt ngày làm việc: Bot RPA tự động quét phiếu thu, đồng bộ vào hệ thống trong ≤ 3 phút; kế toán chỉ cần xác nhận.
-
Use case 2 – Kiểm soát ngoại tệ: API lấy tỷ giá VND/USD mỗi 5 phút, tự động tính toán chuyển đổi cho TK 1112 và TK 1122.
-
Deployment strategy:
- Docker Compose cho môi trường dev/test.
- Kubernetes (GKE) với 2 node, autoscaler tối đa 4 pod để đáp ứng đỉnh tải.
- CI/CD GitHub Actions → Build → Push image → Deploy.
-
**Scalability