Please enable JavaScript.
Coggle requires JavaScript to display documents.
app.py - Coggle Diagram
app.py
routes.crawl_routes
API: /crawl_status/<task_id>
services.crawl_service.get_job_status
Lấy: task_id
Kiểm tra xem task_id có trong self.active_jobs
Nếu có, trả về trạng thái "running" cùng thông tin công việc (total_links, user_id, doc_id)
Nếu không, trả về trạng thái "not_found"
API: /start_crawl
services.crawl_service.start_crawl_job
Lấy: url, taskId, user_id
Tạo document trong DB: self.db_manager.create_crawl_document(url, user_id)
Lấy danh sách links từ URL:
self._get_links_from_url(url)
Dùng scrape_url với Firecrawl API, định dạng links
Cập nhật tài liệu trong MongoDB với
total_link_sub (số lượng liên kết)
link_sub (danh sách liên kết)
self.db_manager.update_crawl_document
Lưu: self.active_jobs với task_id là khóa, chứa total_links, links, user_id, doc_id
Khởi động một luồng nền (threading.Thread) gọi self._process_crawl_job(task_id) để xử lý từng liên kết
2 more items...
services.crawl_service
crawl/depth_dissection.py
crawl/scrapeurl.py
API: /chat
Tìm kiếm văn bản liên quan -> search_results -> context
search_service.search
EnhancedHybridSearch
HOST_ELASTICSEARCH
embedding_service
embedding_service = EmbeddingService(ENDPOINT_TEXT3_EMBEDDING, API_KEY_TEXT3_EMBEDDING)
Nhận văn bản (chuỗi hoặc danh sách).
Chuẩn hóa đầu vào thành danh sách chuỗi.
Gửi yêu cầu POST tới API embedding với payload JSON.
Xử lý phản hồi: Trả về embedding(s) hoặc None nếu lỗi.
core.hybrid_search
BUG: không tồn tại top_k, đây là size
Check template_code != 0 (luôn để mặc định =0)
Elasticsearch các documents trong index
Chia ra thành các chunks
Trả về context
Tạo answer từ context
NO - Đoạn chat mới? - YES
Tạo title
Tạo conversation_id mới trong DB
core/title.py
Tin nhắn hệ thống: self.prompt ("You are a short title generator. " \
"Generate a short title (50 characters max) based on the user's first message. " \
"Return only the title, no explanation or other content " \
"Response language is taken from the question"\
"Response is JSON format with fields: title"
).
Tin nhắn người dùng: Yêu cầu tạo tiêu đề từ question ("Create a title for a conversation that starts with this message: {question}").
Lưu dữ liệu mới gồm question, context, answer vào conversation_id ở DB
Trả về response đầy đủ
core/answer_service
Có context - đi cùng promts
Tin nhắn hệ thống 1: self.system_prompt (hướng dẫn chung).
Tin nhắn hệ thống 2: Ngữ cảnh ("Based on this context: {self.context}").
Tin nhắn người dùng: Câu hỏi với yêu cầu trả lời cùng ngôn ngữ ("answer the question in same language of question: {self.question}").
Không có context - đi cùng promts
Tin nhắn hệ thống: self.system_prompt.
Tin nhắn người dùng: "Question: {self.question}".
history_service không được sử dụng
mongoprocess/get_recent.py không được sử dụng
API: /uploadfile
Lấy user_id
Lưu thông tin file trong DB:
filename, user_id, file_extension
Tách thành các chunks
Xử lý các file có định dạng tương ứng: _get_file_processor
core.file_handler import Processor
Khởi tạo: Nhận tham số, tạo thư mục lưu ảnh
Đọc file PDF -> Chuyển hết sang markdown:
Duyệt từng trang, kiểm tra có hình ảnh không.
Nếu có hình ảnh: Trích xuất văn bản và hình ảnh, xử lý chồng chéo, lưu ảnh, tạo Markdown
Chia thành chunk
1 more item...
database_manager.increment_chunk_count
Tăng số lượng chunk (num_of_chunk) của một tài liệu trong collection DATAS
Sử dụng datas_collection.update_one để tăng trường num_of_chunk
Trả về response đầy đủ
API: /delete
Xóa data_id, user_id
database_manager.delete_user_data
Xóa tài liệu của người dùng từ MongoDB và chỉ mục tương ứng từ Elasticsearch
delete_one
es_client.indices.delete
API: /
Check healthy thôi
API: /<path:filename>
Tải file