...
3. Conversation (Mô tả chi tiết)
3.1 UIUX Màn hình
3.1.1 Màn hình Quản lý yêu cầu làm rõ & Bộ lọc


3.1.2 Màn hình quản lý lịch sử tổng hợp làm rõ


Được phân quyền Thêm Được phân quyền xem
3.1.3 Màn hình Yêu cầu làm rõ


Được phân quyền Thêm Được phân quyền Xem
3.2 Luồng:
3.3 API Spec: <gắn link tài liệu mô tả API vào đây>
| Panel |
|---|
|
Method | GET | URL | <DOMAIN>/application/tenderPackage/clarificationRequest |
|---|
Description | API danh sách quản lý yêu cầu làm rõ |
|---|
Note | Đã có api cũ nhưng hiện tại api cũ đang là lấy tất cả chứ không chia theo từng gói thầu và phải lược bỏ một số param không dùng đến. → Tạo api mới |
|---|
STT | Field | Source Data Type / Length | Description | Sample Values |
|---|
| authorization | String | Token | Bearer eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3NjYzMDk1MTgsInVzZXIiOiJ7XCJpZFwiOjIwMjAsXCJ1c2VybmFtZVwiOlwiMDM3NDc4ODQwNVwiLFwibmFtZVwiOlwiQ2h1IFRo4buLIExpw6 puXCIsXCJyb2xlc1wiOltdLFwibWFwQmVhdXR5U2Fsb25cIjp7XCJicG0ucmVib3JuLnZuXCI6Nn0sXCJlbXBsb3llZUlkXCI6NTMxLFwiYnJhbmNoSWRcIjoyM30ifQ.UGz8TQudVxEd7rp_rsLXePraHELTRWHyc7iXNvVnn14 |
2. ParamSTT | Field | Required | Data Type / Length | Description | Note |
|---|
| 1 | name |
| String | Tên nhà thầu |
| | 2 | tenderPackageId | true | Integer | Id gói thầu |
| | 3 | status |
| Integer | Trạng thái |
| | 4 | startDate |
| String | Thời gian nhận từ ngày |
| | 5 | endDate |
| String | Thời gian nhận đến ngày |
| | 6 | limit |
| Integer | Số bản ghi |
| | 7 | page |
| Integer | Trang |
|
3. Response / Incoming Data Specification| STT | Field | Data Type / Length | Description | Note | Sample Values |
|---|
| code | Integer | Code |
|
|
| message | String | Message |
|
|
| loadMoreAble | Boolean |
|
|
|
| preLoadAble | Boolean |
|
|
|
| result | Object | Kết quả |
|
|
| result.total | Long | Tổng số bản ghi |
|
|
| result.page | Integer | Số trang hiện tại |
|
|
| result.items | List | Danh sách kết quả |
|
|
| result.items[?].id | Integer | Id |
|
|
| result.items[?].bidderId | Integer | Id nhà thầu |
|
|
| result.items[?].bidderName | String | Tên nhà thầu |
|
|
| result.items[?].contactId | Integer | Id người liên hệ |
|
|
| result.items[?].contactName | String | Tên người liên hệ |
|
|
| result.items[?].contactEmail | String | Email người liên hệ |
|
|
| result.items[?].round | Integer | Số lần làm rõ |
|
|
| result.items[?].createdTime | Timestamp | Thời gian nhận |
|
|
Method | POST | URL | <DOMAIN>/application/generalClarification/update |
|---|
Description | API gửi tổng hợp làm rõ HSMT |
|---|
Note | Đã có |
|---|
STT | Field | Source Data Type / Length | Description | Sample Values |
|---|
| authorization | String | Token | Bearer eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3NjYzMDk1MTgsInVzZXIiOiJ7XCJpZFwiOjIwMjAsXCJ1c2VybmFtZVwiOlwiMDM3NDc4ODQwNVwiLFwibmFtZVwiOlwiQ2h1IFRo4buLIExpw6 puXCIsXCJyb2xlc1wiOltdLFwibWFwQmVhdXR5U2Fsb25cIjp7XCJicG0ucmVib3JuLnZuXCI6Nn0sXCJlbXBsb3llZUlkXCI6NTMxLFwiYnJhbmNoSWRcIjoyM30ifQ.UGz8TQudVxEd7rp_rsLXePraHELTRWHyc7iXNvVnn14 |
2. BodySTT | Field | Required | Data Type / Length | Description | Note |
|---|
| 1 | id | true | Integer | id tổng hợp làm rõ HSMT, mặc định thêm mới = 0 |
| | 2 | content |
| String | Nội dung |
| | 3 | packageId | true | Integer | Id gói thầu |
| | 4 | attachments |
| String | Danh sách file |
|
3. Response / Incoming Data Specification| STT | Field | Data Type / Length | Description | Note | Sample Values |
|---|
| code | Integer | Code |
|
|
| message | String | Message |
|
|
| result | Object | Kết quả |
|
|
| result.id | Integer | id tổng hợp làm rõ HSMT |
|
|
| result.packageId | Integer | Id gói thầu |
|
|
| result.content | String | Nội dung |
|
|
| result.attachments | String | Danh sách file |
|
|
| result.employeeId | Integer | Người tạo |
|
|
| result.createdTime | Timestamp | Thời gian tạo |
|
|
Method | GET | URL | <DOMAIN>/application/generalClarification/list |
|---|
Description | API Lịch sử gửi tổng hợp làm rõ HSMT |
|---|
Note | Đã có |
|---|
STT | Field | Source Data Type / Length | Description | Sample Values |
|---|
| authorization | String | Token | Bearer eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3NjYzMDk1MTgsInVzZXIiOiJ7XCJpZFwiOjIwMjAsXCJ1c2VybmFtZVwiOlwiMDM3NDc4ODQwNVwiLFwibmFtZVwiOlwiQ2h1IFRo4buLIExpw6 puXCIsXCJyb2xlc1wiOltdLFwibWFwQmVhdXR5U2Fsb25cIjp7XCJicG0ucmVib3JuLnZuXCI6Nn0sXCJlbXBsb3llZUlkXCI6NTMxLFwiYnJhbmNoSWRcIjoyM30ifQ.UGz8TQudVxEd7rp_rsLXePraHELTRWHyc7iXNvVnn14 |
2. PARAMSTT | Field | Required | Data Type / Length | Description | Note |
|---|
| 1 | packageId | true | Integer | Id gói thầu |
|
3. Response / Incoming Data Specification| STT | Field | Data Type / Length | Description | Note | Sample Values |
|---|
| code | Integer | Code |
|
|
| message | String | Message |
|
|
| result | Object | Kết quả |
|
|
| result[?].id | Integer | id tổng hợp làm rõ HSMT |
|
|
| result[?].packageId | Integer | Id gói thầu |
|
|
| result[?].content | String | Nội dung |
|
|
| result[?].attachments | String | Danh sách file |
|
|
| result[?].employeeId | Integer | Người tạo |
|
|
| result[?].createdTime | Timestamp | Thời gian tạo |
|
|
Method | GET | URL | <DOMAIN>/application/clarificationDetail/list |
|---|
Description | API danh sách chi tiết yêu cầu làm rõ |
|---|
Note | Đã có |
|---|
STT | Field | Source Data Type / Length | Description | Sample Values |
|---|
| authorization | String | Token | Bearer eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3NjYzMDk1MTgsInVzZXIiOiJ7XCJpZFwiOjIwMjAsXCJ1c2VybmFtZVwiOlwiMDM3NDc4ODQwNVwiLFwibmFtZVwiOlwiQ2h1IFRo4buLIExpw6 puXCIsXCJyb2xlc1wiOltdLFwibWFwQmVhdXR5U2Fsb25cIjp7XCJicG0ucmVib3JuLnZuXCI6Nn0sXCJlbXBsb3llZUlkXCI6NTMxLFwiYnJhbmNoSWRcIjoyM30ifQ.UGz8TQudVxEd7rp_rsLXePraHELTRWHyc7iXNvVnn14 |
2. PARAMSTT | Field | Required | Data Type / Length | Description | Note |
|---|
| 1 | clarificationId | true | Integer | Id gói thầu |
|
| round | true | Integer | Số vòng |
|
3. Response / Incoming Data Specification| STT | Field | Data Type / Length | Description | Note | Sample Values |
|---|
| code | Integer | Code |
|
|
| message | String | Message |
|
|
| result | Object | Kết quả |
|
|
| result[?].id | Integer | id tổng hợp làm rõ HSMT |
|
|
| result[?].attachments | String | Danh sách file |
|
|
| result[?].content | String | Nội dung |
|
|
| result[?].assignTime | Timestamp |
|
|
|
| result[?].processTime | Timestamp |
|
|
|
| result[?].status | Integer | Trạng thái |
|
|
| result[?].employeeId | Integer |
|
|
|
| result[?].employeeName | String |
|
|
|
| result[?].documentId | Integer |
|
|
|
| result[?].clarificationId | Integer |
|
|
|
| result[?].organizationId | Integer |
|
|
|
| result[?].documentName | String |
|
|
|
| result[?].documentPosition | String |
|
|
|
| result[?].idFromPortal | Integer |
|
|
|
| result[?].documentType | String |
|
|
|
| result[?].documentEmployeeName | String |
|
|
|
| result[?].documentEmployeeId | String |
|
|
|
| result[?].employeeIdSow | Integer |
|
|
|
| result[?].employeeIdBom | Integer |
|
|
|
| result[?].employeeIdEngineer | Integer |
|
|
|
| result[?].employeeIdExperiment | Integer |
|
|
|
| result[?].employeeIdBoq | Integer |
|
|
|
| result[?].employeeIdDesign | Integer |
|
|
|
| result[?].employeeIdSplcontact | Integer |
|
|
|
| result[?].employeePackageId | Integer |
|
|
|
| result[?].employeeNameSow | String |
|
|
|
| result[?].employeeNameBom | String |
|
|
|
| result[?].employeeNameEngineer | String |
|
|
|
| result[?].employeeNameExperiment | String |
|
|
|
| result[?].employeeNameBoq | String |
|
|
|
| result[?].employeeNameDesign | String |
|
|
|
| result[?].employeeNameSplcontact | String |
|
|
|
Method | GET | URL | <DOMAIN>/system/employee/list |
|---|
Description | API Danh sách nhân viên |
|---|
Note | Đã có |
|---|
STT | Field | Source Data Type / Length | Description | Sample Values |
|---|
| authorization | String | Token | Bearer eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3NjYzMDk1MTgsInVzZXIiOiJ7XCJpZFwiOjIwMjAsXCJ1c2VybmFtZVwiOlwiMDM3NDc4ODQwNVwiLFwibmFtZVwiOlwiQ2h1IFRo4buLIExpw6 puXCIsXCJyb2xlc1wiOltdLFwibWFwQmVhdXR5U2Fsb25cIjp7XCJicG0ucmVib3JuLnZuXCI6Nn0sXCJlbXBsb3llZUlkXCI6NTMxLFwiYnJhbmNoSWRcIjoyM30ifQ.UGz8TQudVxEd7rp_rsLXePraHELTRWHyc7iXNvVnn14 |
2. PARAMSTT | Field | Required | Data Type / Length | Description | Note |
|---|
| 1 | name |
| String | Tên, email nhân viên |
|
| page |
| Integer |
|
|
| limit |
| Integer |
|
|
3. Response / Incoming Data Specification| STT | Field | Data Type / Length | Description | Note | Sample Values |
|---|
| code | Integer | Code |
|
|
| message | String | Message |
|
|
| total | Long | Tổng số bản ghi |
|
|
| page | Integer | Số trang |
|
|
| result | Object | Kết quả |
|
|
| result.item[?].id | Integer | Id user |
|
|
| result.item[?].name | String | Tên |
|
|
| result.item[?].userName | String | Tên đăng nhập |
|
|
| result.item[?].avatar | String | avatar |
|
|
| result.item[?].phone | String | Số điện thoại |
|
|
| result.item[?].email | String | email |
|
|
| result.item[?].address | String | Đại chỉ |
|
|
| result.item[?].jteId | Integer |
|
|
|
| result.item[?].jteName | String |
|
|
|
| result.item[?].departmentId | Integer |
|
|
|
| result.item[?].roles | String |
|
|
|
| result.item[?].leadership | Integer |
|
|
|
| result.item[?].status | Integer |
|
|
|
| result.item[?].position | Integer |
|
|
|
| result.item[?].isOwner | Integer |
|
|
|
| result.item[?].userId | Integer |
|
|
|
| result.item[?].managerId | Integer |
|
|
|
| result.item[?].serviceCount | Integer |
|
|
|
| result.item[?].title | String |
|
|
|
| result.item[?].branchName | String |
|
|
|
| result.item[?].branchAddress | String |
|
|
|
| result.item[?].departmentName | String |
|
|
|
| result.item[?].viewMode | Integer |
|
|
|
| result.item[?].idToken | String |
|
|
|
| result.item[?].accessToken | String |
|
|
|
| result.item[?].uniqueId | String |
|
|
|
| result.item[?].viewCustomerMode | Integer |
|
|
|
| result.item[?].viewBusinessPartnerMode | Integer |
|
|
|
| result.item[?].sip | String |
|
|
|
| result.item[?].shiftId | Integer |
|
|
|
| result.item[?].shiftName | String |
|
|
|
| result.item[?].branchId | Integer |
|
|
|
| result.item[?].bsnId | Integer |
|
|
|
| result.item[?].managerName | String |
|
|
|
| result.item[?].managerAvatar | String |
|
|
|
| result.item[?].lstEmployeeId | List<Integer> |
|
|
|
| result.item[?].rank | Integer |
|
|
|
| result.item[?].tmpId | Integer |
|
|
|
| result.item[?].lstOrgApp | List<EBOrgApp> | public class EBOrgApp { private Integer id; private String code; private String startDate; private String endDate; private Integer packageId; private Integer period; private Integer periodBonus; private Integer price; private Integer priceDiscount; private Integer bsnId;
//Thông tin mở rộng (Tên gói đang dùng) private String packageName; private Integer packageType; } |
|
|
| result.item[?].lstEmployeeRole | List<JobTitle> | public class JobTitle { private Integer id; private String title; private Integer position; private Integer departmentId; private Integer isManager;
//Tên bộ phận phòng ban private String departmentName; } |
|
|
Method | POST | URL | <DOMAIN>/application/clarificationRequest/assign |
|---|
Description | API Gửi phân công yêu cầu làm rõ |
|---|
Note | Đã có |
|---|
STT | Field | Source Data Type / Length | Description | Sample Values |
|---|
| authorization | String | Token | Bearer eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3NjYzMDk1MTgsInVzZXIiOiJ7XCJpZFwiOjIwMjAsXCJ1c2VybmFtZVwiOlwiMDM3NDc4ODQwNVwiLFwibmFtZVwiOlwiQ2h1IFRo4buLIExpw6 puXCIsXCJyb2xlc1wiOltdLFwibWFwQmVhdXR5U2Fsb25cIjp7XCJicG0ucmVib3JuLnZuXCI6Nn0sXCJlbXBsb3llZUlkXCI6NTMxLFwiYnJhbmNoSWRcIjoyM30ifQ.UGz8TQudVxEd7rp_rsLXePraHELTRWHyc7iXNvVnn14 |
2. BODYSTT | Field | Required | Data Type / Length | Description | Note |
|---|
| 1 | clarificationDetail |
| List<ClarificationDetail> | public class ClarificationDetail { private Integer id; private String attachments; private String content; private Timestamp assignTime; private Timestamp processTime; private Integer status; private Integer employeeId; private String employeeName; private Integer documentId; private Integer clarificationId; private Integer organizationId; private String documentName; private Integer documentPosition; private Integer idFromPortal;
//Trường thông tin mở rộng private String documentType; private String documentEmployeeName; private String documentEmployeeId;
private Integer employeeIdSow; private Integer employeeIdBom; private Integer employeeIdEngineer; private Integer employeeIdExperiment; private Integer employeeIdBoq; private Integer employeeIdDesign; private Integer employeeIdSplcontact; private Integer employeePackageId;
private String employeeNameSow; private String employeeNameBom; private String employeeNameEngineer; private String employeeNameExperiment; private String employeeNameBoq; private String employeeNameDesign; private String employeeNameSplcontact; } |
|
3. Response / Incoming Data Specification| STT | Field | Data Type / Length | Description | Note | Sample Values |
|---|
| code | Integer | Code |
|
|
| message | String | Message |
|
|
| result | Object | Kết quả |
|
|
| result.id | Integer | Id |
|
|
| result.round | Integer | Số vòng |
|
|
| result.status | Integer | Trạng thái |
|
|
| result.assignTime | Timestamp | Thời gian assign |
|
|
| result.createdTime | Timestamp | Thời gian tạo |
|
|
| result.responseTimeDay | Integer | Thời gian phản hồi (ngày) |
|
|
| result.responseTimeHour | Integer | Thời gian phản hồi (giờ) |
|
|
| result.responseTimeMinute | Integer | Thời gian phản hồi (phút) |
|
|
| result.responseTime | Timestamp | Thời gian phản hồi |
|
|
| result.organizationId | Integer |
|
|
|
| result.packageId | Integer |
|
|
|
| result.projectId | Integer |
|
|
|
| result.packageName | String |
|
|
|
| result.projectName | String |
|
|
|
| result.branchName | String |
|
|
|
| result.tenderPackageName | String |
|
|
|
| result.packageProjectName | String |
|
|
|
| result.packageProjectCode | String |
|
|
|
| result.idFromPortal | Integer |
|
|
|
| result.contactId | Integer |
|
|
|
| result.userId | Integer |
|
|
|
| result.processingTimeDay | Integer | Thời gian xử lý (ngày) |
|
|
| result.processingTimeHour | Integer | Thời gian xử lý (giờ) |
|
|
| result.processingTimeMinute | Integer | Thời gian xử lý (phút) |
|
|
| result.organizationName | Integer |
|
|
|
|
4. Mô tả các trường dữ liệu trên màn hình
4.1 Màn hình Quản lý yêu cầu làm rõ
4.1.1. Phân quyền
Màn hình Quản lý yêu cầu làm rõ là một đối tượng để thực hiện phân quyền như bảng dưới đây:
...
| STT | Màn hình | Nội dung |
|---|
| Quyền xem |
| 1 | Màn hình quản lý yêu cầu làm rõ | Cho phép xem danh sách yêu cầu làm rõ |
...
ẩn nút ... |
| 2 | Pop-up yêu cầu làm rõ |
...
| Cho phép xem chi tiết màn hình Yêu cầu làm rõ |
...
|
| 3 |
| Cho phép xem lịch sử yêu cầu làm rõ |
...
| Quyền thêm |
| 1 | Màn hình Gửi tổng hợp yêu cầu làm rõ | Cho phép người dùng gửi tổng hợp yêu cầu làm rõ |
...
...
| Lịch sử tổng hợp yêu cầu làm rõ |
...
| Cho phép người dùng gửi tổng hợp yêu cầu làm rõ |
...
|
| 3 |
| Cho phép người dùng Gửi yêu cầu thay đổi |
4.1.2. Mô tả về các trường/nút chức năng rên màn hình quản lý yêu cầu làm rõ & bộ lọc
STT | Trường/Nút chức năng | Kiểu dữ liệu | Điều kiện | Quy định | Mô tả |
|---|
Màn hình quản lý yêu cầu làm rõ |
| 1 | STT | |
|
| Số thự tự hệ thống tự sinh |
| 2 | Nhà thầu | Hyperlink |
|
| Hiển thị danh sách nhà thầu gửi yêu cầu làm rõ Nhấn vào tên nhà thầu hệ thống mở Pop-up chi tiết yêu cầu làm rõ |
| 3 | Tên người liên hệ | Text |
|
| Hiển thị tên người liên hệ gửi yêu cầu làm rõ |
| 4 | Email người liên hệ | Text |
|
| Hiển thị email (tài khoản) gửi yêu cầu làm rõ |
| 5 | Lần làm rõ | Number |
|
| Hiển thị lần làm rõ hiện tại của nhà thầu |
| 6 | Thời gian nhận | Date time |
|
| Hiển thị thời gian yêu cầu làm rõ gần nhất của nhà thầu |
| 7 | Trạng thái | Text |
|
| Trạng thái làm rõ của nhà thầu: - Chờ phản hồi: các yêu cầu được gửi tới hội đồng thầu mà chưa được phân công.
- Đã phân công: các yêu cầu đã được thư ký hội đồng thầu phân công cho thành viên hội đồng thầu.
- Chờ tổng hợp: các yêu cầu mà thành viên hội đồng thầu đã phản hồi, chờ thư ký tổng hợp và gửi cho nhà thầu
- Đã phản hồi: các yêu cầu mà thư ký hội đồng thầu đã phản hồi.
|
| 8 | Bộ lọc | Button |
|
| Chức năng cho phép người dùng thực hiện lọc nhà thầu cần xử lý làm rõ Nhấn vào hệ thống hiển thị Pop-up điều kiện lọc |
| 9 | Searchbox | Searchbox |
|
| Chức năng cho phép người dùng thực hiện tìm kiếm theo tên nhà thầu |
Màn hình bộ lọc |
| 1 | Từ ngày | Date |
|
| Cho phép người dùng nhập thông tin từ ngày |
| 2 | Đến ngày | Date |
|
| Cho phép người dùng nhập thông tin đến ngày |
| 3 | Trạng thái | Droplist |
|
| Cho phép người dùng lựa chọn các trạng thái làm rõ của nhà thầu: - Tất cả
- Chờ phản hồi
- Đã phân công
- Chờ tổng hợp
- Đã phản hồi
|
| 4 | Đặt lại | Button |
|
| Chức năng cho phép người dùng xóa hết các điều kiện lọc đã chọn |
| 5 | Áp dụng | Button |
| Với trường hợp lọc nhiều điều kiện hệ thống sử dụng điều kiện And. - Nếu người dùng điền đủ thông tin từ ngày đến ngày: hệ thống lọc dữ liệu trong khoảng thời gian
- Nếu người dùng chỉ điền từ ngày: lọc các gói thầu có ngày ≥ Từ ngày.
- Nều người dùng chỉ điền đến ngày: lọc các gói thầu có ngày ≤ Đến ngày.
- Nếu người dùng điền Từ ngày > Đến ngày → hiển thị cảnh báo "Tham số ngày không hợp lệ"
| Chức năng cho phép người dùng lọc dữ liệu theo các kiều kiện đã chọn. Hệ thống tắt màn hình Pop-up điều kiện lọc. |