Thư mục gốc: 22 file .py -> 7
--------------------------------
13 file "thành phần" nằm rải rác ngay ngoài thư mục gốc, mỗi file chỉ có ĐÚNG
MỘT nơi import — chính cái hub của nó:
i18n.py + 10 file i18n_*.py -> i18n/__init__.py + i18n/*.py
theme.py + 3 file theme_*.py -> theme/__init__.py + theme/*.py
Đổi hub thành `__init__.py` nên 78 chỗ `from ..i18n import tr` và 24 chỗ
`from ..theme import current_palette` KHÔNG phải sửa một dòng nào. Git nhận ra
11/15 file là đổi tên thuần, 0 dòng thay đổi; 4 file còn lại chỉ sửa đúng dòng
import và mấy tham chiếu tên file trong docstring.
Đối chiếu với bản trước khi gom, cùng một phép băm:
số khoá i18n 1431 -> 1431 hash STRINGS a06cc34b... (trùng)
QSS dark hash 7bb230a4... (trùng)
QSS light hash 884f73ce... (trùng)
`check_loc.py` phải khai thêm "i18n", "theme" vào DEFAULT_TARGET_DIRS: chúng
từng được quét theo diện "module nằm ở thư mục gốc", gom vào gói rồi thì không
khai là lặng lẽ tuột khỏi tầm quét.
Bánh cóc `ui/widgets.py` siết 505 -> 466 sau khi tách SegmentedControl — nợ cũ
co lại thì con số phải co theo, không thì bánh cóc đứng yên mãi ở mức cũ.
Một file requirements
---------------------
Xoá `requirements-test.txt`. Nó chỉ có `pytest` + `pydantic`, nhưng 64/108 file
test dựng widget thật và 20 file trong đó import PySide6 thẳng ở đầu file không
có bảo vệ — nên CI cài mỗi file kia thì pytest chết ngay lúc thu thập test chứ
không phải "vài test bị bỏ qua". Hai file cho một danh sách gần trùng nhau chỉ
tạo thêm một chỗ để lệch phiên bản, và `pydantic` đã bị chép ở cả hai.
CI đổi sang cài `requirements.txt`. Người dùng cuối cài thừa pytest vài MB.
Kèm theo: `install.bat` bỏ cờ `--dev` (không còn gì để cài thêm). Khối `if`
rỗng còn sót lại làm cmd.exe báo "( was unexpected at this time" và script chết
ngay sau bước cài thư viện — đã gỡ hẳn.
859 test xanh · 4/4 cổng CASAN · check_design_parity 32/32 ·
check_layout_geometry trùng từng byte với bản trước refactor.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
51 lines
2.4 KiB
Plaintext
51 lines
2.4 KiB
Plaintext
# Cowork-Local BamBOO — dependencies
|
|
# Install: pip install -r requirements.txt
|
|
|
|
# --- Core UI framework ---
|
|
PySide6>=6.6.0
|
|
|
|
# --- HTTP client ---
|
|
requests>=2.31.0
|
|
|
|
# --- Process & resource monitoring ---
|
|
psutil>=5.9.0
|
|
|
|
# --- Document handling ---
|
|
openpyxl>=3.1.0 # Excel (.xlsx) creation & reading
|
|
python-pptx>=0.6.0 # PowerPoint (.pptx) editing
|
|
pypdf>=4.0.0 # PDF text extraction (preferred)
|
|
# PyPDF2>=3.0.0 # PDF fallback (optional, pypdf preferred)
|
|
|
|
# --- Microsoft 365 integration ---
|
|
msal>=1.24.0 # OAuth device-code flow for MS365
|
|
keyring>=24.0.0 # OS credential store (token cache)
|
|
|
|
# --- MCP (Model Context Protocol) ---
|
|
mcp>=1.0.0 # MCP client SDK (stdio transport)
|
|
|
|
# --- Bắt buộc: import KHÔNG có try/except, thiếu là app chết lúc khởi động ---
|
|
# Hai dòng dưới đây bị bỏ sót cho tới 30/08. Triệu chứng của việc thiếu chúng
|
|
# không phải "tính năng đó không chạy" mà là ModuleNotFoundError ngay khi dựng
|
|
# cửa sổ chính — cài đúng theo requirements.txt xong app vẫn không mở được.
|
|
pygments>=2.15.0 # tô màu cú pháp — presentation/folder/code_editor.py
|
|
pydantic>=2,<3 # kiểu dữ liệu định tuyến — core/routing/models.py
|
|
|
|
# --- Tuỳ chọn: mỗi chỗ dùng đều bọc try/except, thiếu thì mất tính năng ---
|
|
# Vẫn cài mặc định vì đều nhẹ và đều là tính năng người dùng nhìn thấy được.
|
|
networkx>=3.0 # bố cục đồ thị đẹp hơn cho GraphRAG nhiều node
|
|
holidays>=0.40 # lịch nghỉ theo quốc gia cho màn Lịch task
|
|
pywin32>=306; sys_platform == "win32" # Office -> PDF, thông báo Outlook
|
|
|
|
# opendataloader-pdf # bộ đọc PDF thay thế — KHÔNG cài sẵn có chủ ý:
|
|
# # application/workspaces/graph_index_service.py tự cài
|
|
# # khi cần, qua core/deps.py::ensure_module.
|
|
|
|
# --- Chạy test ---
|
|
# Gộp vào đây thay vì để riêng requirements-test.txt: file kia chỉ có đúng
|
|
# `pytest`, mà 64/108 file test dựng widget thật nên nó vẫn phải kéo về gần
|
|
# như toàn bộ danh sách trên. Hai file cho một danh sách gần trùng nhau chỉ
|
|
# tạo thêm một chỗ để lệch phiên bản.
|
|
#
|
|
# Người dùng cuối cài thừa pytest vài MB — đổi lại chỉ còn MỘT file phải nhớ.
|
|
pytest>=8,<10
|