Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| public | ||
| .gitignore | ||
| README.md | ||
| package-lock.json | ||
| package.json | ||
| products.db | ||
| server.js | ||
| test_api.js | ||
README.md
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 keybatch_name- Unique batch identifiercreatedAt- Timestamp
items (Valid items with same MPN)
id- Auto-increment primary keybatch_id- Foreign key to batchesmpn- Manufacturer Part Numbersn- Serial NumbercreatedAt- Timestamp
items_mix (Mixed items with different MPN)
id- Auto-increment primary keybatch_id- Foreign key to batchesmpn- Manufacturer Part Numbersn- Serial NumbercreatedAt- Timestamp
Installation
- Install dependencies:
npm install
- Start the server:
npm start
- For development with auto-reload:
npm run dev
- 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:
{
"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:
{
"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 numberlimit(default: 50) - Items per pagesearch- Search by batch name or IDsortBy(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:
{
"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:
{
"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:
{
"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:
{
"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