edino-qb-cli
v0.1.2
Published
Local-first Edino question ingestion and review workspace
Maintainers
Readme
Edino Question Bank CLI
Workspace cục bộ để trích xuất tài liệu, bàn giao prompt cho IDE, tự import questions.json, duyệt rồi gửi Edino theo QuestionSchema.
Bản đang phát triển, core chưa hoàn chỉnh. Có mã cho luồng local nhưng chưa coi Milestone A, các phase trong PLAN.md, toàn bộ tiêu chí release là hoàn tất. Dashboard có luồng chuẩn bị/xác nhận/lịch sử gửi Edino; chưa kiểm chứng với API Edino thật. Package chưa phát hành npm;
UNLICENSEDtrong lúc chờ xác nhận quyền phân phối mã/tài sản sao chép. Không chạynpm publish.
Chạy từ source
Yêu cầu Node.js >=22.13.0 và npm. node:sqlite vẫn là API experimental trong dòng Node hỗ trợ; cảnh báo experimental không đồng nghĩa database bị hỏng. Không dùng thư mục source CLI làm workspace dữ liệu.
npm ci
npm run build
node dist/cli.js --workspace ../my-data start --no-open--no-open là tùy chọn của start. Mở URL riêng tư in ở terminal; URL chứa launch token dùng một lần. Bỏ --no-open nếu muốn tự mở trình duyệt. Ctrl+C để đóng server/watcher. Nếu build thất bại, dừng và xem lỗi; không dùng bản dist cũ như bằng chứng build thành công.
Lệnh npx edino-question-bank-cli ... chỉ là hình thức dự kiến sau khi được cấp quyền và phát hành; hiện không phải hướng dẫn cài/chạy khả dụng.
Luồng làm việc
- Chép TXT/Markdown UTF-8, PDF, DOCX hoặc ảnh vào
../my-data/input/. - Trên Tệp đầu vào, bấm Sao chép prompt (job
WAITING_FOR_PROCESSOR). - Dán prompt vào Cursor/IDE. CLI không gọi AI; IDE của bạn có thể gửi dữ liệu lên cloud.
- AI ghi
output/jobs/<job-id>/questions.json(+notes.md). CLI đang chạy tự validate/import →READY_FOR_REVIEW. - Mở Duyệt câu hỏi: danh sách theo tên file nguồn; sửa/preview khi cần.
- Bấm Duyệt & gửi — mở trang gửi một tệp; chuẩn bị rồi xác nhận. Xem kết quả ở Lịch sử gửi. Chi tiết API: tích hợp Edino.
Workspace data tự có README.md cho người dùng và docs/ai-question-authoring.md, docs/question-schema.md cho AI/processor (kèm ví dụ 12 loại câu hỏi). Khởi động lại để bổ sung file còn thiếu vào workspace cũ; CLI không ghi đè tài liệu đã có. Bộ mẫu nằm trong docs/workspace.
Xem processor integration và schema.
Lệnh local
Chạy trong thư mục source; đường dẫn file bên dưới tính từ thư mục hiện hành:
node dist/cli.js --help
node dist/cli.js --workspace ../my-data doctor
node dist/cli.js --workspace ../my-data status
node dist/cli.js --workspace ../my-data jobs
node dist/cli.js --workspace ../my-data config
node dist/cli.js validate ../my-data/processed.jsonDừng start trước các lệnh ghi offline, hoặc dùng dashboard khi server đang chạy:
node dist/cli.js --workspace ../my-data import ../my-data/processed.json --job <job-id> --title "Bộ câu hỏi"
node dist/cli.js --workspace ../my-data retry <job-id>
node dist/cli.js --workspace ../my-data export <document-id>Retry offline chỉ đưa job về hàng đợi; cần start để xử lý. Import không gắn job là tài liệu mới, không đảm bảo chống trùng. Import cùng job chỉ trả bản cũ nếu nội dung JSON lưu trữ trùng khớp; nội dung khác gây conflict thay vì ghi đè draft.
Có gì, chưa có gì?
- Có workspace SQLite, watcher/hash nguồn, trích xuất text, lưu revision, local CRUD/review và export JSON/asset từ job liên kết.
- Schema/runtime validator có 12 interaction. Điều này không có nghĩa mọi editor/preview đã được kiểm thử UI đầy đủ; cần kiểm tra thực tế từng loại, đặc biệt media/hotspot/drawing/speaking/coding. Không có code runner hay chấm AI.
- PDF chỉ lấy text chọn được; không OCR/trích ảnh đầy đủ. DOCX giữ media/XML nhưng mất layout/vị trí ảnh/cấu trúc bảng và không bảo đảm OMML. DOC/ZIP không hỗ trợ.
- Auth qua Account hỗ trợ login email/password, logout và chọn membership/tổ chức khi cấu hình
apiBaseUrl. Logout yêu cầu revoke và luôn xóa token local trongfinally; lỗi mạng có thể khiến remote revoke chưa được xác nhận. Luồng gửi có snapshot local, xác nhận và lịch sử từng item; capability luônunknown, API Edino quyết định quyền. - Preview dùng KaTeX local với
trust=false; công thức lỗi hiển thị cảnh báo/source, HTML tài liệu escaped. Có upload PNG/JPEG/WebP local (server tối đa 5.000.000 bytes), link ảnh vào prompt/resource/hotspot/drawing, sắp xếp/gỡ resourceRefs, so sánh text và tải nguồn. Upload local không phải upload Edino; link cần save để giữ trong JSON. - API state phân trang và trả counts toàn workspace; dashboard dùng trang 50 dòng, tìm/lọc trên trang hiện tại. Queue chạy concurrency cấu hình (giới hạn 1–4), lưu input issues bền trong SQLite, có pause/resume. Pause ngừng nhận job extraction tiếp theo, không hủy job đang chạy hay dừng ingest; tắt watcher không ngăn xử lý các job đã queued.
- Backup/restore offline và UI lịch sử/restore revision đã có. E2E mọi loại câu hỏi, kiểm thử nền tảng chéo, API smoke thật và public release vẫn là các gate chưa hoàn tất. Không có bảo đảm exactly-once remote; kết quả
unknownchặn gửi lại cùng document/revision và phải đối chiếu thủ công.
node dist/cli.js --workspace ../my-data backup ../my-backup
node dist/cli.js restore ../my-backup ../restored-dataBackup yêu cầu dừng server; destination phải chưa tồn tại. Restore không khôi phục credential; cần đăng nhập lại.
Dữ liệu và quyền riêng tư
input/, output/, .edino/ đều là dữ liệu riêng. SQLite là nguồn trạng thái chính; export không phải backup database. Không commit/chia sẻ chúng tùy tiện. Terminal có launch token; thông báo lỗi và output có thể chứa đường dẫn, đề thi, đáp án và dữ liệu cá nhân. File credential nếu dùng client tích hợp chứa bí mật không mã hóa: quyền file không bảo vệ trước malware cùng user.
Tài liệu và kiểm tra
npm run typecheck
npm test
npm run buildCác lượt kiểm tra trước trên macOS, Node 22.21.1 đã chạy build/typecheck, tests local, Chromium E2E cơ bản và clean tarball install/start/dashboard/Unicode extraction. Số test và kết quả cuối của thay đổi đang triển khai cần lấy từ lượt chạy mới nhất, không từ tài liệu này. CI Windows/Linux/Node 24 đã khai báo nhưng chưa xác nhận chạy; không suy rộng kết quả macOS sang nền tảng khác. API smoke Edino thật chưa khả dụng; chưa xác nhận end-to-end remote hay mọi editor trong browser. Xem tiến độ/gate chưa hoàn tất trong PLAN.md.
npm run test:web
npm run test:e2e
npm run test:package
npm audit