diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0b4f6967c..d67dd412a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -88,6 +88,9 @@ jobs: - name: Replay the DOS-Me review AI points proposal (Docker) run: node scripts/test-review-ai-points-proposal.mjs + - name: Replay the DOS-Me extension observations proposal (Docker) + run: pnpm --filter @repo/shared-data build && node scripts/test-extension-observations-proposal.mjs + - name: Check generated rate schema types match the migrations run: pnpm check:db-types diff --git a/.gitignore b/.gitignore index be909f563..3e5f451ed 100644 --- a/.gitignore +++ b/.gitignore @@ -164,6 +164,9 @@ playwright-report-item-model/ !Docs/Proposals/2026-11-03-dos-me-review-ai-points.sql !Docs/Proposals/2026-11-03-dos-me-review-ai-points-rollback.sql !Docs/Proposals/2026-11-03-dos-me-review-ai-points-verify.sql +!Docs/Proposals/2026-11-04-dos-me-extension-observations.sql +!Docs/Proposals/2026-11-04-dos-me-extension-observations-rollback.sql +!Docs/Proposals/2026-11-04-dos-me-extension-observations-verify.sql * - Copy* * - Bản sao* *.dump diff --git a/.gitleaksignore b/.gitleaksignore index a74366ea9..c293aac92 100644 --- a/.gitleaksignore +++ b/.gitleaksignore @@ -11,3 +11,6 @@ 2f624a1c620f68ecb658eed02aba62b05f05b04b:apps/web/src/lib/review-form-v2.ts:generic-api-key:193 4c0506053bbbc6668df016cdebfd3ee37fc9cea8:apps/web/src/lib/review-form-v2.ts:generic-api-key:75 4c0506053bbbc6668df016cdebfd3ee37fc9cea8:apps/web/src/lib/review-form-v2.ts:generic-api-key:76 +# Test fixture of the extension ingest key in write-paths.test.ts (#1606), a fake value read +# as a generic API key in an already-pushed commit. Later commits build it at run time. +d19083ac00645e6296031283025b5dd751eaab78:apps/web/src/app/api/v1/rate/__tests__/write-paths.test.ts:generic-api-key:894 diff --git a/Docs/Proposals/2026-11-03-ai-review-points.html b/Docs/Proposals/2026-11-03-ai-review-points.html index cca943450..b5580e0db 100644 --- a/Docs/Proposals/2026-11-03-ai-review-points.html +++ b/Docs/Proposals/2026-11-03-ai-review-points.html @@ -122,6 +122,15 @@

2.3 Dạng kết quả (structured output, JSON có schema)

criterion_key trong schema là một danh sách liệt kê đúng các khoá của ngành hàng, nên AI không thể trả một khoá lạ.

3. Chọn model

+
Cập nhật 04/11/2026: JOY đổi D2, gọi qua dos.ai. Job gọi model qua cổng dos.ai (Batch API kiểu OpenAI: POST /v1/files, POST /v1/batches), không gọi thẳng Anthropic. Batch API của dos.ai chỉ nhận model của chính DOS và Alibaba (dos, qwen3.8-*, deepseek-*), không nhận Claude, và tính nửa giá. Vì vậy: + + Bảng dưới đây là phương án Claude ban đầu, giữ lại để tham khảo.
@@ -132,6 +141,7 @@

3. Chọn model

Gọi qua đâu. Importer hiện gọi AI qua chuẩn OpenAI (biến AI_PROVIDER, cổng dos-ai). Đề xuất bước này gọi thẳng Claude API bằng SDK chính thức của Anthropic, vì cần structured outputs, Batch API và prompt caching. Khoá API chỉ nằm trong secret của Rate-Services. Câu hỏi này để JOY quyết ở D2.

4. Gửi theo lô và chỉ xử lý một lần

+

Từ 04/11/2026 lô được gửi qua Batch API của dos.ai, theo chuẩn OpenAI (file JSONL rồi tạo batch). Dấu đã xử lý, mã lô lưu ngay khi tạo và các luật thử lại bên dưới giữ nguyên. Phần nói về cache và giá Claude chỉ còn để tham khảo.

5. Ước tính chi phí

+

Từ 04/11/2026: với dos qua Batch API của dos.ai (0,125 / 0,75 USD mỗi 1 triệu token sau khi giảm 50%), 1.000 review tốn khoảng 0,12 USD (200.000 token đọc vào, 120.000 token viết ra); kho ~250 review dưới 0,05 USD. Bảng dưới là ước tính cũ cho Claude.

Giả định:

-
  • DOS/Rate-Services (riêng tư): chỉ thêm một lịch chạy, giữ khoá ANTHROPIC_API_KEY và tài khoản rate_worker. Thứ tự mỗi đêm: crawl xong, rồi review-ai-points, rồi product-points (để gom luôn các dòng mới), rồi review-values. Không chạy trùng giờ crawl. Không có gì của Rate-Services (proxy, scraper, API nội bộ của sàn) đi vào DOS/Rate.
  • +
  • DOS/Rate-Services (riêng tư): chỉ thêm một lịch chạy, giữ khoá DOS_AI_API_KEY của cổng dos.ai (trước là ANTHROPIC_API_KEY, đổi theo D2 ngày 04/11) và tài khoản rate_worker. Thứ tự mỗi đêm: crawl xong, rồi review-ai-points, rồi product-points (để gom luôn các dòng mới), rồi review-values. Không chạy trùng giờ crawl. Không có gì của Rate-Services (proxy, scraper, API nội bộ của sàn) đi vào DOS/Rate.
  • Database:
  • ModelGiá đọc vào / viết ra (USD mỗi 1 triệu token)Nhận xét
    Claude Haiku 5.5 (claude-haiku-5-5)0,10 / 0,50Rẻ nhất. Việc này đơn giản: đọc một đoạn ngắn, rút ý có trích dẫn. Đề xuất dùng mặc định.