Luồng & quy trình

Fixture đi qua những bước nào trước khi thành memo

Hai luồng: luồng xử lý biến fixture thành kết quả, và luồng xuất file bảo đảm memo không ghi đè gì. Mỗi chỗ dừng đều trả về đúng một mã lỗi.

Luồng 1

Từ fixture tới kết quả

Đọc, kiểm, tính, rồi viết memo

  1. 1

    Đọc file

    JSON UTF-8 trên ổ cục bộ, có giới hạn kích thước và độ sâu.

    INPUT_ERROR · đọc hỏng

  2. 2

    Kiểm schema

    Đủ mọi key, số tiền dạng chuỗi thập phân, ngày hợp lệ, ID không trùng.

    VALIDATION_ERROR · sai nội dung

  3. 3

    Tính chênh lệch

    Thực tế trừ ngân sách, chỉ khi khớp kỳ, tiền tệ, đơn vị.

  4. 4

    Kiểm điều khoản

    Vị trí, phiên bản, thẩm quyền, thời hạn hiệu lực so với ngày của fixture.

  5. 5

    Viết memo

    Kết quả kèm lý do, fixture gốc giữ nguyên trong khối mã.

    needs_review · luôn gắn

Luồng 2

Xuất memo mà không ghi đè

Memo chỉ xuất hiện khi đã ghi trọn vẹn

  1. 1

    Kiểm đường dẫn

    Chỉ ổ cục bộ; chặn đường mạng, symlink, ...

    Dừng · đường lạ

  2. 2

    Kiểm đích

    Thư mục cha phải có, file đích phải chưa có.

    OUTPUT_ERROR · đã có file

  3. 3

    Ghi file tạm

    Ghi đủ nội dung vào file tạm cùng thư mục.

  4. 4

    Công bố

    Tạo memo từ file tạm theo kiểu độc quyền, không thay file nào.

  5. 5

    Dọn file tạm

    Xoá file tạm, thoát với mã 0.

    OUTPUT_PUBLISHED_CLEANUP_ERROR · memo đủ, tạm còn

Nhãn xanh: điều kiện công cụ luôn giữ cho kết quả.

Nhãn đỏ: chỗ dừng, kèm mã lỗi bạn sẽ thấy.

Dừng ở bất kỳ bước nào trước bước 4 thì không có memo nào được tạo.

Một kết quả đi tới tay người xem thế nào

Mỗi mục trong memo dừng ở một trong các trạng thái dưới; không mục nào được duyệt tự động.

  1. 01

    unknown

    Thiếu số, lệch kỳ hay tiền tệ, thiếu metadata, chưa hiệu lực hoặc đã hết hạn.

  2. 02

    available

    Chênh lệch tính được khi hai số đủ và khớp nhau.

  3. 03

    eligible_for_review

    Điều khoản khai báo đủ thông tin để người xem; chưa phải xác thực.

  4. 04

    needs_review

    Trạng thái chung của mọi memo, bất kể từng mục ra sao.

  5. 05

    Người xem quyết

    Bạn đọc memo, đối chiếu nguồn thật và tự đưa ra kết luận.

Thử luồng này trên máy bạn

Chạy fixture mẫu rồi đổi một trường để thấy trạng thái unknown.