157 lines
3.3 KiB
JavaScript
157 lines
3.3 KiB
JavaScript
/**
|
|
* Entity Schema Resources
|
|
* Provides schema information for WMS entity types
|
|
*/
|
|
|
|
function listResources() {
|
|
return [
|
|
{
|
|
uri: 'wms://entity-schemas',
|
|
name: 'Entity Schemas',
|
|
description: 'Schema information and common fields for WMS entities',
|
|
mimeType: 'text/markdown',
|
|
},
|
|
];
|
|
}
|
|
|
|
async function readResource(uri) {
|
|
let content;
|
|
|
|
switch (uri) {
|
|
case 'wms://entity-schemas':
|
|
content = getEntitySchemas();
|
|
break;
|
|
|
|
default:
|
|
throw new Error(`Unknown entity schema resource: ${uri}`);
|
|
}
|
|
|
|
return {
|
|
contents: [{
|
|
uri,
|
|
mimeType: 'text/markdown',
|
|
text: content,
|
|
}],
|
|
};
|
|
}
|
|
|
|
function getEntitySchemas() {
|
|
return `# WMS Entity Schemas
|
|
|
|
## Overview
|
|
|
|
Entity schemas define the structure and available fields for each entity type.
|
|
Use the \`get_entity_schema\` tool to retrieve the actual schema from the API by querying one entity.
|
|
|
|
## Common Field Patterns
|
|
|
|
Most WMS entities follow these patterns:
|
|
|
|
### Standard Fields
|
|
- \`Id\` - Unique identifier (GUID or integer)
|
|
- \`Code\` - Business code/reference
|
|
- \`Name\` - Display name
|
|
- \`Description\` - Detailed description
|
|
- \`Created\` - Creation timestamp
|
|
- \`Modified\` - Last modification timestamp
|
|
- \`Status\` - Entity status
|
|
|
|
### Relationship Fields
|
|
- \`{Entity}Id\` - Foreign key to related entity (e.g., ProductId, AccountId)
|
|
- \`{Entity}Code\` - Related entity code
|
|
- \`{Entity}Name\` - Related entity name
|
|
|
|
## Entity-Specific Schemas
|
|
|
|
### Products
|
|
Common fields:
|
|
- Id, Code, Name, Description
|
|
- Category, Family, SubFamily
|
|
- Weight, Volume, Height, Width, Length
|
|
- UnitOfMeasure, BaseUnit
|
|
- Barcode, AlternativeCodes
|
|
- Active, Blocked
|
|
|
|
### Containers
|
|
Common fields:
|
|
- Id, Code, Name, Type
|
|
- Status, Location, Zone
|
|
- Weight, Tare, MaxWeight
|
|
- ProductId, Quantity
|
|
- Created, Modified
|
|
|
|
### Tasks
|
|
Common fields:
|
|
- Id, Code, Type, Status
|
|
- Priority, Sequence
|
|
- SourceLocation, TargetLocation
|
|
- ProductId, Quantity
|
|
- AssignedUser, AssignedDevice
|
|
- StartedAt, CompletedAt
|
|
|
|
### Stocks
|
|
Common fields:
|
|
- ProductId, ProductCode, ProductName
|
|
- LocationId, LocationCode
|
|
- Quantity, AvailableQuantity, ReservedQuantity
|
|
- UnitOfMeasure
|
|
- LotNumber, SerialNumber
|
|
- ExpirationDate
|
|
|
|
### InboundOrders / OutboundOrders
|
|
Common fields:
|
|
- Id, Code, ExternalCode
|
|
- Type, Status, Priority
|
|
- AccountId, AccountCode, AccountName
|
|
- SupplierId, SupplierCode (inbound only)
|
|
- ExpectedDate, PlannedDate, ActualDate
|
|
- TotalLines, TotalQuantity
|
|
- Created, Modified
|
|
|
|
## Retrieving Schemas
|
|
|
|
Use the \`get_entity_schema\` tool to dynamically retrieve the schema:
|
|
|
|
\`\`\`
|
|
# Get Products schema
|
|
get_entity_schema(entity_type="Products")
|
|
|
|
# Get Tasks schema
|
|
get_entity_schema(entity_type="Tasks")
|
|
\`\`\`
|
|
|
|
This will query one entity from the API and return all available fields with sample values.
|
|
|
|
## LINQ Field Selection
|
|
|
|
You can select specific fields using LINQ expressions:
|
|
|
|
\`\`\`
|
|
# Select specific fields
|
|
query_wms_entities(
|
|
entity_type="Products",
|
|
select_expression="z => new { z.Id, z.Code, z.Name, z.Category }"
|
|
)
|
|
|
|
# Nested object creation
|
|
query_wms_entities(
|
|
entity_type="Tasks",
|
|
select_expression="z => new {
|
|
Task = z.Code,
|
|
Product = z.ProductName,
|
|
Status = z.Status
|
|
}"
|
|
)
|
|
\`\`\`
|
|
|
|
---
|
|
|
|
**Note:** Field availability may vary depending on WMS configuration and version.
|
|
`;
|
|
}
|
|
|
|
module.exports = {
|
|
listResources,
|
|
readResource,
|
|
};
|