Cấu trúc dự án
Dưới đây là mô tả chi tiết về cấu trúc thư mục và các tệp quan trọng trong dự án Waka-Bot.
.
├── ansible/ # Cấu hình Ansible để triển khai
├── app/ # Mã nguồn chính của ứng dụng FastAPI
│ ├── config/ # Các tệp cấu hình
│ ├── graph/ # Logic xử lý đồ thị cho chatbot (LangGraph)
│ ├── routes/ # Định nghĩa các API endpoints
│ ├── schema/ # Pydantic models cho validation dữ liệu
│ ├── services/ # Business logic và các dịch vụ phụ trợ
│ ├── __init__.py
│ ├── chatmodel.py # Cấu hình và khởi tạo mô hình ngôn ngữ
│ ├── config.py # Tải và quản lý cấu hình ứng dụng
│ ├── depends.py # Các dependency injection cho FastAPI
│ ├── error.py # Xử lý lỗi tùy chỉnh
│ └── log.py # Cấu hình logging
├── data/ # Dữ liệu (ví dụ: file CSV cho FAQ)
├── db_setup/ # Scripts cài đặt cơ sở dữ liệu
├── docs/ # Tệp tài liệu (sử dụng MkDocs)
├── logs/ # Thư mục chứa logs của ứng dụng
├── scripts/ # Các scripts tự động hóa (ví dụ: đồng bộ dữ liệu)
├── tests/ # Bộ kiểm thử cho ứng dụng
├── .env.sample # Tệp môi trường mẫu
├── api_docs.md # Tài liệu API (có thể được tạo tự động)
├── crontab.txt # Cấu hình Cron job
├── docker-compose.yml # Cấu hình Docker Compose cho production
├── Dockerfile # Dockerfile cho ứng dụng chính
├── main.py # Điểm khởi đầu của ứng dụng FastAPI
├── mkdocs.yml # Tệp cấu hình cho MkDocs
├── pyproject.toml # Tệp quản lý project và dependencies (Poetry/uv)
└── README.md # Tổng quan về dự án
Mô tả chi tiết
app/
Thư mục chứa toàn bộ mã nguồn của ứng dụng web.
config/
: Chứa các tệp cấu hình nhưuser.json
vàtracing_env.json
.graph/
: Triển khai logic cốt lõi của chatbot sử dụng LangGraph.agents/
: Định nghĩa các "tác nhân" (agents) thực hiện các công việc cụ thể.tools/
: Các công cụ mà agents có thể sử dụng (ví dụ: tìm kiếm thông tin).workflow.py
: Xây dựng và định nghĩa luồng xử lý (graph).routes/
: Mỗi tệp tương ứng với một nhóm API endpoints (ví dụ:chat.py
,authen.py
).schema/
: Định nghĩa các mô hình dữ liệu Pydantic, giúp xác thực dữ liệu đầu vào/đầu ra của API.services/
: Chứa business logic phức tạp không thuộc về một endpoint cụ thể, ví dụ nhưdatasource.py
để tương tác với nguồn dữ liệu.main.py
: Điểm khởi đầu của ứng dụng, nơi FastAPI app được khởi tạo và các middleware, routers được thêm vào.
ansible/
Chứa các playbook và cấu hình Ansible để tự động hóa việc triển khai ứng dụng lên server.
scripts/
Các script phụ trợ cho các tác vụ như đồng bộ dữ liệu từ nguồn bên ngoài vào cơ sở dữ liệu (sync_book.py
), hoặc khởi tạo vector store (vectorstore.py
).
tests/
Chứa các bài kiểm thử (unit tests, integration tests) để đảm bảo chất lượng mã nguồn.
Tệp tin gốc
main.py
: Entrypoint của ứng dụng FastAPI.docker-compose.yml
: Định nghĩa các services, networks, và volumes cho môi trường production.Dockerfile
: Các chỉ dẫn để xây dựng Docker image cho ứng dụng.mkdocs.yml
: Tệp cấu hình cho trang tài liệu.pyproject.toml
: Quản lý các gói phụ thuộc của dự án Python.