manage_ram_scanner/README.md

262 lines
5.0 KiB
Markdown

# Batch Management System
A comprehensive system for managing batches with items and mixed items.
## Features
- ✅ Create batches with valid items (same MPN) and mixed items (different MPN)
- 📊 View all batches with expandable item lists
- 🔍 Search batches by name or ID
- 🗑️ Delete batches (cascade deletes all items)
- 📄 Pagination and sorting
- 🎨 Modern, responsive UI
## Database Structure
### Tables
**batches**
- `id` - Auto-increment primary key
- `batch_name` - Unique batch identifier
- `createdAt` - Timestamp
**items** (Valid items with same MPN)
- `id` - Auto-increment primary key
- `batch_id` - Foreign key to batches
- `mpn` - Manufacturer Part Number
- `sn` - Serial Number
- `createdAt` - Timestamp
**items_mix** (Mixed items with different MPN)
- `id` - Auto-increment primary key
- `batch_id` - Foreign key to batches
- `mpn` - Manufacturer Part Number
- `sn` - Serial Number
- `createdAt` - Timestamp
## Installation
1. Install dependencies:
```bash
npm install
```
2. Start the server:
```bash
npm start
```
3. For development with auto-reload:
```bash
npm run dev
```
4. Open browser to:
```
http://localhost:4444
```
## API Documentation
### 1. Save Batch
**POST** `/api/batch/save`
Create a new batch with items and optional mixed items.
**Request Body:**
```json
{
"batch_name": "BATCH_20250210141530",
"items": [
{
"mpn": "CN_M378A5143DB0-CPB_1620",
"sn": "U03A00062074544398"
},
{
"mpn": "CN_M378A5143DB0-CPB_1620",
"sn": "U03A00062074544399"
}
],
"items_mix": [
{
"mpn": "CN_M378A5143DB0-CPB_1621",
"sn": "U03A00062074544403"
}
]
}
```
**Response:**
```json
{
"success": true,
"batch_id": 1,
"batch_name": "BATCH_20250210141530",
"inserted_items": 2,
"inserted_mix_items": 1
}
```
### 2. Get All Batches
**GET** `/api/batch/get-all`
Retrieve all batches with pagination, search, and sorting.
**Query Parameters:**
- `page` (default: 1) - Page number
- `limit` (default: 50) - Items per page
- `search` - Search by batch name or ID
- `sortBy` (default: "id") - Column to sort by (id, batch_name, createdAt)
- `sortOrder` (default: "DESC") - Sort order (ASC, DESC)
**Example:**
```
GET /api/batch/get-all?page=1&limit=50&sortBy=createdAt&sortOrder=DESC
```
**Response:**
```json
{
"batches": [
{
"id": 1,
"batch_name": "BATCH_20250210141530",
"createdAt": "2025-02-10 14:15:30",
"items": [
{
"mpn": "CN_M378A5143DB0-CPB_1620",
"sn": "U03A00062074544398",
"createdAt": "2025-02-10 14:15:30"
}
],
"items_mix": [
{
"mpn": "CN_M378A5143DB0-CPB_1621",
"sn": "U03A00062074544403",
"createdAt": "2025-02-10 14:15:30"
}
]
}
],
"total": 1,
"page": 1,
"limit": 50,
"totalPages": 1
}
```
### 3. Get Single Batch
**GET** `/api/batch/get/:id`
Get a specific batch by ID with all its items.
**Example:**
```
GET /api/batch/get/1
```
**Response:**
```json
{
"id": 1,
"batch_name": "BATCH_20250210141530",
"createdAt": "2025-02-10 14:15:30",
"items": [...],
"items_mix": [...]
}
```
### 4. Delete Batch
**DELETE** `/api/batch/delete/:id`
Delete a batch and all its items (cascade delete).
**Example:**
```
DELETE /api/batch/delete/1
```
**Response:**
```json
{
"success": true,
"deleted": 1
}
```
### 5. Search Items
**GET** `/api/items/search`
Search for items across all batches.
**Query Parameters:**
- `q` (required) - Search query for MPN or SN
**Example:**
```
GET /api/items/search?q=U03A00062074544398
```
**Response:**
```json
{
"results": [
{
"batch_id": 1,
"batch_name": "BATCH_20250210141530",
"mpn": "CN_M378A5143DB0-CPB_1620",
"sn": "U03A00062074544398",
"createdAt": "2025-02-10 14:15:30",
"type": "items"
}
]
}
```
## Frontend Features
### Batch Table
- Click on batch row to expand and view items
- Items are displayed in two sections:
- ✅ Valid Items (same MPN)
- ⚠️ Mixed Items (different MPN)
### Create Batch Modal
- Auto-generates batch name with timestamp
- JSON input for items and mixed items
- Validation for required fields and JSON format
### Search & Sort
- Real-time search with debouncing
- Sort by ID, Batch Name, or Created At
- Toggle between ASC/DESC order
## Technologies
- **Backend:** Node.js, Express.js
- **Database:** SQLite3
- **Frontend:** Vanilla JavaScript, HTML5, CSS3
- **Features:** RESTful API, Responsive Design
## Project Structure
```
.
├── server.js # Express server with API routes
├── index.html # Frontend UI
├── package.json # Node.js dependencies
├── products.db # SQLite database (auto-generated)
└── README.md # This file
```
## Notes
- Database is automatically created on first run
- All timestamps are stored in UTC and converted to local time in UI
- Cascade delete ensures all items are removed when batch is deleted
- Foreign key constraints maintain data integrity