## Requirements

# 4. Requirements

## 4.1 Functional Requirements

### 4.1.1 Order Service

- The system shall allow creation of a single order per API request. Bulk or batch order creation is not supported in the current implementation.  
  [KB-459cbd85-fb6b-4a7e-8a36-e5f711cac6b9], [KB-4c9591c9-34d5-42b1-a0e2-1de20131159c], [KB-86e313b9-691a-4830-b560-a2097e138f34]

- The system shall calculate the total order amount automatically as the sum of (quantity × unit price) for all items.  
  [KB-0e0f1dd0-0f46-4d13-a092-e3cdc6fdd205], [KB-86e313b9-691a-4830-b560-a2097e138f34]

- The system shall support pagination for listing orders, with parameters `skip` (default 0) and `limit` (default 20).  
  [KB-459cbd85-fb6b-4a7e-8a36-e5f711cac6b9], [KB-4287fde1-e2d9-4e31-8f2f-5c3f64f00add]

- The system shall allow retrieval of order details by order ID, including item details.  
  [KB-459cbd85-fb6b-4a7e-8a36-e5f711cac6b9], [KB-55d6e023-2c8e-49db-9409-68b9e9ed721f]

- The system shall support order status transitions: PENDING → PROCESSING_PAYMENT → PAID → SHIPPED → DELIVERED.  
  [KB-55d6e023-2c8e-49db-9409-68b9e9ed721f]

- The system shall support order cancellation, updating the status to CANCELLED.  
  [KB-55d6e023-2c8e-49db-9409-68b9e9ed721f], [KB-981308db-2c30-4894-ba6b-491bf40b1d24]

- Upon order cancellation, the system shall trigger a refund request to the Payment Service and send a cancellation notification via the Notification Service.  
  [KB-4651de1d-570d-4c49-8a65-ec5b22855797], [KB-981308db-2c30-4894-ba6b-491bf40b1d24], [KB-1a8a8c49-5d2d-4747-b2de-4e95950cdf44]

### 4.1.2 Payment Service

- The Payment Service shall process payments for a single order per request. Batch payment processing is not supported.  
  [KB-8072a75f-d61d-49b1-a859-1be86806c449], [KB-8ca26148-03e1-4184-a736-624e14448df9], [KB-9b61fb5a-8a89-4024-a535-ca56b147a8c8]

- Payment amount must be between 100 JPY and 1,000,000 JPY per transaction.  
  [KB-8072a75f-d61d-49b1-a859-1be86806c449], [KB-299da2e5-721b-4ab1-9bb0-cd2d0f03c8c6], [KB-564ae239-84b1-4ef2-bb04-b7e829eb53b6]

- Duplicate payment requests for the same order ID must be rejected.  
  [KB-8072a75f-d61d-49b1-a859-1be86806c449], [KB-299da2e5-721b-4ab1-9bb0-cd2d0f03c8c6]

- Payment and order must maintain a 1:1 relationship (one payment per order).  
  [KB-299da2e5-721b-4ab1-9bb0-cd2d0f03c8c6]

- The Payment Service shall support refund processing for completed payments.  
  [KB-8072a75f-d61d-49b1-a859-1be86806c449], [KB-299da2e5-721b-4ab1-9bb0-cd2d0f03c8c6]

- After payment processing, the Payment Service shall notify the Order Service of payment status via a webhook callback for each order.  
  [KB-564ae239-84b1-4ef2-bb04-b7e829eb53b6], [KB-69d55b34-e506-4b4e-a043-ef842030f397]

### 4.1.3 Notification Service

- The Notification Service shall send email and SMS notifications for individual orders using templates.  
  [KB-6155f440-0799-44eb-851f-9a5b81fbbcf8], [KB-1c5832cc-4e41-483e-9898-60c735170444]

- The system shall support three notification templates: ORDER_CONFIRMATION, ORDER_SHIPPED, ORDER_CANCELLED.  
  [KB-6155f440-0799-44eb-851f-9a5b81fbbcf8]

