Nhiệm vụ: Đồng bộ hóa các giao diện yêu cầu

Đồng bộ hóa các giao diện yêu cầu

03.09.2026Kilfor.ru

Hiện tại, yêu cầu khách truy cập và yêu cầu mang đồ vào/ra là các thực thể riêng biệt (do các yêu cầu nghiệp vụ riêng từ phía khách hàng cũng như các quyền được phép/không được phép khác nhau). Về mặt lịch sử, các trang và biểu mẫu khác nhau đã được sử dụng để làm việc với các loại yêu cầu này. Tất nhiên chúng ta sẽ không thay đổi logic nghiệp vụ và kiến trúc, nhưng các giao diện thì có thể và cần phải được đồng bộ hóa. Chúng ta sẽ làm biểu mẫu tạo mang tính phổ quát, chỉ cần thêm công tắc Loại vật chất hoặc Chỉ dành cho khách (chỉ để kiểm tra chính xác tính đầy đủ của biểu mẫu, tránh trường hợp người dùng tạo yêu cầu chỉ dành cho khách mà quên chỉ định những gì họ muốn mang vào hoặc mang ra, trong khi biểu mẫu không cảnh báo). Và đối với phần hiển thị, chúng ta có thể sử dụng một giao diện duy nhất bằng cách sử dụng các đối tượng union trong GraphQL.

Ворклоги

Thống nhất các yêu cầu cấp thẻ ra vào trong GraphQL và giao diện cá nhân mới

Về mặt lịch sử, hệ thống Kilfor có ba loại yêu cầu cấp thẻ ra vào khác nhau:

  • yêu cầu cho khách thăm;
  • yêu cầu mang tài sản vào/ra;
  • yêu cầu xe ô tô ra vào.

Các loại này sử dụng các tập hợp bảng cơ sở dữ liệu khác nhau, và trong một số kịch bản, tập hợp các trường cũng khác nhau. Tôi cố tình không thay đổi cấu trúc cơ sở dữ liệu và logic nghiệp vụ hiện có để tránh ảnh hưởng đến phần backend cũ đang chạy ổn định.

Việc thống nhất được thực hiện ở tầng GraphQL API và frontend. Kiểu union (union type) và các resolver thống nhất đã được thêm vào GraphQL, cho phép truy xuất các loại thẻ ra vào khác nhau thông qua một giao diện chung. Kết quả là các yêu cầu từ các nguồn khác nhau giờ đây được đọc và hiển thị dưới dạng một danh sách duy nhất bất kể chúng được lưu trữ vật lý trong bảng nào.

Trên frontend, một biểu mẫu tạo yêu cầu thống nhất với công tắc chuyển đổi loại thẻ ra vào đã được triển khai. Người dùng làm việc với một giao diện duy nhất, trong khi tập hợp các trường và logic của biểu mẫu cần thiết sẽ thích ứng với kịch bản được chọn: khách thăm, mang tài sản vào/ra, hoặc xe ô tô.

Điều này đã loại bỏ sự phân mảnh lịch sử của giao diện thành nhiều trang và biểu mẫu riêng biệt, đồng thời vẫn giữ nguyên cấu trúc dữ liệu và quyền truy cập hiện có. Kết quả là một trải nghiệm người dùng (UX) đồng nhất cho các yêu cầu cấp thẻ ra vào mà không cần di chuyển dữ liệu rủi ro hay viết lại phần backend MODX.