logiSA 2.0 / DOCS

Runtime baseline · 30 SEP 2026

Cont/Seal · luồng đang chạy

Luồng production từ callback Zalo tới Master, OPS và nhóm kết quả.

Hiện trạng, không phải kiến trúc đích. Master đã tham gia định tuyến ảnh; handler là Java, không phải một lần gọi AI. Cont/Seal vẫn là vertical slice chuyên biệt, chưa có generic executor chạy mọi workflow graph.

Phiên nhận dữ liệu độc lập

Callback đầu mở một phiên theo tenant + account session + channel + thread type + thread/group + sender. Callback cùng khóa nối text/ảnh/source messages và reset quiet timer riêng (mặc định 60 giây, hard cap 300 giây). Tài xế khác trong cùng nhóm hoặc cùng tài xế ở nhóm khác mở phiên riêng. Không giữ transaction DB trong thời gian đợi; phiên khác vẫn nhận và chốt dữ liệu trong khi AI đang xử lý.

Provider submission ID dùng để tách album khi có. Nếu không có, timer là fallback, không bảo đảm tách hai album gửi gần nhau từ cùng tài xế/nhóm. Phiên chưa chốt còn trong RAM: shutdown chủ động flush; crash đột ngột có thể mất phần chưa chốt.

Luồng hiện tại

Zalo callback: text / ảnh / video
  → phiên gom riêng cho sender + nhóm (không gọi AI)
  → chốt một event chứa đầy đủ text, media và source messages
  → commit Gateway durable inbox
  → Core kiểm tra scope, dedupe
      ├─ Có ảnh Zalo → TX: inbound event + core_master_jobs → COMMIT → ACK
      │   → worker Master claim job (lease, retry, concurrency có giới hạn)
      │   → scoped workflow catalog + toàn bộ ảnh → typed per-image evidence
      │   → handler Java kiểm tra policy, chọn tối đa 6 ảnh cho OPS
      │       ├─ IGNORE → lưu reason/evidence, không tạo OPS và không gửi
      │       └─ ASSIGN → pin workflow/skill/policy/model/destination + tạo OPS job
      │           → OPS đọc độc lập ảnh được chọn, không lấy mã Master làm đáp án
      │           → validate / consensus / targeted reread / review
      │           → TX: result + report outbox
      │           → gửi qua Gateway → lưu receipt
      ├─ Không có ảnh, có text hữu ích → TX: event + text job → ACK
      │   → text worker → policy/handover → assistant/tools được phép → reply
      └─ Media không hỗ trợ / event rỗng → lưu event, không tự chạy Vision

ACCEPTED chỉ xác nhận event và job đã commit, không khẳng định Master đã có decision hay đã gửi kết quả. Core không poll Zalo: Gateway nhận listener callback; các worker chỉ poll hàng đợi PostgreSQL. Gateway replay giữ thứ tự trong cùng sender/thread; các scope khác không dùng chung hàng đợi theo toàn bộ tài khoản.

Master, handler và OPS làm gì?

Thành phầnTrách nhiệm thực tế
MasterMột lần định tuyến AI sau khi event bền vững: xem album, chọn workflow đang bật trong scope và mô tả evidence từng ảnh. Không thực hiện gửi tin hay coi mã sơ khai là đã xác minh.
Handler JavaKhông gọi AI. Áp dụng policy DB và typed evidence để lọc nhiễu, chọn tối đa 6 ảnh đầu vào OPS; không cắt mất ảnh trong event gốc. Java owns schema validation, admission và side effects.
OPSĐọc kỹ ảnh đã chọn theo skill được pin; xác minh mã Cont/Seal, load state và provenance, cùng các lượt đọc độc lập/targeted khi pipeline yêu cầu. Vì vậy tổng số model calls không cố định là ba.
Workflow/task runtimeWorkflow/task và outbox của Cont/Seal có thật, nhưng executor vẫn chuyên biệt. Canvas/config không đồng nghĩa mọi node graph đều đã có live executor; text assistant chạy processor riêng. Process/Workflow một Role là hướng mở rộng, không được suy diễn là mọi nghiệp vụ đã triển khai.

Hai nhánh kết quả và ảnh tem

History, retry và chống trùng

Inbound history lưu event kể cả khi chưa có decision, thể hiện Master PENDING/PROCESSING/RETRY/DONE/FAILED, số lượt và lỗi cùng trạng thái OPS/task nếu đã tạo. Intake commit DB thất bại không trả ACCEPTED. Master/network/schema failure retry có backoff, mặc định tối đa 4 lượt; lease hết hạn được reclaim và claim token cũ không được hoàn tất claim mới. Một event replay không nhân đôi job/task; quyết định đã commit được dùng lại. Model failure không bị giả lập thành IGNORE.

Report dùng destination đã pin và command idempotency. Hold tại một outbox cụ thể không ảnh hưởng báo cáo live; UNKNOWN cần đối soát, không tự gửi lại mù quáng. Lookup Sheet không phải điều kiện của lượt replay Cont/Seal hiện tại.

Acceptance đã kiểm tra trên production

Replay bộ Phúc: 15 callbacks → 1 event chứa 13 ảnh + 1 video + tin tài xế; Master → OPS trả VERIFIED, Cont OTPU6921220, Seal WHA4492111; report 7 ảnh gồm đủ 4 ảnh tem. ACK event đầu 209 ms; event ở nhóm khác được lưu/ACK 104 ms khi Master đầu đang chạy. Duplicate trả 200, một Master job, một lượt xử lý; report test giữ WAITING_DESTINATION, attempts 0, không tạo outbound command.

Thiết kế mở rộng: Intake & Process Routing · Role & Skill · Process / Workflow Runtime.

logiSA 2.0 · Production runtime baseline · 30 SEP 2026