Fichiers hors périmètre ou dupliqués : - suppression des 5 .md dupliqués à la racine (copies md5-identiques de docs/api/ et docs/entities/) - suppression de JANITOR_main.js / JANITOR_entities.json (application Electron sans lien avec le serveur MCP) - suppression de temp/*.json (dumps de workflows versionnés par accident) et ajout de temp/ au .gitignore - suppression de claude_desktop_config_ssh.json : mots de passe en clair et variables ORACLE_* d'une architecture abandonnée - AD_API_TEST_RESULTS.md -> docs/ad-api-validation.md (credentials du snippet remplacés par des variables d'environnement) - suppression d'IMPLEMENTATION_SUMMARY.md, doublon du précédent - queries api.php -> docs/reference-queries-api.php (renommage seul) Code mort : - suppression de src/resources/documentation.js : la resource docs:// n'a jamais été branchée dans src/index.js - suppression de src/config/constants.js : module entièrement inutilisé, requis par wms-query-service.js mais dont aucune constante n'était lue. Emporte RESOURCE_URIS.WORKFLOWS_CATEGORIES, URI déclarée jamais servie. - log-service.js : suppression de findRecentErrors, readFullLog et getLogStats, exportées mais exposées par aucun outil MCP - suppression de LOG_FILE_PATTERN (lue depuis .env, jamais appliquée : le scan filtre sur .log en dur), y compris dans .env.example - log-service.js : préfixe [Logs] sur les messages, comme les autres modules Secrets : - test-ad-api.ps1 -> scripts/test-ad-api.ps1, credentials passés en paramètres ou par WMS_USERNAME / WMS_PASSWORD au lieu d'être en dur Build et test : - @yao-pkg/pkg en devDependency, cible node22-win-x64 : npm run build échouait faute de pkg, et node20 n'a pas de binaire prébuilt (bascule sur une compilation de Node qui échoue sans toolchain MSVC) - index.js : le .env est lu à côté de l'exécutable quand le serveur est packagé. Avec un chemin statique, pkg embarquait le .env dans le snapshot, figeant les credentials dans le binaire. - scripts/test-connection.js : npm test pointait sur un fichier absent. Smoke test en lecture seule (OAuth, QueryExecute, QueryScalarExecute, API AD), par profil ou sur tous. Vérifié après nettoyage : 23 outils et 6 resources répondent au handshake MCP, npm test passe 4/4 contre le WMS. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
4.9 KiB
Application Dictionary API Test Results
Date: 2026-04-02 Test Type: Comprehensive AD API endpoint validation Total Element Types Tested: 19 Status: ✅ 17/19 Working (89.5% success rate)
Test Summary
| Status | Count | Percentage |
|---|---|---|
| ✅ Success | 17 | 89.5% |
| ⚠️ Empty | 0 | 0% |
| ❌ Failed | 2 | 10.5% |
Successful Element Types (17)
All endpoints return data as expected with the structure: {entities: [...]}
| Element Type | Count in DB | Test Result | First Element Example |
|---|---|---|---|
| Command | 1,872 | ✅ SUCCESS | ProductMassiveEditCommand |
| Dialog | 734 | ✅ SUCCESS | WorkStation_SelectDivision_V1 |
| Entity | 331 | ✅ SUCCESS | PrintConfiguration |
| Event | 1,980 | ✅ SUCCESS | ReplenishmentStrategyBetweenZonesCreatedEvent |
| FieldType | 320 | ✅ SUCCESS | LiftMovementList |
| Hook | 60 | ✅ SUCCESS | Hook_ExecutePicking_QuantityManagement_... |
| List | 243 | ✅ SUCCESS | OutboundDefragStrategyList |
| Query | 2,016 | ✅ SUCCESS | Load_WithOpenStatusByWarehouseCode |
| Record | 337 | ✅ SUCCESS | HazardWF |
| Relationship | 49 | ✅ SUCCESS | Re_container_stock |
| Report | 67 | ✅ SUCCESS | STD_RPT_LOCATION_RANGE_LABEL_15 |
| Resource | 29,374 | ✅ SUCCESS | ViewField_ManualEquipVList_vedit_Status |
| Subscription | 500 | ✅ SUCCESS | SecureOutboundOrder_OnOutboundOrderFinalizedCreationEvent |
| Validator | 17 | ✅ SUCCESS | Between0and100 |
| ViewGroup | 180 | ✅ SUCCESS | StationRoute |
| View | 373 | ✅ SUCCESS | Aps3DBehaviourConfigurationVList |
| Workflow | 3,712 | ✅ SUCCESS | Helper_MasterOutboundOrderById |
Total Elements: 38,765
Failed Element Types (2)
| Element Type | Error | Reason |
|---|---|---|
| WorkflowAction | 404 Not Found | Endpoint does not exist |
| WritingModel | 404 Not Found | Endpoint does not exist |
Element Types Not Tested (Empty in DB)
| Element Type | Count in DB | Reason |
|---|---|---|
| Dashboard | 0 | No data available |
| TimelineTemplate | 0 | No data available |
| Toggle | 0 | No data available |
API Endpoint Pattern
All working endpoints follow this pattern:
POST https://localhost/AD/api/{ElementType}/GetByApplication
Content-Type: application/json
Authorization: Bearer {token}
Body: ["EasyWMS", "AD", pageSize, offset]
Response Structure:
{
"entities": [
{
"Id": "uuid",
"Name": "string",
"Code": "string",
"Description": "string",
...
}
]
}
Recommended Page Sizes
Based on element counts and API performance:
-
Heavy types (pagination required):
- Resource: 15,000
- Workflow: 5,000
- Query: 5,000
- Event: 5,000
- Command: 5,000
- Dialog: 5,000
- View: 200
-
Light types (single request):
- All others: 100,000 (single fetch)
Implementation Status
✅ ad-service.js - Updated to support 20 element types ✅ ad-tools.js - 5 MCP tools for AD interaction ✅ index.js - AD tools integrated and routed ✅ Validation - All 17 working types confirmed via curl ✅ Cache Strategy - 1-hour TTL per element type ✅ Lazy Loading - Elements fetched only on first request
curl Test Command
# Get OAuth token
$tokenResponse = Invoke-RestMethod -Uri "https://localhost/EasySTS/OAuth/Token" `
-Method Post `
-Headers @{
"Authorization" = "Basic R05BOklFNGU3aXFoZHQ="
"Content-Type" = "application/x-www-form-urlencoded"
} `
-Body @{
grant_type = "password"
tenant_code = "AD"
username = $env:WMS_USERNAME
password = $env:WMS_PASSWORD
}
$token = $tokenResponse.access_token
# Test an element type (e.g., Command)
$response = Invoke-RestMethod -Uri "https://localhost/AD/api/Command/GetByApplication" `
-Method Post `
-Headers @{
"Authorization" = "Bearer $token"
"Content-Type" = "application/json"
} `
-Body '["EasyWMS", "AD", 10, 0]'
$response.entities | Select-Object -First 5
Suivi
Toutes les actions issues de cette campagne sont closes :
WorkflowActionetWritingModelretirés deAD_ELEMENT_TYPES(D17).- Descriptions des outils alignées sur 20 types.
- Les 5 outils AD sont opérationnels et validés avec Claude Desktop.
- Architecture et pièges consignés dans ../CLAUDE.md et ../DECISIONS.md.
Pour rejouer la campagne complète :
powershell -ExecutionPolicy Bypass -File ../scripts/test-ad-api.ps1 -WmsHost <host> -Username <user> -Password '***' -Tenant AD
Conclusion
The Application Dictionary API implementation is fully validated and working for 17 element types covering 38,765 elements. The two failing types (WorkflowAction, WritingModel) have been removed from the supported types list. The implementation follows the same pattern as workflow-service.js with lazy loading and caching, ensuring optimal performance.