---
url: https://docs.nemo12.com/workflows/evidence-model-update.md
description: >-
  WF-04: vòng lõi mọi evidence cập nhật Learner Model rồi tính lại readiness và
  recommendation, chạy bất đồng bộ qua sự kiện.
---

# WF-04 — Evidence → Model Update

Vòng lõi: mọi evidence (assessment, bài tập, mentor/parent observation, self-report) → cập nhật Learner Model → recompute readiness/recommendation. Chạy **async** để không giữ HTTP request (SDD-002 §14, REQ-NFR-01).

```mermaid
flowchart LR
  E[EvidenceRecorded] --> V[Validate + persist evidence<br/>idempotency_key]
  V --> U[Update affected skill state<br/>updateMastery]
  U --> P[Propagate prerequisite impact<br/>depth-1]
  P --> C[Recompute confidence + trajectory]
  C --> DET{Thay đổi quan trọng?}
  DET -- có --> R[Regenerate recommendations]
  DET -- không --> X[Kết thúc]
  R --> CTX[Update Context Model]
  CTX --> N[Notify relevant systems]
```

## Cloudflare mapping

* **Queue** `nemo12-events`: fan-out các bước độc lập (analytics, notification).
* **Workflow**: orchestration nhiều bước cần retry/pause khi khối lượng lớn (nhiều môn, propagation sâu).
* **Incremental** (REQ-INT-10): chỉ recompute node bị ảnh hưởng + dependent + aggregate liên quan, không rebuild toàn model.

## Reliability (REQ-NFR-01/04)

Consumer idempotent (2 lần cùng event → không nhân đôi evidence); retry + backoff; quá ngưỡng → DLQ `nemo12-events-dlq`. Model không mất khi bước sau lỗi.

## Trạng thái hiện tại

Baseline: cập nhật đồng bộ ngay trong `POST /diagnostic/submit` (đủ cho quy mô hiện tại) + phát `EvidenceRecorded`/`AssessmentCompleted` vào Queue. Consumer nâng cấp dần theo doc này.

## Trace

REQ-INT-01→persist · REQ-INT-10→incremental · REQ-INT-13→async · REQ-NFR-01/04→isolation/retry.