- Templates shall use Jinja2-style variable substitution and support Japanese language content.  
  [KB-6155f440-0799-44eb-851f-9a5b81fbbcf8], [KB-3133bf0e-2d7c-4477-9e36-c8548c037b2c], [KB-79cd66a7-e187-4f66-b53c-ded850690b2e]

- Notification delivery status (PENDING, SENT, FAILED) shall be tracked.  
  [KB-6155f440-0799-44eb-851f-9a5b81fbbcf8], [KB-79cd66a7-e187-4f66-b53c-ded850690b2e]

- The system shall allow retrieval of notification history by notification ID and all notifications for a specific order.  
  [KB-6155f440-0799-44eb-851f-9a5b81fbbcf8], [KB-79cd66a7-e187-4f66-b53c-ded850690b2e], [KB-4d364408-238b-4248-925a-97d5a3446d3c]

### 4.1.4 Bulk Operations (CSV Import)

- [GAP: Missing data for Requirements]  
  *Bulk order creation via CSV import is requested by business stakeholders (100–10,000 orders), but is not implemented in the current system. All CSV import requirements, validation, progress tracking, partial failure handling, and batch notification are not supported in the present Order Service implementation.*  
  [KB-16181d30-2dd3-421e-bab0-939cd85255d2], [KB-2b07b017-3e2f-47a4-9b03-d2be4a0e5644], [KB-94407aa3-d1ac-4455-a68c-265236fefec4], [KB-6ef0a78b-63b6-493a-a7b0-76398d5a2889], [KB-155b5f4a-d232-4166-bb96-ba158f86ceb1], [KB-2b0238e6-fb8b-4c64-bbb0-73de35f73a08], [KB-1603dccf-0e13-426d-a4c3-527af9e69c16], [KB-2183809f-cfa9-4b0b-a30d-320f78a4f161], [KB-2708f598-e5da-4cca-91f0-fd3d267de542], [KB-5bd83fdc-f7d5-4953-bd1e-e9b287f0bf96], [KB-25b436c5-c5b0-48c1-97de-61d50bd37e57], [KB-5a963d29-d4ed-4859-ba71-d355620aa5bc]

## 4.2 Interface Requirements

### 4.2.1 Order Service API

| Endpoint                              | Description                                              |
|----------------------------------------|---------------------------------------------------------|
| POST /api/v1/orders/                   | Create a single order                                   |
| GET /api/v1/orders/                    | List orders (pagination: skip, limit)                   |
| GET /api/v1/orders/{order_id}          | Retrieve order details                                  |
| PUT /api/v1/orders/{order_id}/status   | Update order status; triggers shipping notification      |
| DELETE /api/v1/orders/{order_id}       | Cancel order; triggers refund and cancellation email     |
| POST /api/v1/orders/{order_id}/webhook | Receive payment status update from Payment Service       |

[KB-459cbd85-fb6b-4a7e-8a36-e5f711cac6b9], [KB-4287fde1-e2d9-4e31-8f2f-5c3f64f00add], [KB-981308db-2c30-4894-ba6b-491bf40b1d24], [KB-69d55b34-e506-4b4e-a043-ef842030f397]

### 4.2.2 Payment Service API

| Endpoint                              | Description                                              |
|----------------------------------------|---------------------------------------------------------|
| POST /api/v1/payments/                 | Process payment for a single order                      |
| GET /api/v1/payments/{payment_id}      | Retrieve payment details                                |
| GET /api/v1/payments/order/{order_id}  | Retrieve payment for a specific order                   |
| POST /api/v1/payments/refund           | Process refund for a completed payment                  |

[KB-8072a75f-d61d-49b1-a859-1be86806c449], [KB-90c1a181-8f6a-4efe-be94-d7a6c0e37f5a], [KB-8e5c6600-75fa-4e87-a6f5-0d06b21d8625]

