Tokens
Track, visualize, and compete on AI coding assistant token usage across Claude Code, Cursor, OpenCode, Codex, Gemini, Kimi, and Qwen. The Kardashev Scale for AI Devs.
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证vEUDR: EUDR screening for coffee plot lists in Vietnam's Central Highlands (static web app) · Sàng lọc EUDR cho danh sách lô cà phê Tây Nguyên
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗Phiên bản của Phạm Duy Long · GitHub @pdlong-09 · công bố 27/10/2026
Version published and maintained by Phạm Duy Long. Nhận diện và cách kiểm chứng: SIGNATURE.md
Công cụ giúp doanh nghiệp cà phê sàng lọc danh sách lô của nông hộ theo EUDR. Trang không cấp chứng nhận tuân thủ. Nó chỉ ra lô nào cần kiểm tra, chuẩn bị bằng chứng vệ tinh và lưu kết quả kiểm tra của từng lô.
Trang web có nhiều trang, mỗi trang có địa chỉ riêng (dùng được nút quay lại của trình duyệt):
| Trang | Địa chỉ | Nội dung |
|---|---|---|
| Trang chủ | #/ | Giới thiệu cho doanh nghiệp: vấn đề, 4 bước, con số từ nghiên cứu, giới hạn |
| Bản đồ | #/ban-do | Ảnh nền (bản đồ, vệ tinh mới nhất, vệ tinh theo năm Esri Wayback 2016–2026), lô rừng 2020 của tnr.vnforest.gov.vn, lớp sàng lọc 500 m, ranh giới xã, lô nghiên cứu |
| Danh sách lô | #/danh-sach | Tải lên, phễu kiểm tra, bảng lô, hồ sơ từng lô |
| Thực địa | #/thuc-dia | Kế hoạch đi thực địa theo xã, GPX |
| Báo cáo | #/bao-cao | Tổng hợp theo mức và theo xã, tiến độ, lỗi dữ liệu, xuất CSV / GPX / hồ sơ in |
| Phương pháp | #/phuong-phap | Cách xếp mức, kiểm chứng với 1000 lô có nhãn, giới hạn |
| Dữ liệu | #/du-lieu | Nguồn và giấy phép từng lớp dữ liệu |
ma_lo, vi_do, kinh_do, có thể thêm ho_dan, xa, dien_tich_ha; dấu phân cách , hoặc ;, chấp nhận dấu phẩy thập phân) hoặc GeoJSON (điểm hoặc đa giác, kể cả tên thuộc tính của tệp nộp EUDR: ProductionPlace, ProducerName, Area).
Danh sách và kết quả kiểm tra chỉ lưu trong trình duyệt (localStorage), không gửi lên máy chủ nào. Muốn lưu lâu dài thì xuất tệp.
Tính trên lưới mẫu 500 m. Với lô đa giác, dùng mọi điểm lưới nằm trong lô. Với lô điểm hoặc lô nhỏ, dùng điểm lưới gần nhất.
| Mức | Điều kiện |
|---|---|
| Cao | Có mất tán cây sau 2020 (Hansen 2021–2025 hoặc JRC TMF), ở nơi ít nhất một bản đồ gọi là rừng năm 2020: GFC2020 V4, JRC TMF, Hansen, ESA WorldCover, hoặc bản đồ diễn biến rừng 2020 (tnr.vnforest.gov.vn) |
| Trung bình | Không có mất tán, nhưng các bản đồ không thống nhất về rừng năm 2020, hoặc GFC2020 V1 khác V4, hoặc mọi bản đồ đều gọi là rừng (lô cà phê ở đó là bất thường) |
| Thấp | Không bản đồ nào, kể cả bản đồ quốc gia, gọi là rừng năm 2020, và không có mất tán |
So với 1000 lô nghiên cứu có nhãn tham chiếu: cả 110 lô không tuân thủ đều ở mức Cao, không lô nào trong 177 lô mức Trung bình hoặc Thấp. Nhưng 46% lô mức Cao vẫn tuân thủ, nên mức Cao nghĩa là "cần xem", không phải "vi phạm". Mẫu nghiên cứu được chọn có chủ đích, nên các tỷ lệ này không đại diện cho diện tích. Đây cũng là lý do vẫn phải kiểm tra ngẫu nhiên các mức thấp hơn.
.venv/Scripts/python webapp/build_data.py --sheets # public/data (~6 MB) và public/sheets (~154 MB)
PYTHONUTF8=1 .venv/Scripts/python webapp/build_lots.py # public/data/lots/{z}/{x}/{y}.pbf: 892.942 lô rừng 2020, vài phút
python webapp/serve.py # http://127.0.0.1:8765
node webapp/test_ui.mjs [thư mục ảnh chụp] # kiểm tra tự động bằng Edge headless
Tệp trong public/data | Nội dung |
|---|---|
grid.png | Lưới 500 m (218.401 điểm), mã hóa thành bit: GFC2020 V1–V4, TMF, Hansen, WorldCover, năm mất tán, tỉnh, loại lô rừng 2020 của bản đồ quốc gia (xem đầu build_data.py) |
lots/{z}/{x}/{y}.pbf | Lô rừng 2020 của 5 tỉnh (tnr.vnforest.gov.vn) dạng vector tile không nén, mức phóng 11–13 (phóng to hơn thì dùng lại tile mức 13): tiểu khu, khoảnh, lô, diện tích, loại đất loại rừng, nguồn gốc, quy hoạch, mục đích sử dụng, chủ rừng, loài cây, năm trồng, địa giới cũ |
items.geojson | 1780 lô nghiên cứu: ranh giới, chỉ số bản đồ, NDVI, nhãn tham chiếu (ghi nguồn người hay mô hình), xác suất của mô hình chuỗi thời gian |
communes.geojson | 264 xã sau sáp nhập 07/2025 phủ vùng 5 tỉnh (sapnhap.bando.com.vn, qua vietnamese-provinces-database, MIT), đã đơn giản hóa |
danh_sach_lo_mau.csv | Danh sách mẫu: 580 lô cà phê 1 ha của nghiên cứu, cộng 4 dòng lỗi cố ý để thử phần kiểm tra dữ liệu |
meta.json | Thống kê theo tỉnh, bảng mức ưu tiên so với nhãn tham chiếu |
Bản đồ diễn biến rừng 2020 lấy từ dịch vụ WFS công khai của tnr.vnforest.gov.vn và ghi nguồn trên trang. Cần xác nhận điều khoản sử dụng với Cục Kiểm lâm trước khi công khai rộng. Bản đồ cà phê FDP và Nature Trace không được đưa lên.
Thư mục webapp/ là repo datrich/veudr-web (riêng tư, nối với Cloudflare), có bản sao công khai pdlong-09/veudr-web. Repo cha LLM_4_deforest bỏ qua thư mục này (khai báo trong .git/info/exclude). Cloudflare Pages đọc repo và phục vụ thư mục public/ như trang tĩnh, không cần bước build. Mỗi lần git push lên nhánh main, Cloudflare tự triển khai lại.
Có hai cách cài trên dashboard Cloudflare (tài khoản đang quản lý smlcloud.online). Repo hỗ trợ cả hai.
Cách A, Workers (giao diện mặc định hiện nay): Workers & Pages → Create → Import a repository → datrich/veudr-web. Project name veudr-web (phải trùng name trong wrangler.jsonc), Build command để trống, Deploy command npx wrangler deploy. Sau khi deploy: Settings → Domains & Routes → Add → Custom domain → veudr.smlcloud.online. Cấu hình nằm ở wrangler.jsonc (phục vụ tĩnh thư mục public/, đường dẫn không tồn tại trả về 404.html).
Cấu hình đang chạy (19/10/2026): Worker veudr-web (Workers static assets). Tên miền dùng bản ghi DNS AAAA veudr → 100:: (Proxied) cộng Workers Route veudr.smlcloud.online/* → veudr-web, không dùng "Custom domain". Lý do: custom domain được tạo trên dashboard nhưng bản ghi DNS của nó không được phát ra trong hơn 20 phút. Không bật địa chỉ workers.dev.
Kiểm tra trang thật: BASE=https://veudr.smlcloud.online/ node test_ui.mjs (34 kiểm tra; ngày 19/10/2026 đạt toàn bộ).
Cách B, Pages:
datrich/veudr-web.public, nhánh main. Bấm Save and Deploy.veudr.smlcloud.online. DNS đã nằm ở Cloudflare nên bản ghi CNAME được tạo tự động; chứng chỉ HTTPS có sau vài phút.Cập nhật dữ liệu hoặc mã: chạy lại build_data.py hoặc build_lots.py nếu cần, kiểm tra bằng serve.py và test_ui.mjs, rồi git add -A && git commit && git push.
Giới hạn của Cloudflare Pages cần nhớ: mỗi tệp tối đa 25 MiB, mỗi lần triển khai tối đa 20.000 tệp. Thư mục tile và 1780 ảnh bằng chứng nằm trong giới hạn này. public/_headers đặt thời gian cache cho tile và ảnh. public/404.html làm cho đường dẫn không tồn tại (tile trống) trả về lỗi 404 thay vì trang chủ.
Cùng nội dung public/ còn được phục vụ trên server chạy vigil.green, ở tên miền phụ veudr.vigil.green. Web vigil.green và các dịch vụ Docker trên server không bị động tới.
/etc/nginx/sites-available/veudr, nghe cổng 80 với server_name veudr.vigil.green, gốc /var/www/veudr/current. Cloudflare của zone vigil.green đứng trước làm HTTPS, giống vigil.green. Nội dung cấu hình nằm trong deploy_vps.py.VPS_HOST=<ip> VPS_PW=<mật khẩu> python deploy_vps.py.
/var/www/veudr/releases/ rồi chuyển liên kết current trong một bước. Giữ 3 bản gần nhất.ln -sfn /var/www/veudr/releases/<bản> /var/www/veudr/current.--nginx để cài lại cấu hình nginx, --full để gửi lại tất cả.A veudr → <IP server>, Proxied.BASE=https://veudr.vigil.green/ node test_ui.mjs. Trước khi DNS có hiệu lực, có thể kiểm tra thẳng server: BASE=http://veudr.vigil.green/ EDGE_ARGS="--host-resolver-rules=MAP veudr.vigil.green <IP>" node test_ui.mjs.Giai đoạn 1 (trang này, chỉ gồm tệp tĩnh) đang chạy trên Cloudflare Pages như trên, chi phí bằng 0. Trước khi dùng công khai lâu dài, cần kiểm tra điều khoản của ảnh Esri và của bản đồ diễn biến rừng 2020.
Giai đoạn 2 (tính trên đúng ranh giới lô bất kỳ). Cần API riêng (FastAPI, Docker, PostGIS). Với mỗi lô mới, API:
Nguồn ảnh: Google Earth Engine (dùng thương mại phải trả phí) hoặc Copernicus Data Space / openEO. Cần VPS 2–4 vCPU, 4–8 GB RAM và object storage.
Trước khi áp dụng cho doanh nghiệp, cần kiểm chứng mô hình trên một mẫu lô thật có ranh giới thật. Mô hình hiện được huấn luyện trên vùng cảnh báo và ô vuông 1 ha.
Giai đoạn 3 (doanh nghiệp dùng thật).