Hướng dẫn vận hành và phục hồi — chuẩn bị T13
Ngày 26/09/2026 · DRAFT · Chỉ chuẩn bị một phần T13/T16 bằng tài liệu và mã ngoại tuyến hiện có.
Chưa triển khai môi trường, diễn tập phục hồi hoặc tổ chức hoạt động có người tham gia trong phạm vi tài liệu này.
1. Phạm vi và nguồn đối chiếu
Tài liệu mô tả bước cần thực hiện, không phải biên bản đã thực hiện.
Không dùng kết quả kiểm thử để phê duyệt y khoa, pháp lý hoặc mở dịch vụ.
| Hiện vật đã đọc | Điều xác định từ nội dung |
|---|---|
📄 Mã API |
Hợp đồng 0.1.0-offline; không nối mô hình, tri thức hoặc SQL |
📄 Giới hạn thân yêu cầu |
Đếm byte trước khi phân tích JSON; mặc định 16 KiB |
📄 Kiểm thử API |
Có ca kiểm hợp đồng, ngắt kết nối, biên byte và bộ chặn mạng |
| Đặc tả API | Giới hạn vận hành và kiểm bản kê tổng hợp riêng biệt |
📄 Giao diện, 📄 mẫu cố định |
Nút chỉ đổi trạng thái trong trình duyệt; không gọi API |
📄 SQL cũ, hướng dẫn IIS cũ |
Tài liệu thiết kế; không chứng minh đã cài đặt hoặc phục hồi |
| Hồ sơ dữ liệu | Dữ liệu thật, nhà cung cấp và nghiên cứu có người còn bị chặn |
Đọc mã kiểm thử không đồng nghĩa đã chạy kiểm thử. Phiên soạn tài liệu không chạy lệnh hoặc mở máy chủ.
2. Ranh giới môi trường
- Ưu tiên kiểm thử API trong tiến trình bằng TestClient, không mở cổng.
- Chỉ dùng dữ liệu tự tạo như
SYNTHETIC_ALPHA; không sao chép hồ sơ hoặc câu hỏi sức khỏe thật. - Không nhập khóa, chuỗi kết nối, danh tính hoặc dữ liệu người tham gia vào công cụ kiểm thử.
- Nếu được giao kiểm tra HTTP thủ công, chỉ mở Uvicorn trên
127.0.0.1, tức địa chỉ của chính máy. - Theo README backend: dùng
backend.app.main:app, cổng 8000 và--no-access-logtừ thư mục gốc. - Không dùng
--reload, địa chỉ0.0.0.0, IIS, chuyển tiếp cổng hoặc công bố Internet cho bước này. - Giao diện dùng máy phục vụ riêng trên loopback; không cần backend hoạt động.
- Cài gói có thể cần mạng; việc này không thuộc kiểm thử ngoại tuyến và phải được tách riêng.
Mã API không đọc biến môi trường để mở dịch vụ. Đặt cờ môi trường không tạo phê duyệt hoặc chức năng thật.
Bộ chặn mạng của kiểm thử không phải môi trường cách ly hoàn chỉnh.
Giới hạn loopback không thay thế kiểm soát quyền trên máy và cấu hình trình duyệt.
3. Trình tự kiểm chứng ngoại tuyến cần thực hiện
3.1. Trước khi chạy
- Ghi phiên bản hoặc mã băm tệp đang kiểm; không suy phiên bản từ ngày trong chú thích SQL.
- Xác nhận thư mục gốc và môi trường Python được chọn theo hướng dẫn môi trường.
- Xác nhận thư viện đã có; không tự cài SDK mô hình hoặc trình điều khiển SQL.
- Chọn tác vụ
CXK: integration Python offlinenếu có trong workspace, hoặc theo README backend. - Tác vụ tích hợp kiểm cả
testing/scriptsvàbackend/tests; lỗi ngoài API phải được ghi riêng. - Không chạy từ
frontend/rồi giả định đường dẫn Python tương đối vẫn đúng.
3.2. Đối chiếu kết quả mong đợi
| Ca kiểm | Mong đợi từ mã hiện tại | Ý nghĩa giới hạn |
|---|---|---|
GET /api/health |
200; status=ok, contract_version=0.1.0-offline |
Chỉ tiến trình phản hồi; không kiểm SQL hoặc tri thức |
GET /api/readiness |
503; OFFLINE_NOT_READY; ba phê duyệt đều unknown |
Phục vụ vẫn đóng |
POST /api/chat với {"text":"SYNTHETIC_ALPHA"} |
503; OFFLINE_SERVICE_UNAVAILABLE |
Từ chối cố định; không tư vấn |
POST /api/chat với {} |
422; INVALID_REQUEST; lỗi trường text |
Không phản chiếu dữ liệu đầu vào |
| Thân yêu cầu 16.383 hoặc 16.384 byte, JSON hợp lệ có khoảng trắng đệm | 503 | Đúng giới hạn vẫn được phân tích |
| Thân yêu cầu 16.385 byte | 413; REQUEST_BODY_TOO_LARGE |
Chặn trước phân tích JSON |
| Ngắt kết nối trước khi nhận đủ thân | Không chuyển vào ứng dụng hoặc tạo phản hồi | Kiểm trực tiếp lớp xử lý, không suy từ trình duyệt |
/docs, /redoc, /openapi.json |
404 | Không mở tài liệu API công khai |
Giới hạn 16 KiB bằng 16.384 byte áp dụng cho /api/chat và /api/chat/ trong lớp xử lý.
Không suy rằng hai đường dẫn có cùng hành vi định tuyến sau lớp này.
Lớp xử lý đếm byte thực, không tin Content-Length; tính cả khoảng trắng và trường dư.
Giới hạn chuỗi text là 1–2.000 ký tự Python, khác giới hạn toàn thân HTTP.
Các ca chia đoạn và khai báo độ dài sai đã có trong tệp kiểm thử; ưu tiên chạy chúng thay vì tự phát sinh lưu lượng.
Chưa giới hạn đầy đủ header, thời gian nhận, đoạn rỗng hoặc kết nối đồng thời.
Chưa có xác thực, giới hạn tần suất hoặc bảo vệ đầy đủ trước từ chối dịch vụ.
Không dùng phép thử tải, dữ liệu thật hoặc mạng công cộng để kiểm các điểm này.
3.3. Ghi bằng chứng
Ghi riêng: chưa chạy, đã chạy đạt, đã chạy lỗi, hoặc bị chặn. Không điền kết quả dự kiến thành kết quả thực.
| Trường bằng chứng | Nội dung cần ghi sau khi thực hiện |
|---|---|
| Thời điểm | Ngày giờ và múi giờ |
| Phạm vi | Phiên bản/mã băm, tệp kiểm thử, môi trường và thư mục chạy |
| Cách thực hiện | Tác vụ hoặc thao tác thực tế; chỉ dữ liệu tổng hợp |
| Kết quả | Mã thoát, số ca thực tế, mã HTTP nếu có; khác biệt so với mong đợi |
| Tệp bằng chứng | Liên kết tương đối tới kết quả đã loại dữ liệu nhạy cảm |
| Trách nhiệm | Người thực hiện, người xem xét và trạng thái xác nhận thực tế |
| Quyết định | Tiếp tục kiểm ngoại tuyến hoặc giữ dừng; không tự mở dịch vụ |
Không đính kèm toàn bộ biến môi trường, nội dung yêu cầu thật hoặc nhật ký truy cập chưa kiểm.
4. Sự cố: giữ nguyên, dừng, đặt lại
Áp dụng khi có kết nối ngoài dự kiến, dữ liệu thật, lỗi khác hợp đồng hoặc nhầm bản mô phỏng thành tư vấn.
- Dừng thao tác và không nhập lại dữ liệu để tái hiện lỗi.
- Giữ nguyên phiên bản mã, cấu hình và mốc thời gian; tạm dừng thay đổi liên quan.
- Ghi mã lỗi và hành vi tối thiểu. Không sao chép dữ liệu nhạy cảm vào ảnh chụp hoặc kho mã.
- Nếu đã tự mở máy phục vụ, dùng Ctrl+C tại đúng terminal sở hữu tiến trình đó.
- Không dừng hàng loạt Python, Node hoặc dịch vụ dùng chung. Không xóa SQL, log hoặc tệp để che sự cố.
- Kiểm tra địa chỉ loopback không còn phục vụ sau khi dừng; ghi kết quả quan sát thực.
- Chuyển thông tin tối thiểu cho vai trò phù hợp bên dưới. Chưa xác định đầu mối thì giữ dừng.
| Vai trò cần xác nhận | Phạm vi đề xuất | Hiện trạng liên hệ |
|---|---|---|
| Phụ trách kỹ thuật | Xác định phiên bản, tiến trình, lỗi và phương án trở lại bản trước | Chưa xác nhận người nhận hoặc kênh trực |
| GVHD | Xem xét giới hạn nghiên cứu và việc tiếp tục hoạt động | Kênh, lịch và việc nhận xử lý còn chờ |
| CVYK | Xem xét nội dung y khoa nếu phát sinh; không dùng demo để xử lý tình huống thật | Chưa có cam kết phản hồi sự cố |
| Phụ trách dữ liệu/pháp lý | Kiểm phạm vi lộ dữ liệu, lưu bằng chứng và nghĩa vụ liên quan | Chưa xác nhận đầu mối hoặc thẩm quyền |
Không cam kết trực liên tục hoặc thời gian phản hồi. Bảng vai trò không phải phân công đã được chấp nhận.
Đặt lại giao diện: nút đặt lại xóa mẫu đang chọn, giữ mức chữ; tải lại trang trả cả hai về ban đầu.
Đặt lại API: không có phiên hội thoại hoặc SQL do mã hiện tại quản lý; không có thao tác xóa dữ liệu API.
Sau khi hiểu lỗi, chỉ khởi động lại bản mã được kiểm trong môi trường ngoại tuyến như mục 2.
Chạy lại các ca liên quan trước khi tiếp tục; khởi động lại không chứng minh nguyên nhân đã được xử lý.
Tải lại trang không xóa bộ nhớ đệm trình duyệt hoặc log bên ngoài ứng dụng.
5. Rủi ro SQL/IIS hiện có — không chạy nguyên mẫu
| Hiện vật và rủi ro quan sát | Điều phải xử lý trước diễn tập |
|---|---|
SQL: CREATE DATABASE, USE và GO đầu tệp đều đang là chú thích |
Chọn rõ cơ sở dữ liệu thử riêng; tránh tạo bảng trong cơ sở dữ liệu đang được chọn nhầm |
SQL: hai CREATE VIEW đứng sau các câu lệnh khác, không có ranh giới lô phù hợp |
Mỗi CREATE VIEW cần bắt đầu lô lệnh riêng; kiểm công cụ thực thi hỗ trợ tách lô |
SQL: GO là dấu tách của công cụ, không phải câu lệnh SQL gửi qua trình điều khiển |
Không gửi nguyên tệp có GO như một câu truy vấn qua ODBC |
SQL: CREATE TABLE, CREATE INDEX, CREATE VIEW không kiểm đối tượng đã tồn tại |
Chạy lại có thể lỗi; không có cơ chế bảo đảm chạy lặp an toàn hoặc hoàn tác toàn tệp |
| SQL: không có quy trình sao lưu/phục hồi hoặc giao dịch bao toàn bộ | Dòng PRINT thành công không thay kiểm đủ đối tượng và tính toàn vẹn |
SQL: AuditLog có user_query, ai_response, session_id |
Có khả năng chứa dữ liệu nhạy cảm nếu nối sau này; API hiện tại không ghi bảng này |
SQL: ip_address NVARCHAR(1) và chú thích không lưu IP |
Không chứng minh IIS, proxy hoặc bản sao lưu đã loại dữ liệu nhận diện |
SQL: view cho cả APPROVED và PUBLISHED |
Nhãn SQL không chứng minh quyền nguồn hoặc phê duyệt gắn phiên bản |
IIS: đường dẫn Python tuyệt đối, app.main:app, PYTHONPATH=. |
Phụ thuộc nơi đặt tệp và thư mục làm việc; khác cách nạp backend từ gốc hiện tại |
IIS: stdoutLogEnabled=true, đường dẫn logs tương đối |
Cần xác định nơi ghi, quyền, dữ liệu, thời hạn lưu và kiểm toàn chuỗi |
IIS: ApplicationPoolIdentity cùng kết nối SQL tin cậy |
Chưa chứng minh danh tính thực, quyền SQL hoặc quyền đọc/ghi tệp; không cấp quản trị rộng để sửa lỗi |
IIS: cổng động %HTTP_PLATFORM_PORT% nhưng hướng dẫn chặn cố định 8000 |
Không coi quy tắc cổng 8000 là kiểm chứng cho mọi cổng động |
| IIS: rewrite, chứng chỉ, binding và cổng 80/443 | Chưa kiểm mô-đun, HTTPS hoặc quyền thay cấu hình; không áp dụng trong kiểm ngoại tuyến |
IIS: sơ đồ nối mô hình/SQL và health mẫu có db_connected |
Không phản ánh hợp đồng API hiện tại; không dùng làm tiêu chí đã triển khai |
Mã SQL không khai báo đường dẫn sao lưu, tệp dữ liệu hoặc tệp nhật ký phục hồi.
Không tự điền đường dẫn từ máy người viết vào máy chủ tương lai.
Quyền tạo cơ sở dữ liệu, tạo đối tượng, sao lưu và phục hồi phải được xét riêng theo vai trò.
Tài khoản ứng dụng không mặc nhiên cần các quyền quản trị đó.
6. Quy trình sao lưu/phục hồi tương lai — còn cổng kiểm soát
Chỉ lập và duyệt quy trình chi tiết sau khi chốt môi trường, trách nhiệm, dữ liệu và quyền truy cập.
Không có lệnh sao lưu, phục hồi ghi đè hoặc thay firewall trong tài liệu này.
- Cho phép diễn tập: chốt người có thẩm quyền, môi trường thử cách ly và dữ liệu tổng hợp; ghi quyết định cho phép.
- Kiểm kê: ghi phiên bản SQL/IIS/Python, cấu hình ứng dụng và danh tính dịch vụ; không xuất bí mật vào báo cáo.
- Chuẩn bị SQL: sửa cách chia lô trong thay đổi riêng; kiểm trên cơ sở dữ liệu thử mới, không chạy lại mù quáng.
- Chọn nơi lưu: xác minh dung lượng, quyền tài khoản dịch vụ, mã hóa và thời hạn giữ bản sao; tránh đường dẫn suy đoán.
- Sao lưu có kiểm soát: lập bản kê SQL, mã và cấu hình IIS theo cùng mốc; bảo vệ riêng chứng chỉ và bí mật nếu cần.
- Kiểm bản sao: ghi kết quả kiểm tệp và khả năng đọc bản sao; bước này chưa chứng minh phục hồi thành công.
- Phục hồi riêng: dùng tên cơ sở dữ liệu và đích tệp thử mới; đối chiếu tên tệp logic và nơi đặt dữ liệu/nhật ký.
- Kiểm sau phục hồi: kiểm tính toàn vẹn, bảng/view/index, khóa ngoại, dữ liệu tổng hợp và quyền tối thiểu.
- Kiểm IIS riêng: đối chiếu đường dẫn tiến trình, mô-đun, binding, quyền log và chứng chỉ; không mở cổng công cộng.
- Kiểm ứng dụng: xác nhận đúng hợp đồng ở mục 3; API hiện tại vẫn không kiểm SQL và luôn chưa sẵn sàng.
- Xem xét: lưu kết quả thực, lỗi, thời gian đo và người kiểm; chỉ người có thẩm quyền quyết định bước tiếp.
Nếu có lỗi, giữ dừng và giữ bản trước cùng bằng chứng. Không phục hồi ghi đè môi trường gốc để thử lại.
Phương án trở lại bản trước phải chỉ rõ phiên bản, cấu hình, đích riêng và kiểm tương thích dữ liệu.
Không coi việc chép lại mã là đã hoàn tác thay đổi cơ sở dữ liệu.
Biên bản tương lai cần mã bản sao, mã băm, thời điểm, nguồn/đích, quyền, kết quả kiểm và quyết định trở lại bản trước.
Đường dẫn hạ tầng nhạy cảm chỉ ghi trong hồ sơ hạn chế; tài liệu chung dẫn mã bằng chứng tương ứng.
Chưa đặt RPO (mức mất dữ liệu chấp nhận), RTO (thời gian phục hồi mục tiêu) hoặc SLA (cam kết mức dịch vụ).
Chưa có phép đo phục hồi, người vận hành nhận việc hoặc bảo đảm dịch vụ. T13/T16 vẫn chỉ chuẩn bị một phần.