# Quy trình chuyển đổi và khôi phục — mô hình cần điều chỉnh

Trường hợp Capordia là một nhóm xử lý các lô độc lập. Mục tiêu
là tiếp tục các công việc đã được xác định mà không làm mất đi sự chấp thuận của chúng. Có thể
tạm dừng có kế hoạch. Thời gian chấp nhận được, tiêu chí
chất lượng và trách nhiệm được quyết định trước khung thời gian di chuyển.

## 1. Chỉ định trách nhiệm

| Vai trò | Trách nhiệm | Bằng chứng cần lưu giữ |
|---|---|---|
| Người điều khiển chuyển đổi | Cho phép dừng, thay đổi thẩm quyền và tiếp tục | Quyết định và giờ UTC |
| Người phụ trách dữ liệu | Cố định đầu vào, kiểm tra bản sao và kiểm kê | Bản kê có phiên bản và dấu vân tay |
| Người phụ trách xử lý | Dừng bộ sản xuất, phân loại các lần thử | Sổ đăng ký lô và nhật ký quy trình |
| Người phụ trách tiếp nhận | So sánh đầu ra và tiêu chí đã thống nhất | Kết quả, từ chối và thỏa thuận tiếp nhận |

Một nhóm nhỏ có thể đảm nhiệm nhiều vai trò, nhưng người đưa ra
chấp thuận và người biết cách dừng thẩm quyền cũ phải
có thể nhận diện được. Mẫu CSV đi kèm không áp đặt bất kỳ tên người nào.

## 2. Thiết lập tham chiếu trước khi sao chép

Gán cho mỗi lô một mã định danh ổn định và một phiên bản đầu vào.
Ghi lại đường dẫn, dấu vân tay, quy trình xử lý chính xác và tiêu chí
chấp thuận. Phân biệt một lần thử đã khởi chạy với một kết quả được chấp thuận.
Lưu giữ các tham số và phụ thuộc cần thiết cho việc khôi phục, bao gồm
các trạng thái tính toán mà phần mềm của bạn yêu cầu. Một tên tệp `final`
không đủ để chứng minh sự chấp thuận.

Trong bài tập, tám lô đại diện cho 48 phiếu giả định. Việc chấp thuận
dựa trên một kết quả tất định ở dạng số nguyên; đây không phải là mô hình
checkpoint GPU. Tám đầu ra tham chiếu được tính trước khi ngắt.

## 3. Dừng việc tiếp nhận công việc mới

Đóng việc tiếp nhận các lô mới và ghi lại mã định danh cuối cùng được tiếp nhận.
Dừng worker hoặc chờ đến ranh giới khôi phục đã định. Xác nhận
rằng không có tiến trình nào của máy cũ còn có thể chấp nhận đầu ra.
Phân loại sổ đăng ký: hoàn thành, đang xử lý, cần khôi phục. Giữ lại dấu vết
của một lô mơ hồ thay vì tuyên bố nó hoàn thành theo phỏng đoán.

Trong bài tập, việc ngắt tại LOT-004 cho 3 / 1 / 4. Một lần chạy lại không
đối soát sẽ bị từ chối. Sổ đăng ký và các kết quả của nó luôn đi cùng nhau.

## 4. Sao chép, kiểm tra, thay đổi thẩm quyền

Máy đích phải có bộ dữ liệu đã cố định, trạng thái cần thiết và chương trình
tương thích. Kiểm tra dấu vân tay và kiểm kê từ máy đích.
Chặn việc khôi phục nếu thiếu một đầu vào, nếu bản kê đã thay đổi hoặc nếu một
kết quả không còn khớp với dấu vân tay và quy tắc chấp thuận của nó.

Trong bài tập này, `basculer` trước tiên đóng nguồn, sau đó sao chép các
tệp sau khi đóng các kết nối. Chương trình chỉ mở máy đích cho
sản xuất sau khi kiểm tra. Không bắt chước việc sao chép nóng một
cơ sở dữ liệu đang hoạt động ngoài quy trình này. Một thất bại để lại nguồn ở trạng thái dừng.

