Gộp 2 review: (A) 3 bảng trong report/tools-summary.html so với full1/#web, và (B) section “Digital & Web Presence” của 3 bản proposal thật (client-nova, client-delta, client-orchid trong _runs/) so với chính section #web đó. Kết luận chung: nội dung đúng và kiểm chứng được ở cả hai phía, phần A còn thiếu lớp trình bày trực quan, phần B phát hiện 1 lỗi encoding thật cần sửa trước khi giao khách.
Merges 2 reviews: (A) the 3 tables in report/tools-summary.html against full1/#web, and (B) the “Digital & Web Presence” section of 3 real proposal outputs (client-nova, client-delta, client-orchid in _runs/) against that same #web section. Combined verdict: content is accurate and verifiable on both sides; part A still lacks a visual presentation layer, part B found 1 real encoding bug to fix before client delivery.
#webTables inside sample #web.tbl trong full1.tbl tables in full1Dữ liệu gốc của 3 bảng đang được đánh giá ở các mục dưới đây. Dòng chi phí đã được sửa theo khuyến nghị F1 (tách chi phí tool $0 khỏi chi phí token thật $3,83).The source data for the 3 tables reviewed below. The cost row has been fixed per recommendation F1 (splitting $0 tool cost from the real $3.83 token cost).
Tất cả đã tích hợp vào code + test chạy thật, không phải kế hoạch.All wired into real code + tested working, not just planned.
| ToolTool | Dùng ở đâuUsed in | Làm gìDoes what | Chi phíCost |
|---|---|---|---|
| GLEIF | company-verifier | Xác thực pháp nhân công ty (tên, quốc gia, tình trạng hoạt động)Verifies company legal entity (name, country, active status) | Miễn phíFREE |
| Wikidata | company-verifier | Bổ sung năm thành lập/founder mà GLEIF không cóSupplements founding year/founders GLEIF doesn't carry | Miễn phíFREE |
| Jina Reader | web-osint-scanner | Đọc nội dung website khách hàng, trích xuất link mạng xã hội/reviewReads client website content, extracts social/review links | Miễn phíFREE |
| Companies House / OpenCorporates / SEC EDGAR | officers-lookup | Tra founder/officer từ đăng ký doanh nghiệp chính thức theo quốc giaLooks up founders/officers from official business registries, country-routed | Miễn phíFREE |
| bind_check.py (tự viếtself-written) | source-auditor | Kiểm tra trích dẫn có thật khớp với nguồn không, qua Jina ReaderChecks that citations really match their source, via Jina Reader | Miễn phíFREE |
| BeautifulSoup4 + html5lib | mechanical-validator | Bắt lỗi id trùng/section rỗng bằng cách đọc đúng cấu trúc DOMCatches duplicate ids/empty sections by reading the real DOM structure | Miễn phíFREE |
| ccusage | judgment-reviewer | Xuất CSV chi phí thật theo từng giai đoạn (token, model, thời gian)Exports a real per-phase cost CSV (tokens, model, duration) | Miễn phíFREE |
Đã tìm hiểu kỹ, có lý do cụ thể tại sao không đưa vào pipeline.Researched in depth, with a specific reason each was left out.
| ToolTool | Lý do không dùngWhy not used |
|---|---|
| Firecrawl | Cần đăng ký + giới hạn credit/tháng — Jina Reader làm được việc tương tự, miễn phí hoàn toànNeeds signup + monthly credit cap — Jina Reader does the same job, fully free |
| Crawl4AI | Bị chính sách bảo mật (Application Control) của máy chặn cài đặt — không phải lỗi codeBlocked by this machine's security policy (Application Control) — not a code bug |
| Apollo MCP | Chỉ mạnh về tìm liên hệ (email/SĐT) — pipeline không cần, chỉ cần tên/chức vụ công khai → dùng officers-lookup thay thếMainly strong at contact-finding (email/phone) — pipeline doesn't need that, only public name/title → replaced by officers-lookup |
| Webcite | Tool trả phí — thay bằng script tự viết bind_check.py làm đúng việc tương tự, miễn phíPaid tool — replaced by the self-written bind_check.py doing the same job, free |
| Langfuse / Helicone | Dùng để theo dõi app tự viết gọi API LLM — không áp dụng được cho Claude Code CLIBuilt to track a hand-written app calling an LLM API — doesn't apply to the Claude Code CLI |
| SEC EDGAR (dùng riêng) | Chỉ có công ty đại chúng Mỹ — khách SME hầu như không thuộc nhóm này (vẫn giữ làm nguồn phụ trong officers-lookup)Only covers US public companies — SME clients rarely qualify (still kept as a fallback source inside officers-lookup) |
| lxml | Chỉ cần khi tốc độ là vấn đề — 1 file proposal vài trăm KB không cần tối ưu tốc độOnly needed when speed matters — a proposal file at a few hundred KB doesn't need the speed boost |
| LoạiCategory | Số lượngCount | Chi tiếtDetail |
|---|---|---|
| Tool đang dùngTools in use | 7 | Tất cả miễn phí, không cần đăng ký tài khoản (GLEIF/Wikidata/Jina Reader/registries đều gọi trực tiếp qua API công khai)All free, no account signup needed (GLEIF/Wikidata/Jina Reader/registries all called directly via public APIs) |
| Tool đã cân nhắc, bỏTools evaluated, dropped | 7 | Đều có lý do kỹ thuật/chi phí cụ thể (xem Bảng 2)Each has a specific technical/cost reason (see Table 2) |
| Chi phí công cụ (tool)Tool cost | $0 | Toàn bộ 7 tool bên ngoài đều miễn phí — không tính chi phí tokenAll 7 external tools are free — this excludes token cost |
| Chi phí token (thật, đo được)Token cost (real, measured) | $3,83 | Run Client Nova 2026-09-24: điều phối $2,85 + 4 nhóm nghiên cứu $0,98 + 4 worker đối thủ $0,10 (xem F1, mục 5)Client Nova run, 2026-09-24: orchestrator $2.85 + 4 research groups $0.98 + 4 competitor workers $0.10 (see F1, section 5) |
Pipeline hiện tại dùng 7 tool bên ngoài, tất cả miễn phí và không cần đăng ký tài khoản. Chi phí thật duy nhất là token Claude Code, đo được chính xác theo từng giai đoạn qua ccusage. Sơ đồ đầy đủ (thứ tự chạy, node nào gọi tool nào): xem Pipeline diagram.The pipeline currently uses 7 external tools, all free and requiring no account signup. The only real cost is Claude Code tokens, measurable precisely per phase via ccusage. Full diagram (run order, which node calls which tool): see Pipeline diagram.
Ba bảng trong report/tools-summary.html trả lời đúng ba câu hỏi mà người quản lý cần: đang dùng tool gì, bỏ tool gì và vì sao, tốn bao nhiêu. Nội dung khớp với thực tế repo: 7 tool ở Bảng 1 đều ánh xạ tới 6 skill đang tồn tại thật (company-verifier, web-osint-scanner, officers-lookup, source-auditor, mechanical-validator, judgment-reviewer), và con số 7/7 ở Bảng 3 khớp đúng Bảng 1 và Bảng 2.
The three tables in report/tools-summary.html answer exactly the three questions a manager asks: what we use, what we dropped and why, what it costs. The content matches the repository reality: all 7 tools in Table 1 map to 6 skills that actually exist (company-verifier, web-osint-scanner, officers-lookup, source-auditor, mechanical-validator, judgment-reviewer), and the 7/7 counts in Table 3 match Tables 1 and 2 exactly.
Ba điểm chưa đạt chuẩn mẫu: (1) không có lớp trực quan hoá nào (0 biểu đồ, 0 KPI, 0 sơ đồ) trong khi mẫu #web trình bày đúng chừng đó nội dung bằng 4 thẻ KPI + 2 biểu đồ + 1 sơ đồ luồng + 3 thẻ việc-cần-làm; (2) 3 bảng thiếu khung cuộn ngang và toàn bộ trang không có một @media nào — trên điện thoại bảng 4 cột sẽ tràn ra ngoài; (3) kiểu header/hàng kẻ chưa theo token của mẫu (mẫu: chữ hoa màu accent, có kẻ sọc, có hover từng hàng).
Three gaps against the sample: (1) no visual layer at all (0 charts, 0 KPIs, 0 diagrams) while the #web sample presents a comparable amount of content as 4 KPI tiles + 2 charts + 1 flow diagram + 3 action cards; (2) the 3 tables have no horizontal-scroll wrapper and the whole page carries zero @media rules — on a phone a 4-column table overflows; (3) header and row styling doesn’t follow the sample tokens (sample: uppercase accent headers, zebra striping, per-row hover).
Yêu cầu nói “so với bảng mẫu ở full1/#web” — nhưng mục #web của full1 không chứa bất kỳ thẻ <table> nào (đã kiểm chứng trực tiếp trên bản live: 0 bảng, 2 canvas, 4 KPI, 1 khối Mermaid). Vì vậy phép so sánh đúng phải chia làm 2 lớp: lớp trình bày (mẫu #web dùng gì) và lớp bảng (chuẩn .tbl — 23 bảng rải khắp full1). Báo cáo này đánh giá cả hai lớp.
The request refers to the “sample table” at full1/#web — but the #web section of full1 contains no <table> element at all (verified live: 0 tables, 2 canvases, 4 KPIs, 1 Mermaid block). The comparison therefore has to run on two levels: the presentation layer (what #web uses) and the table layer (the .tbl standard — 23 tables across full1). This report assesses both.
| BảngTable | Tiêu đềTitle | CộtColumns | HàngRows |
|---|---|---|---|
| T1 | Tool đang dùng thậtTools actually in use | Tool · Dùng ở đâuUsed in · Làm gìDoes what · Chi phíCost | 7 |
| T2 | Tool đã cân nhắc, không dùngTools evaluated, not adopted | Tool · Lý do không dùngWhy not used | 7 |
| T3 | Tổng hợp chi phí & truy cậpCost & access summary | LoạiCategory · Số lượngCount · Chi tiếtDetail | 3 |
| LớpLayer | Nội dung thực tế của full1What full1 actually contains | Dùng để so gìUsed to compare |
|---|---|---|
| Lớp trình bày (mục #web)Presentation layer (section #web) |
sec-tag · h2 + span.sec-num · p.lead · div.grid.g4 (4 .kpi có đếm số độngwith animated counters) · div.grid.g2 (2 .chartbox + canvas #cChannel/#cDigital) · div.mermaid (flowchart LR) · div.grid.g3 (3 .card + span.pill.p-green/p-amber) | Cách kể chuyện thị giác cho cùng loại nội dung auditHow the same kind of audit content is told visually |
| Lớp bảng (23 bảng .tbl)Table layer(23 .tbl tables) |
div.tbl-wrap → table.tbl → thead/tbody; th chữ hoa màu accent, kẻ sọc chẵn, hover hàng, pill ngữ nghĩa trong ô (p-green/p-amber/p-blue) | Chuẩn hình thức bảng mà 3 bảng của ta nên theoThe table look-and-feel our 3 tables should follow |
Phương pháp: đọc bản live của full1 (3.720.647 byte) và tách riêng mục #web (3.439 byte) để phân tích; đối chiếu với mã nguồn report/tools-summary.html (14.662 byte) và danh sách skill thật trong skills/. Mọi con số trong báo cáo đều đếm được từ các tệp đó.
Method: fetched the live full1 page (3,720,647 bytes) and isolated the #web section (3,439 bytes); cross-checked against the source of report/tools-summary.html (14,662 bytes) and the real skill list in skills/. Every figure in this report is counted from those files.
Mục #web của full1 là “06 Digital & Web Presence Audit” thuộc nhóm Due Diligence. Nó không có bảng. Nó kể câu chuyện bằng 6 khối, theo đúng thứ tự: nhãn mục → tiêu đề có số thứ tự → đoạn dẫn 1 khối → 4 KPI → 2 biểu đồ → 1 sơ đồ luồng → 3 thẻ việc-cần-làm có gắn nhãn ưu tiên. Đó là lý do vì sao so “bảng của ta” với “bảng ở #web” là so sai đối tượng — đúng ra phải so cách trình bày ở #web và chuẩn bảng ở 22 mục còn lại.
The #web section of full1 is “06 Digital & Web Presence Audit” under Due Diligence. It contains no table. It tells the story in 6 blocks, in order: section tag → numbered heading → one lead paragraph → 4 KPIs → 2 charts → 1 flow diagram → 3 action cards with priority pills. That is why comparing “our table” to “the table at #web” compares the wrong objects — the right comparison is the presentation style at #web and the table standard used elsewhere.
.tbl của mẫu (đối chiếu trực tiếp)The sample’s .tbl standard (direct comparison)| Thành phầnElement | Mẫu full1 quy địnhfull1 sample | Ba bảng của taOur three tables |
|---|---|---|
| Khung ngoàiOuter wrapper | .tbl-wrap{overflow-x:auto;border:1px solid;border-radius:14px} — bảng tự cuộn trong khung, không làm tràn trangtable scrolls inside its own frame, never breaks the page | ThiếuMissing — 0 lần xuất hiện tbl-wrap |
| Ngữ nghĩaSemantics | <thead> + <tbody> (22/23 bảng) | ĐạtMet — 3/3 bảng đều có đủtables have both |
| Header cộtColumn header | .tbl th{color:var(--aqua);text-transform:uppercase;letter-spacing:.06em;font-size:.7rem;font-weight:700} | Một phầnPartial — có chữ hoa + giãn chữ, nhưng màu --muted (xám) và 0.66rem, nhạt hơn mẫuuppercase + letterspacing present, but colour is grey --muted at 0.66rem — weaker than the sample |
| Kẻ sọc hàngZebra rows | tbody tr:nth-child(even) td | ThiếuMissing |
| Hover hàngRow hover | .tbl tr:hover td{background:var(--panel2)} | ThiếuMissing |
| Pill ngữ nghĩaSemantic pills | Pill mang đánh giá: p-green Low-Med · p-amber High · p-blue MedPills carry judgement: p-green Low-Med · p-amber High · p-blue Med | Một phầnPartial — có .badge.free nhưng chỉ mã hoá được 1 trạng thái (chi phí), lặp y hệt 7/7 hànghas .badge.free but encodes only one state (cost) and repeats identically 7/7 rows |
| Nội dung định lượngQuantified content | Cột số/ước lượng + cột phán đoán cuối bảng (Effort, Horizon, Rate ₱, Priority)numeric/estimate column + a judgement column at the end (Effort, Horizon, Rate ₱, Priority) | ThiếuMissing — T1/T2 không có cột định lượng nào; T3 chỉ có cột đếmT1/T2 have no quantified column; T3 only has a count |
| Song ngữ theo ôPer-cell bilingual | Không — mẫu chỉ có tiếng Anh tĩnhNo — the sample is static English only | Vượt mẫuExceeds — VI/EN chuyển được ngay trong từng ô, đã kiểm chứng hoạt động đúngVI/EN switch works inside every cell, verified working |
Chín tiêu chí, chấm theo 4 mức: Đạt Một phần Chưa đạt Vượt mẫu. Kết quả: 1 vượt · 1 đạt · 2 một phần · 5 chưa đạt. Nine criteria scored on four levels: Met Partial Not met Exceeds. Result: 1 exceeds · 1 met · 2 partial · 5 not met.
| # | Tiêu chíCriterion | Chuẩn mẫuSample standard | Ba bảng của taOur tables | Kết quảResult |
|---|---|---|---|---|
| 1 | Cấu trúc bảng chuẩnCorrect table structure | thead/tbody đầy đủcomplete | 3/3 đầy đủcomplete | ĐạtMet |
| 2 | Cuộn ngang an toàn trên mobileSafe horizontal scroll on mobile | .tbl-wrap cho mọi bảngon every table | 0 khung cuộnscroll frames | Chưa đạtNot met |
| 3 | Responsive toàn trangPage-wide responsiveness | nhiều breakpoint, có @media(max-width:820px)multiple breakpoints, incl. @media(max-width:820px) | 0 @media trong cả tệpin the whole file | Chưa đạtNot met |
| 4 | Khả năng dò hàng (zebra + hover)Scanability (zebra + hover) | có cả haiboth present | không có cả haineither present | Chưa đạtNot met |
| 5 | Header cột nổi bậtProminent column header | chữ hoa, giãn chữ, màu accentuppercase, letterspaced, accent colour | chữ hoa + giãn, nhưng màu xámuppercase + letterspaced, but grey | Một phầnPartial |
| 6 | Pill mang thông tin phán đoánPills carrying judgement | mức độ / ưu tiên / độ khólevel / priority / effort | chỉ trạng thái chi phí, lặp lạicost state only, repetitive | Một phầnPartial |
| 7 | Lớp trực quan hoá (KPI/chart/sơ đồ)Visual layer (KPI/chart/diagram) | 4 KPI + 2 chart + 1 sơ đồ + 3 thẻ ưu tiên ngay tại #web4 KPIs + 2 charts + 1 diagram + 3 priority cards right in #web | 0 KPI · 0 chart · 0 sơ đồKPIs · 0 charts · 0 diagrams | Chưa đạtNot met |
| 8 | Nhãn mục & nhịp thị giácSection labels & visual rhythm | sec-tag + sec-num + .reveal xuất hiện dầnfade-in | chỉ có h1/h2 và một dòng phụonly h1/h2 plus one sub-line | Chưa đạtNot met |
| 9 | Song ngữ VI/EN theo từng ôPer-cell VI/EN bilingual | không hỗ trợnot supported | hoạt động đúng ở mọi ô và mọi tiêu đềworks in every cell and header | Vượt mẫuExceeds |
| ID | Vị tríWhere | Phát hiệnFinding | Mức độSeverity | Cách xử lýFix |
|---|---|---|---|---|
| F1 | T3 · dòng chi phícost row | “Tổng chi phí vận hành hiện tại = $0” dễ bị đọc thành “pipeline miễn phí hoàn toàn”. Thực tế chỉ chi phí tool bằng 0; chi phí token là tiền thật. Run Client Nova ngày 2026-09-24 tốn $3,83 (điều phối $2,85 + 4 nhóm nghiên cứu $0,98 + 4 worker đối thủ $0,10), dài 4h04m.“Current total operating cost = $0” reads as “the pipeline is completely free”. In reality only the tool cost is zero; token cost is real money. The Client Nova run on 2026-09-24 cost $3.83 (orchestrator $2.85 + 4 research groups $0.98 + 4 competitor workers $0.10) over 4h04m. | CaoHigh | Tách thành 2 dòng: “Chi phí tool = $0” và “Chi phí token = đo được, ví dụ $3,83/proposal (run Client Nova)”. Số liệu đã có sẵn trong _runs/client-nova/client-nova-cost-report.csv.Split it into two rows: “Tool cost = $0” and “Token cost = measurable, e.g. $3.83 per proposal (Client Nova run)”. The figures already exist in _runs/client-nova/client-nova-cost-report.csv. |
| F2 | T1 · cột Chi phíCost column | Badge FREE lặp y hệt 7/7 hàng → cả một cột không mang thêm thông tin nào.The FREE badge repeats identically in 7 of 7 rows — so the entire column adds no information. | ThấpLow | Gộp thành một dòng chú thích dưới bảng (“tất cả miễn phí, không cần tài khoản”), dùng chỗ đó cho một cột có ích hơn (ví dụ: nếu bỏ tool này thì mất gì).Collapse it into one note under the table (“all free, no account needed”) and spend the space on something useful (e.g. what is lost if the tool is removed). |
| F3 | T1 · phạm viscope | Bảng trộn 2 loại đối tượng: 6 dịch vụ bên ngoài (GLEIF, Wikidata, Jina Reader, registries, BeautifulSoup4 + html5lib, ccusage) và 1 script tự viết (bind_check.py).The table mixes two kinds of object: 6 external services (GLEIF, Wikidata, Jina Reader, registries, BeautifulSoup4 + html5lib, ccusage) and 1 self-written script (bind_check.py). |
ThấpLow | Thêm cột “Loại” (external service / in-house script) — vì hai loại này có rủi ro bảo trì rất khác nhau.Add a “Type” column (external service / in-house script) — the two carry very different maintenance risk. |
| F4 | T2 · hàng Crawl4AICrawl4AI row | Lý do “bị chính sách Application Control của máy chặn cài” là giới hạn môi trường, không phải một quyết định kiến trúc. Đặt cùng nhóm với Firecrawl/Webcite (lý do thật sự là chi phí/kỹ thuật) làm sai bản chất bảng.The reason “blocked by this machine’s Application Control policy” is an environment limit, not an architecture decision. Filing it with Firecrawl/Webcite (whose reasons really are cost and technical fit) misrepresents the table. | Trung bìnhMedium | Tách ra một nhóm riêng “bị chặn bởi môi trường, cần mở lại nếu chạy trên máy khác” — đây cũng chính là điều kiện để skill dùng được trên nhiều máy.Split it into its own group: “blocked by the environment, revisit on another machine” — which is exactly the condition for running this skill across multiple devices. |
| F5 | T2 · cấu trúcstructure | Không có cột mức độ / rủi ro / chi phí thay thế, nên người đọc không biết “bỏ tool đó có an toàn không”. Bảng mẫu luôn kết thúc bằng một cột phán đoán (Effort / Horizon / Priority).There is no severity / risk / replacement-cost column, so a reader cannot tell whether dropping a tool is safe. The sample table always ends with a judgement column (Effort / Horizon / Priority). | Trung bìnhMedium | Thêm 1 cột: “Thay thế bằng gì” hoặc “Rủi ro nếu cần lại”, kèm pill 3 mức.Add one column: “Replaced by” or “Risk if needed again”, carrying a 3-level pill. |
| F6 | Cả 3 bảng · hiển thịAll 3 tables · rendering | Không có tbl-wrap và cả tệp có 0 @media. T1 có ô đầu dài 44 ký tự và bị white-space:nowrap → trên màn hình ~360px bảng sẽ đẩy tràn cả trang, buộc cuộn ngang toàn trang.No tbl-wrap, and the whole file has 0 @media. T1’s first cell is 44 characters long and is set to white-space:nowrap — on a ~360px screen the table pushes the whole page wide and forces page-level horizontal scrolling. |
CaoHigh | Bọc cả 3 bảng trong .tbl-wrap (đúng chuẩn mẫu) và thêm 2 breakpoint 820px / 520px.Wrap all 3 tables in .tbl-wrap (exactly the sample standard) and add 820px / 520px breakpoints. |
| F7 | Trang · trình bàyPage · presentation | Toàn trang có 0 KPI, 0 biểu đồ, 0 sơ đồ, 0 nhãn mục, 0 hiệu ứng. Mẫu tham chiếu dùng đúng lớp này để người quản lý nắm ý chính trong vài giây trước khi đọc bảng.The whole page has 0 KPIs, 0 charts, 0 diagrams, 0 section labels, 0 transitions. The reference sample uses precisely this layer so a manager grasps the main point in seconds before reading any table. | Trung bìnhMedium | Thêm một dải 4 KPI (7 dùng / 7 bỏ / $0 tool / $3,83 token) và 1 biểu đồ chi phí theo giai đoạn, theo đúng mẫu #web.Add a 4-KPI strip (7 in use / 7 dropped / $0 tool cost / $3.83 tokens) plus one chart of cost per phase, following the #web pattern. |
| F8 | Chứng cứ chi phíCost evidence | File chi phí chưa xuất nhất quán: client-orchid-cost-report.csv chỉ có 3 hàng (thiếu nhóm C và thiếu hàng điều phối), trong khi client-nova-cost-report.csv có 9 hàng đầy đủ. Nếu đem số này đi báo cáo ngân sách thì phải kiểm lại.Cost exports are inconsistent: client-orchid-cost-report.csv has only 3 rows (group C and the orchestrator row are missing) while client-nova-cost-report.csv has 9 complete rows. Any budget figure taken from these files needs re-checking first. |
Trung bìnhMedium | Chốt trước khi công bố: mỗi run phải xuất đủ hàng điều phối + 4 nhóm; thiếu hàng thì ghi rõ “chưa đo” thay vì để trống.Settle this before publishing: every run must emit the orchestrator row plus all 4 groups; where a row is missing, write “not measured” rather than leaving it out. |
| F9 | Bảng màuColour set | Các trang report/ dùng tông beige/terracotta của dashboard, còn bản proposal mẫu (full1) dùng tông navy/teal. Hai bên tự nhất quán nhưng nhìn khác hệ.report/ pages use the dashboard’s beige/terracotta tone while the sample proposal (full1) uses navy/teal. Each is internally consistent, but they read as two different systems. |
ThấpLow | Quyết định có chủ đích: giữ tách (report = nội bộ, proposal = khách hàng) và ghi rõ trong tài liệu, hoặc đồng bộ về một hệ.Make it a deliberate choice: keep them split (report = internal, proposal = client-facing) and document it, or unify on a single system. |
| # | Việc cần làmAction | Vì saoWhy | CôngEffort | Ưu tiênPriority |
|---|---|---|---|---|
| 1 | Bọc 3 bảng trong .tbl-wrapWrap the 3 tables in .tbl-wrap | Lỗi hiển thị thật trên điện thoại (F6)A real mobile rendering bug (F6) | ~5 phút~5 min | P0 |
| 2 | Sửa dòng “$0” ở Bảng 3 thành 2 dòng: tool $0 / token đo đượcSplit the “$0” row in Table 3 into tool cost $0 / measurable token cost | Tránh hiểu sai về ngân sách (F1)Avoids a budget misreading (F1) | ~10 phút~10 min | P0 |
| 3 | Thêm breakpoint 820 / 520px cho cả trangAdd 820/520px breakpoints for the whole page | Trang hiện không có responsive nào (F6)Page currently has no responsive rules (F6) | ~10 phút~10 min | P0 |
| 4 | Bảng 1: gộp cột FREE + thêm cột “Loại”Table 1: collapse the FREE column + add a “Type” column | Cột đang vô thông tin, và trộn 2 loại đối tượng (F2, F3)Column carries no information and mixes two object types (F2, F3) | ~15 phút~15 min | P1 |
| 5 | Bảng 2: thêm cột phán đoán; tách hàng Crawl4AI khỏi nhóm “đã bỏ”Table 2: add a judgement column; move Crawl4AI out of “dropped” | Đúng bản chất vấn đề (F4, F5)Reflects the real nature of each case (F4, F5) | ~20 phút~20 min | P1 |
| 6 | Thêm dải KPI + 1 biểu đồ theo mẫu #webAdd a KPI strip + one chart following the #web pattern | Đối tượng đọc là quản lý, cần nắm ý trong vài giây (F7)The audience is management and needs the point in seconds (F7) | ~1 giờ~1 h | P2 |
| 7 | Chuẩn hoá mọi bảng trong report/ về .tbl + .tbl-wrap (đưa vào một khối CSS dùng chung)Standardise every table under report/ on .tbl + .tbl-wrap via one shared CSS block | Để lần sau không lặp lại 5 tiêu chí chưa đạtPrevents the same 5 failed criteria next time | ~1 giờ~1 h | P2 |
Phần 1-8 trên so tài liệu nội bộ (report/tools-summary.html) với #web. Phần này so đầu ra thật của pipeline — section digital-web trong 3 file _runs/<slug>/<slug>-proposal.html — với chính section #web đó, để biết pipeline đang tạo ra sản phẩm gần hay xa chuẩn mẫu.
Sections 1-8 above compare internal documentation (report/tools-summary.html) against #web. This section compares the pipeline's real output — the digital-web section in 3 files, _runs/<slug>/<slug>-proposal.html — against that same #web section, to see how close the pipeline's actual product is to the sample.
| Tiêu chíCriterion | full1 #web (mẫu gốc)(original sample) |
3 bản proposal thật3 real proposals |
|---|---|---|
| Bảng dữ liệuData tables | Không cóNone — 0 <table>, chỉ 4 KPI + 2 chart | CóPresent — 1-3 bảng .tbl/bản, severity .pill theo dòng |
| Trích dẫn nguồnSourced citations | Không cóNone — chỉ nhắc “Per Scoping Meeting 2” trong văn xuôi | CóPresent — .cite-wrap hover-card kèm excerpt thật từ trang nguồn |
| Tách ước tính khỏi sự thậtEstimate vs. fact separation | Không cóNone | CóPresent — nhãn .assess rõ ràng ở mọi số liệu suy đoán |
| DiagramDiagram | Dùng MermaidUses Mermaid | Vượt mẫuExceeds — không Mermaid, đúng yêu cầu đã chốt trước đó |
| Ví dụ trước/sauBefore/after examples | Không cóNone | Chỉ client-delta cóclient-delta only — 3 cặp before/after thật |
| BảnProposal | Số bảngTables | Bằng chứng đáng chú ýNotable evidence |
|---|---|---|
| client-nova (856,6 KB) | 1 | Phát hiện đúng vấn đề kinh doanh cụ thể — CTA duy nhất là “chờ 24 giờ”, mất khách nước ngoài lệch múi giờ.Correctly identifies a concrete business problem — the only CTA is “wait 24 hours”, losing overseas guests in other time zones. |
| client-delta (679,3 KB) | 2 + 3 before/after+ 3 before/after | Audit sâu nhất — trích nguyên văn lỗi PHP rò ra HTML công khai kèm đường dẫn server tuyệt đối.The deepest audit — quotes the actual PHP warning leaking into public HTML, with the absolute server path. |
| client-orchid (765,5 KB) | 3 | So sánh chéo với thương hiệu chị (murahkitchen.my) để chỉ ra bất đối xứng kênh (TikTok) — dùng dữ liệu thật của khách, không giả định chung.Cross-references the sister brand (murahkitchen.my) to show a channel asymmetry (TikTok) — uses the client's own real data, not a generic assumption. |
client-delta-proposal.html, cuối section digital-web: đoạn .assess tiếng Việt bị lỗi encoding, hiển thị ký tự vô nghĩa và lồng sai cấu trúc t-vi/t-en:
client-delta-proposal.html, end of the digital-web section: the Vietnamese .assess paragraph has an encoding bug, showing garbled characters nested incorrectly inside the t-vi/t-en structure:
"??c t?nh c?a TechNext" — <span class="t-vi">??c t?nh c?a TechNext</span><span class="t-en">TechNext estimate</span> (lồng sai bên trong span data-en)(nested incorrectly inside the data-en span)
Dấu hiệu 1 bước ghi file bị sai charset (thiếu UTF-8) khi build đoạn văn có tiếng Việt có dấu. Nên chạy lại mechanical-validator trên đúng file này sau khi sửa, và kiểm tra xem còn đoạn nào khác trong cùng file bị lỗi tương tự không.
Symptomatic of a file-write step using the wrong charset (missing UTF-8) while building a paragraph with Vietnamese diacritics. Re-run mechanical-validator on this exact file after fixing, and check for any other paragraph in the same file with the same corruption.
Đọc trực tiếp _runs/<slug>/<slug>-cost-report.csv của 3 lần chạy. Kết quả: 1/3 file dùng được, 1/3 dùng được một phần, 1/3 gần như là rác — do file dùng schema cũ (trước khi cơ chế 1-task-1-session được chốt).
Read directly from _runs/<slug>/<slug>-cost-report.csv for all 3 runs. Result: 1 of 3 files is usable, 1 of 3 partially usable, 1 of 3 is close to garbage — because it uses the old schema (before the one-task-one-session rule was locked in).
| Lần chạyRun | Số dòngRows | Agent thậtReal agent | Tổng chi phíTotal cost | Đánh giáVerdict |
|---|---|---|---|---|
| client-nova | 9 | codex · deepseek-v4-flash | $3,8315 | Dùng đượcUsable |
| client-orchid | 3 (thiếu nhóm C + hàng điều phốimissing group C + orchestrator row) | codex · deepseek-v4-flash | $1,0831 (chưa đủincomplete) | Một phầnPartial |
| client-delta | 237+ (hầu hết không liên quanmostly unrelated) | lẫn 10+ agent khác nhaumixed, 10+ different agents | không xác định đượcindeterminate | Không dùng đượcUnusable |
Cả 9/9 dòng trong client-nova-cost-report.csv đều ghi agent=codex, model_name=deepseek-v4-flash — nghĩa là toàn bộ lần chạy này được thực thi bởi phiên Codex+DeepSeek song song, không phải Claude Code. Số liệu tự nhất quán (tổng $3,8315 khớp đúng tổng từng dòng) nên vẫn dùng được để báo cáo chi phí, nhưng cần biết rõ đây không phải 1 lần chạy Claude Code thật.
All 9 of 9 rows in client-nova-cost-report.csv record agent=codex, model_name=deepseek-v4-flash — meaning this entire run was executed by the parallel Codex+DeepSeek session, not Claude Code. The figures are internally consistent (the $3.8315 total matches the row sum exactly) so it's still usable for cost reporting, but it needs to be understood as not a real Claude Code run.
client-delta-cost-report.csv dùng schema cũ (session_id, last_activity, task_label, task_duration, model_name...) — bản trước khi chốt luật “1 task = 1 session”. File có 237+ dòng, phần lớn ghi (outside this pipeline's recorded timeline) — tức là log của rất nhiều session không liên quan gì tới lần chạy client-delta (thấy cả gpt-5.6-sol, gemini-3.5-flash, glm-5.3, các phiên từ tháng 6-8/2026). Tệ hơn: nhãn phase1_groupC xuất hiện 3 lần với 3 session_id hoàn toàn khác nhau — một trong số đó là chính session Claude Code đang gõ báo cáo này (11111111...), bị gán nhầm toàn bộ chi phí phiên đó ($220,90) vào 1 task, đúng loại lỗi “đoán theo khung giờ, không phải session riêng” mà thiết kế mới (bắt buộc ghi session_id đúng, 1 task = 1 session) đã sửa.
client-delta-cost-report.csv uses the old schema (session_id, last_activity, task_label, task_duration, model_name...) — the version before the “1 task = 1 session” rule was locked in. The file has 237+ rows, most tagged (outside this pipeline's recorded timeline) — logs from many unrelated sessions with nothing to do with the client-delta run (gpt-5.6-sol, gemini-3.5-flash, glm-5.3, sessions from June-August 2026). Worse: the phase1_groupC label appears 3 times under 3 completely different session_ids — one of them is the very Claude Code session writing this report (11111111...), which got its entire session cost ($220.90) misattributed to one task — exactly the “guessed by time window, not a dedicated session” failure mode the new design (mandatory correct session_id, one task per session) was built to fix.
Xóa/lưu trữ riêng client-delta-cost-report.csv hiện tại (không dùng để báo giá) và chạy lại ccusage_to_csv.py bản hiện hành trên checkpoint client-delta thật để có số liệu đáng tin. Với client-orchid, chạy bổ sung nhóm C + hàng điều phối còn thiếu trước khi báo tổng chi phí.
Archive/discard the current client-delta-cost-report.csv (don't quote it) and re-run the current ccusage_to_csv.py against the real client-delta checkpoint for trustworthy figures. For client-orchid, run the missing group C + orchestrator row before reporting a total cost.
Nội dung: đạt. 17 hàng dữ liệu trong 3 bảng đều kiểm chứng được và tự khớp với nhau (7 tool ↔ 7 skill thật; 7/7/7 ↔ nhau). Đây là tài liệu đủ tin để đưa cho quản lý đọc về mặt số liệu.
Trình bày: chưa đạt chuẩn mẫu. 5/9 tiêu chí chưa đạt — đều là hình thức và sửa nhanh (ước tính khoảng 2,5 giờ cho toàn bộ 7 việc, trong đó 3 việc P0 chưa tới 30 phút).
Content: pass. All 17 data rows across the 3 tables are verifiable and self-consistent (7 tools ↔ 7 real skills; 7/7/7 ↔ each other). It is trustworthy enough to hand to management on the numbers.
Presentation: not at the sample standard. 5 of 9 criteria are unmet — all cosmetic and fast to fix (about 2.5 h for all 7 actions, with the 3 P0 items under 30 min combined).
| # | Câu hỏiQuestion | Ảnh hưởngImpact |
|---|---|---|
| 1 | Chuẩn hoá mọi bảng trong report/ về .tbl + .tbl-wrap? (khuyến nghị: có)Standardise every table under report/ on .tbl + .tbl-wrap? (recommended: yes) | Sửa 5 tiêu chí chưa đạt một lần, dùng lại cho các báo cáo sauFixes 5 unmet criteria at once, reusable for later reports |
| 2 | Các trang report/ có cần thêm dải KPI / biểu đồ như #web không? (khuyến nghị: có 1 dải KPI + 1 biểu đồ)Should report/ pages gain a KPI strip / charts like #web? (recommended: 1 KPI strip + 1 chart) | Quyết định tốc độ tiếp nhận thông tin của người đọc cấp quản lýDecides how fast a management reader absorbs the point |
| 3 | Giữ tông màu beige cho report/ hay đồng bộ tông teal của bản proposal?Keep the beige tone for report/ or unify with the proposal’s teal tone? | Nhất quán thương hiệu giữa tài liệu nội bộ và tài liệu khách hàngBrand consistency between internal and client-facing documents |
Lưu ý đính chính: mục #web của full1 không có bảng nào. Nếu trước đó có trao đổi “3 bảng của ta theo đúng bảng mẫu ở #web” thì câu đó chưa khớp thực tế — bảng mẫu đúng nằm ở 22 mục khác của full1.
Correction note: the #web section of full1 contains no table. If it was previously stated that “our 3 tables follow the sample table at #web”, that statement does not match reality — the real table samples sit in the other 22 sections of full1.
| NguồnSource | Số liệu đã đếmCounted figures | Cách kiểm lạiHow to re-check |
|---|---|---|
report/tools-summary.html | 14.662 byte · 3 bảng · 17 hàng · 0 @media · 0 overflow-x · 0 tbl-wrap | mở tệp, tìm từ khoáopen the file, search the keywords |
https://skytechnext.github.io/full1/#web | mục #web: 3.439 byte · 0 <table> · 2 canvas · 4 .kpi · 1 khối Mermaid · 3 thẻ quick-win#web section: 3,439 bytes · 0 <table> · 2 canvas · 4 .kpi · 1 Mermaid block · 3 quick-win cards | mở đúng link #web và đếmopen the exact #web link and count |
| Toàn trang full1full1 whole page | 3.720.647 byte · 23 bảng <table class="tbl"> · 22 <thead> · 23 <tbody> · 9 khối Mermaid | tải trang và đếm thẻdownload the page and count tags |
skills/ | 10 skill: assembler, chart-data-analyst, checkpoint-manager, company-verifier, front-matter-writer, judgment-reviewer, mechanical-validator, officers-lookup, source-auditor, web-osint-scanner | liệt kê thư mục skills/list the skills/ directory |
_runs/client-nova/client-nova-cost-report.csv | 9 hàng · tổng $3,8315 · điều phối $2,8489 · 4 nhóm $0,8844 · 4 worker đối thủ $0,09829 rows · total $3.8315 · orchestrator $2.8489 · 4 groups $0.8844 · 4 competitor workers $0.0982 | cộng cột cost_usdsum the cost_usd column |
_runs/client-orchid/client-orchid-cost-report.csv | chỉ 3 hàng (groupA/B/D) — thiếu nhóm C và hàng điều phốionly 3 rows (groupA/B/D) — missing group C and the orchestrator row | đếm số hàngcount the rows |