### 4.2.3 Notification Service API

| Endpoint                                  | Description                                              |
|--------------------------------------------|---------------------------------------------------------|
| POST /api/v1/notifications/email           | Send single email notification (rate limit: 10/sec)     |
| POST /api/v1/notifications/sms             | Send single SMS notification                            |
| GET /api/v1/notifications/{notification_id}| Retrieve notification by ID                             |
| GET /api/v1/notifications/order/{order_id} | Retrieve all notifications for a specific order          |

[KB-582e7673-bd66-493e-b511-017708ae9326], [KB-2414677b-6e22-47f5-917c-2ed718d86fd4], [KB-4d364408-238b-4248-925a-97d5a3446d3c]

## 4.3 Constraint Requirements

- Payment amount per transaction must be between 100 JPY and 1,000,000 JPY.  
  [KB-8072a75f-d61d-49b1-a859-1be86806c449], [KB-299da2e5-721b-4ab1-9bb0-cd2d0f03c8c6], [KB-564ae239-84b1-4ef2-bb04-b7e829eb53b6]

- Only one payment per order is allowed (1:1 relationship).  
  [KB-299da2e5-721b-4ab1-9bb0-cd2d0f03c8c6]

- Duplicate payment requests for the same order must be rejected.  
  [KB-8072a75f-d61d-49b1-a859-1be86806c449], [KB-299da2e5-721b-4ab1-9bb0-cd2d0f03c8c6]

- Refunds are only allowed for completed payments.  
  [KB-299da2e5-721b-4ab1-9bb0-cd2d0f03c8c6]

- Bulk operations (CSV import, batch payment, batch notification) are not supported in the current system.  
  [KB-564ae239-84b1-4ef2-bb04-b7e829eb53b6], [KB-16181d30-2dd3-421e-bab0-939cd85255d2]

## 4.4 Data Requirements

- Order data must include customer name, customer email, item details (product name, quantity, unit price), total amount, currency, and status.  
  [KB-1bfa4181-74da-4372-ba8f-acf6d7aa41c4], [KB-4c9591c9-34d5-42b1-a0e2-1de20131159c]

- Payment data must include order ID, amount, currency, payment method, transaction ID, status, timestamps.  
  [KB-90c1a181-8f6a-4efe-be94-d7a6c0e37f5a]

- Notification data must include order ID, channel (email/SMS), template name, recipient, subject, body, status, timestamps.  
  [KB-258b5996-5aad-4f5f-acd2-8e458c49f884]

## 4.5 Business Requirements

- The system must support operational efficiency for business users by enabling order creation, payment processing, and notification delivery for individual orders.  
  [KB-9b61fb5a-8a89-4024-a535-ca56b147a8c8], [KB-1a8a8c49-5d2d-4747-b2de-4e95950cdf44]

- Bulk order creation via CSV import is a requested business feature but is not currently implemented.  
  [KB-16181d30-2dd3-421e-bab0-939cd85255d2], [KB-2b07b017-3e2f-47a4-9b03-d2be4a0e5644], [KB-94407aa3-d1ac-4455-a68c-265236fefec4], [KB-6ef0a78b-63b6-493a-a7b0-76398d5a2889], [KB-155b5f4a-d232-4166-bb96-ba158f86ceb1], [KB-2b0238e6-fb8b-4c64-bbb0-73de35f73a08], [KB-1603dccf-0e13-426d-a4c3-527af9e69c16], [KB-2183809f-cfa9-4b0b-a30d-320f78a4f161], [KB-2708f598-e5da-4cca-91f0-fd3d267de542], [KB-5bd83fdc-f7d5-4953-bd1e-e9b287f0bf96], [KB-25b436c5-c5b0-48c1-97de-61d50bd37e57], [KB-5a963d29-d4ed-4859-ba71-d355620aa5bc]

---

*This section is strictly based on the provided context and adheres to ISO-29148 requirements. All requirements are traceable to their source context blocks.*