Trong một hệ thống thực tế, việc đóng một tệp cục bộ không ngăn một máy cũ
bị cô lập tiếp tục. Quyền công bố độc quyền phải được áp đặt bởi hệ thống
tiếp nhận kết quả, với việc từ chối các quyền cũ
và bằng chứng về sự từ chối đó. Chương trình hiện tại không cung cấp sự bảo vệ này.

## 5. Đối soát và tiếp nhận

Kiểm tra rằng tất cả các kết quả đã hoàn thành đều hiện diện và có thể chấp thuận.
Các lần thử đang xử lý mà không có chấp thuận được đưa trở lại trạng thái cần khôi phục sau khi
xác nhận đã dừng bộ sản xuất cũ của chúng. Thực hiện một lần khôi phục giới hạn
trước khi mở lại việc tiếp nhận. Đếm các lô dự kiến, các mã định danh
duy nhất được chấp thuận, các lỗi và các lần khôi phục. Ghi lại một chấp thuận
tách biệt với việc chỉ đơn thuần kết thúc quy trình.

Trong chương trình: `preparer-reprise` chuyển lô duy nhất đang xử lý thành lô
cần khôi phục. `executer` không tính lại ba lô đã hoàn thành. Kiểm tra
cuối cùng yêu cầu tám đầu ra được chấp thuận và giống với tham chiếu. LOT-004 có
hai lần thử, nhưng chỉ một đầu ra được chấp thuận.

## 6. Kích hoạt khôi phục dựa trên một tín hiệu có thể quan sát

| Tín hiệu | Quyết định đề xuất cho bài tập này |
|---|---|
| Dấu vết đầu vào khác | Chặn trước khi xử lý; khôi phục phiên bản đã cố định |
| Kết quả thiếu hoặc bị thay đổi | Chặn nhận; kiểm tra lô và trạng thái |
| Hai thẩm quyền khả dụng | Dừng việc tiếp nhận; thiết lập một thẩm quyền duy nhất |
| Chương trình không thể tiếp tục | Giữ đóng việc thu nhận và chuyển trạng thái gần nhất sang môi trường tương thích |
| Quá hạn cửa sổ | Áp dụng quyết định và giới hạn do nhóm đặt ra trước khi chuyển đổi |

Nếu đích đã chấp nhận kết quả mới, quay lại bản sao cũ
của nguồn sẽ làm mất các chấp nhận đó. Đóng băng đích, xuất trạng thái
gần nhất, kiểm tra và chuyển sang một vị trí trả về mới.
Đối chiếu kết quả trước khi khởi chạy lại. Khi có các tác động bên ngoài,
việc kiểm kê chúng là một phần của quá trình trả về; bài tập này không tạo ra tác động nào.

```text
python exercice.py basculer --source manuel/cible --destination manuel/retour --proprietaire atelier-retour
python exercice.py preparer-reprise --dossier manuel/retour
python exercice.py executer --dossier manuel/retour
python exercice.py comparer --reference manuel/reference --candidat manuel/retour
```

Sau thao tác này, `manuel/source` và `manuel/cible` đã đóng. Chỉ
`manuel/retour` có thể làm việc. Nếu bản sao thất bại hoặc nếu kiểm tra từ chối
một kết quả, hãy giữ lại bằng chứng và không mở khóa hai bên sản xuất.

## 7. Kết thúc di trú

Giữ lại bản kê, sổ đăng ký trước/sau, dấu vết, kết quả kiểm tra,
phiên bản chương trình, quyết định tiếp tục và quyết định trả về nếu có.
Chỉ xóa bản sao cũ sau thời gian lưu trữ do nhóm
lựa chọn. Bài tập không xóa thư mục nào; các tài nguyên của nó là
giả định và có thể được lưu trữ cùng báo cáo.
