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:
    1. Sai lệch số dư tiền mặt trung bình +8 % so với sổ quỹ (đánh giá 2023).
    2. 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ể):
    1. Giảm sai lệch số dư tiền mặt xuống ≤ 1 %.
    2. Rút ngắn thời gian xử lý phiếu thu/chi xuống ≤ 5 phút.
    3. 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:
    1. Sai lệch số dư tiền mặt trung bình +8 % so với sổ quỹ (đánh giá 2023).
    2. 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ể):
    1. Giảm sai lệch số dư tiền mặt xuống ≤ 1 %.
    2. Rút ngắn thời gian xử lý phiếu thu/chi xuống ≤ 5 phút.
    3. 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

graph LR
    A[Phần mềm nhập liệu RPA] --> B[API Gateway (FastAPI 0.105)]
    B --> C[Service: Cash Reconciliation]
    B --> D[Service: Exchange Rate Sync]
    C --> E[PostgreSQL 15 DB]
    D --> E
    C --> F[Anomaly Detection (scikit‑learn 1.4)]
    F --> G[Grafana Dashboard]

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:

    1. Docker Compose cho môi trường dev/test.
    2. Kubernetes (GKE) với 2 node, autoscaler tối đa 4 pod để đáp ứng đỉnh tải.
    3. CI/CD GitHub Actions → Build → Push image → Deploy.
  • **Scalability