> ## Documentation Index
> Fetch the complete documentation index at: https://tomotek.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# US-MER-22: Cập nhật thông tin sản phẩm

> Là một Merchant, tôi muốn cập nhật thông tin của sản phẩm đã tạo, để tôi có thể chỉnh sửa khi có thay đổi về thông tin sản phẩm.

## Điều kiện tiên quyết (Pre-conditions)

* Merchant đã đăng nhập vào hệ thống
* Sản phẩm đã tồn tại trong hệ thống.

## Luồng quy trình cập nhật sản phẩm

```mermaid theme={null}
flowchart TB
    A[Mở danh sách sản phẩm] --> B{Chọn sản phẩm}
    B -->|Nhấn nút Sửa| C[Mở form chỉnh sửa]
    C --> D[Thay đổi thông tin cần sửa]
    D --> E{Kiểm tra validation}
    E -->|Không hợp lệ| F[Hiển thị lỗi tại trường tương ứng]
    F --> D
    E -->|Hợp lệ| G[Lưu thay đổi]
    G --> H[Ghi log lịch sử thay đổi]
    H --> I[Thông báo thành công]
    I --> J[Quay lại màn hình chi tiết sản phẩm]
```

## Chức năng cập nhật sản phẩm

* Merchant **chỉ có thể truy cập** chức năng sửa sản phẩm từ màn hình chi tiết sản phẩm.
* **Tất cả các trường thông tin** của sản phẩm đều có thể chỉnh sửa được:
  * Tên sản phẩm
  * Danh mục sản phẩm
  * Hình ảnh (1 ảnh đại diện + 9 ảnh phụ, tối đa 10 ảnh/sản phẩm)
  * Mô tả
  * Giá bán, Giá nhập
  * Mức tồn kho tối thiểu cảnh báo
* Hệ thống lưu lại lịch sử thay đổi chi tiết: lúc nào, trường nào thay đổi, giá trị cũ và giá trị mới.
* Khi cập nhật thành công, hệ thống thông báo thành công và cập nhật dữ liệu ngay lập tức trên toàn hệ thống.

## Ràng buộc và Validate dữ liệu

* **Tên sản phẩm**: Phải duy nhất trong hệ thống, độ dài tối đa 255 ký tự. Nếu trùng tên sản phẩm khác thì từ chối lưu và thông báo lỗi rõ ràng.
* **Hình ảnh**: Mỗi file tối đa 5MB, chỉ chấp nhận định dạng JPG, PNG
* **Giá trị số**: Giá bán, Giá nhập chỉ chấp nhận số dương lớn hơn hoặc bằng 0.
* Tất cả các validation giống như lúc tạo sản phẩm cũng được áp dụng lúc cập nhật.

## Quy tắc xử lý

* **Thay đổi thông tin sản phẩm CHỈ áp dụng cho các giao dịch tạo SAU thời điểm thay đổi.**
* **Tất cả đơn hàng, lô hàng, log biến động kho đã tạo TRƯỚC đó vẫn giữ nguyên thông tin cũ tại thời điểm tạo.**
* Không cho phép đổi tên sản phẩm thành tên đã tồn tại của sản phẩm khác.
* Lịch sử thay đổi chi tiết (giá trị cũ → giá trị mới) được lưu vĩnh viễn, không thể xóa hoặc chỉnh sửa.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.