Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Bài 8 — Vận hành thực tế: tự động hóa, lịch chạy, cảnh báo & chi phí

Đã đọc 0/10 mục · còn khoảng 4 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Một agent chạy được một lần trên máy bạn chưa phải sản phẩm. Competitive intelligence có giá trị khi nó chạy đều, phát hiện thay đổi, và báo đúng lúc mà không đốt tiền. Bài này ghép mọi thứ thành hệ thống vận hành được.

Từ script thành pipeline

Đóng gói loop thành một hàm run_ci(config) nhận cấu hình và trả báo cáo + chi phí:

def run_ci(config):
    budget = CostGuard(config["max_cost_usd"])
    queries = expand_queries(config["goal"], config["competitors"])
    sources = search_and_rank(queries, budget)
    texts = fetch_all(sources, budget)
    rows = [extract_row(c, texts, budget) for c in config["competitors"]]
    rows = [r for r in map(verify_row, rows)]      # bài 7
    matrix = build_matrix(rows, config["fields"])  # bài 5
    report = render_report(matrix, rows)           # bài 6
    return report, budget.spent

Kiểm soát chi phí bằng CostGuard

Đặt một "cầu dao" đếm token/tiền và dừng an toàn khi chạm ngân sách, trả kết quả một phần thay vì đốt vô hạn:

class CostGuard:
    def __init__(self, cap): self.cap, self.spent = cap, 0.0
    def add(self, usd):
        self.spent += usd
        if self.spent > self.cap:
            raise BudgetExceeded(f"Vượt {self.cap}$")

Chạy định kỳ (scheduling)

CI thường chạy hằng ngày hoặc hằng tuần. Dùng cron trên server hoặc scheduler của nền tảng:

# 7h sáng thứ Hai hằng tuần
0 7 * * 1 /path/.venv/bin/python /path/run_ci.py --config fintech.yml

Ghi log mỗi lần chạy (thời gian, chi phí, số nguồn, số cờ đỏ) để theo dõi sức khỏe agent.

Phát hiện thay đổi & cảnh báo (diffing)

Giá trị lớn nhất của CI định kỳ là báo khi có thay đổi, không phải gửi lại cùng một báo cáo. Lưu snapshot lần trước, so với lần này:

def diff_snapshots(old, new):
    changes = []
    for field in new:
        if old.get(field) != new[field]:
            changes.append((field, old.get(field), new[field]))
    return changes
  • Nếu có thay đổi quan trọng (đối thủ đổi giá, ra tính năng) → gửi cảnh báo ngay (Slack/email/Telegram).
  • Nếu không đổi → chỉ log, không làm phiền người dùng.
  • Cảnh báo phải kèm cái gì đổi, từ đâu sang đâu, nguồn nào.

Xử lý lỗi để không gãy giữa chừng

  • Fail an toàn từng nguồn — một URL chết không được làm sập cả lần chạy.
  • Retry có giới hạn cho lỗi tạm thời (timeout), backoff giữa các lần.
  • Báo cáo một phần — nếu 1/4 đối thủ không lấy được dữ liệu, vẫn xuất phần còn lại kèm ghi chú thiếu.
  • Cảnh báo vận hành — nếu >50% nguồn fail, gửi cảnh báo cho bạn (có thể search API hỏng, key hết hạn).

Khung tư duy vận hành: 4 câu hỏi mỗi lần chạy

  • Có chạy không? (health) — log có ghi nhận lần chạy không.
  • Có đúng không? (quality) — bao nhiêu cờ đỏ, bao nhiêu nguồn OK.
  • Có đáng tiền không? (cost) — chi phí lần này so với giá trị nó tạo.
  • Có ai đọc không? (impact) — cảnh báo có được mở, có dẫn tới hành động.
Agent không ai đọc là agent nên tắt.

Sai lầm thường gặp

  • Không có cầu dao chi phí — một vòng lặp lỗi đốt hàng chục USD qua đêm.
  • Gửi lại nguyên báo cáo mỗi lần thay vì chỉ báo phần thay đổi — người dùng phớt lờ (alert fatigue).
  • Một URL lỗi làm sập cả job — thiếu fail an toàn.
  • Không log nên không biết agent còn sống hay đã hỏng âm thầm.
  • Cảnh báo không kèm nguồn — người nhận không kiểm chứng được, mất niềm tin.
  • Quên gia hạn/luân phiên API key — job chết lặng lẽ khi key hết hạn.
  • Không định kỳ rà nguồn — đối thủ đổi cấu trúc web, extractor trả rỗng mà không ai biết.

Checklist vận hành

  • [ ] CostGuard đặt trần và dừng an toàn
  • [ ] Cron/scheduler đã cấu hình đúng tần suất
  • [ ] Diffing chỉ cảnh báo khi có thay đổi thật
  • [ ] Cảnh báo kèm cái gì đổi + nguồn
  • [ ] Fail an toàn từng nguồn, retry có giới hạn
  • [ ] Log mỗi lần chạy: thời gian, chi phí, cờ đỏ
  • [ ] Có cảnh báo vận hành khi tỉ lệ fail cao

Kết khóa

Bạn đã đi trọn vòng: từ khái niệm → dựng môi trường → thu thập → trích xuất có cấu trúc → tổng hợp/so sánh → báo cáo trích dẫn → chống hallucinate → vận hành tự động. Nguyên tắc xuyên suốt: không dữ kiện nào không có nguồn, không nguồn nào không kiểm chứng được. Đó là ranh giới giữa một CI agent đáng tin và một cỗ máy bịa đặt tự tin. Giờ hãy chọn 3 đối thủ thật của bạn và chạy vòng đầu tiên.

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi