Overview
AUTO-FLEET-001, Determine Fleet Vehicle Replacement, ranks candidate fleet vehicles by lifecycle cost, downtime risk, maintenance trend, utilization criticality, and safety rating.
- Decision ID
AUTO-FLEET-001- Decision Name
- Determine Fleet Vehicle Replacement
- Description
- Determine Fleet Vehicle Replacement using the relevant Fleet Vehicle Management business criteria, profile, and operating scenario.
- Industry
- Automotive
- Sector
- Fleet Vehicle Management (
AUTO-FLEET) - Category
- Vehicle Lifecycle (
AUTO-FLEET-VEHICLE-LIFECYCLE) - Industry Profile
fleet-vehicle-replacementversion1.0.0- Default Profile
balanced- Default Scenario
standard- Algorithm
TOPSIS- Weight Strategy
Manual- Catalog
DKR-AUTO-RUNTIME-001, version13.9.3
Understanding This Decision
Determine Fleet Vehicle Replacement helps fleet operations teams decide which vehicle should be prioritized for replacement by balancing ownership cost, operational downtime, maintenance trend, mission criticality, and safety condition.
Business question
Which vehicle should be recommended for replacement in the selected Fleet Vehicle Management context?
Expected outcome
A ranked list of candidate vehicles with a recommended vehicle and criterion-level score evidence.
Typical users
Fleet managers, maintenance planners, operations managers, asset lifecycle teams, finance teams, and integration teams building fleet replacement workflows.
Decision boundary
Use this decision to prioritize supplied fleet vehicles. It does not replace safety inspection, regulatory review, procurement approval, driver input, or asset-disposal governance.
Architecture
- Request a token from
https://identity.vinquery.com/connect/token. - Use the returned
jwtTokenas the bearer token. - Load
https://dks.vinquery.com/decisioncatalog. - Load
https://dks.vinquery.com/decisioncatalog/decisions/AUTO-FLEET-001. - Use the industry profile
fleet-vehicle-replacementversion1.0.0. - Choose a valid
profileIdandscenarioIdfrom the decision metadata. - Submit canonical option values to
https://dde.vinquery.com/api/v1/decide. - Retain
requestIdandcorrelationIdfor tracing.
Authentication
Request a secure session token from Identity. Keep credentials server-side, cache tokens, renew before expiration, avoid duplicate concurrent token requests, and never log authorization headers.
POST https://identity.vinquery.com/connect/token
Content-Type: application/json
{
"clientId": "{clientId}",
"clientSecret": "{clientSecret}",
"audience": "vinquery:api:decisioq"
}
{
"requestId": "0HNE...",
"jwtToken": "{jwtToken}",
"tokenType": "Bearer",
"expiresIn": 1800,
"expiresUtc": "2026-07-19T00:30:00Z",
"userId": 1166,
"consumerName": "Example API Consumer",
"apiConsumerId": "00000000-0000-0000-0000-000000000000"
}
Catalog Discovery
Retrieve current metadata instead of permanently hard-coding criteria or profiles. DKS is authoritative for version-aware decision knowledge.
GET https://dks.vinquery.com/decisioncatalog
Authorization: Bearer {jwtToken}
GET https://dks.vinquery.com/decisioncatalog/decisions/AUTO-FLEET-001
Authorization: Bearer {jwtToken}
Criteria
Use exact criterionId keys. Display names can change; canonical IDs drive validation, mapping, weighting, and execution.
| Criterion ID | Name | Description | Direction | Weight | Unit | Data Type | Validation | Required |
|---|---|---|---|---|---|---|---|---|
lifecycle_cost | Lifecycle Cost | Expected financial cost associated with the vehicle over the replacement horizon. | minimize | 25 | Currency | Currency | non_negative_currency | true |
downtime_risk | Downtime Risk | Expected operating disruption or service interruption risk. | minimize | 20 | Rating | Number | rating_1_to_5 | true |
maintenance_trend | Maintenance Trend | Recent maintenance pattern indicating increasing repair burden. | minimize | 20 | Currency | Number | non_negative_currency | true |
utilization_criticality | Utilization Criticality | How important the vehicle is to day-to-day operations and service coverage. | maximize | 20 | Percentage | Number | percentage_0_to_100 | true |
safety_rating | Safety Rating | Inspection-based safety rating for continued use. | maximize | 15 | Rating | Number | rating_1_to_5 | true |
Constraint Processing
This decision currently has no catalog-defined hard constraints. All validated candidates proceed to criteria-based ranking.
| Verified Catalog Constraint | Status | Effect |
|---|---|---|
None returned by DKS for AUTO-FLEET-001 | No hard constraints defined | Candidate eligibility is determined by request validation; all validated candidates are ranked by criteria. |
{
"constraintSummary": {
"definedConstraintCount": 0,
"activeConstraintCount": 0,
"eligibleOptionCount": 3,
"excludedOptionCount": 0,
"eligibleOptions": [
"VEHICLE-001",
"VEHICLE-002",
"VEHICLE-003"
],
"excludedOptions": []
}
}
const constraints = decisionDetail.constraints || [];
if (constraints.length === 0) {
// No catalog-defined hard constraints.
// Submit all validated candidates for criteria-based ranking.
}
const summary = response.constraintSummary;
const excluded = response.decisionResult?.excludedOptions || [];
Excluded candidates do not participate in ranking because hard constraints are evaluated before scoring. For AUTO-FLEET-001, no candidates are excluded by catalog-defined constraints because DKS currently defines none for this decision.
Industry Profile
The active industry profile reads fleet asset options from $.assets, option IDs from option.assetId, and display names from option.unitName. It prepares canonical values for AUTO-FLEET-001 before DDE applies decision validation and ranking.
- Profile ID
fleet-vehicle-replacement- Version
1.0.0- Options Path
$.assets- Option ID Path
option.assetId- Display Name Path
option.unitName
| Client Business Data Path | Transformation | Canonical Criterion ID | Unit | Validation |
|---|---|---|---|---|
option.annualMaintenanceCost, option.projectedRepairCost, option.downtimeCost | sum | lifecycle_cost | Currency | non_negative_currency |
option.daysOutOfService | option.daysOutOfService * 10 | downtime_risk | Rating | rating_1_to_5 |
option.repairEventsLastYear | option.repairEventsLastYear * 12 | maintenance_trend | Currency | non_negative_currency |
option.missionCriticality | mission-criticality lookup | utilization_criticality | Percentage | percentage_0_to_100 |
option.safetyInspectionScore | direct numeric value | safety_rating | Rating | rating_1_to_5 |
{
"fleetId": "FLEET-DEMO-001",
"assets": [
{
"assetId": "VEHICLE-001",
"unitName": "Vehicle 001",
"annualMaintenanceCost": 8200,
"projectedRepairCost": 6200,
"downtimeCost": 3600,
"daysOutOfService": 0.4,
"repairEventsLastYear": 6,
"missionCriticality": 92,
"safetyInspectionScore": 4.5
}
]
}
{
"optionId": "VEHICLE-001",
"name": "Vehicle 001",
"values": {
"lifecycle_cost": 18000,
"downtime_risk": 4,
"maintenance_trend": 72,
"utilization_criticality": 92,
"safety_rating": 4.5
}
}
Profiles and Scenarios
Profiles adjust weights. Scenarios describe operating context. Both are discovered from the DKS decision detail response.
| Profile ID | Name | Purpose |
|---|---|---|
balanced | Balanced | Preserves the default criterion priorities for this fleet decision. |
cost_focused | Cost Focused | Emphasizes minimized financial and operating cost criteria. |
quality_focused | Quality Focused | Emphasizes maximized quality, value, condition, and performance criteria. |
risk_averse | Risk Averse | Emphasizes risk reduction, reliability, safety, condition, and repair exposure. |
| Scenario ID | Name | Use When |
|---|---|---|
standard | Standard Operating Scenario | Normal fleet replacement and asset lifecycle context. |
budget_reduction | Budget Reduction Scenario | Capital, cost, or budget pressure is higher than normal. |
high_demand | High Demand Scenario | Availability, demand, or throughput pressure is higher than normal. |
emergency_operations | Emergency Operations Scenario | Operational continuity and risk control outweigh routine optimization. |
Prepared Input
The active DDE catalog execution contract accepts decisionId, profileId, scenarioId, algorithm, weightStrategy, runSensitivity, requestContext, and options.
{
"decisionId": "AUTO-FLEET-001",
"profileId": "balanced",
"scenarioId": "standard",
"algorithm": "TOPSIS",
"weightStrategy": "Manual",
"runSensitivity": false,
"requestContext": {
"correlationId": "auto-fleet-001-demo-001"
},
"options": [
{
"optionId": "VEHICLE-001",
"name": "Vehicle 001",
"values": {
"lifecycle_cost": 18000,
"downtime_risk": 4,
"maintenance_trend": 72,
"utilization_criticality": 92,
"safety_rating": 4.5
}
},
{
"optionId": "VEHICLE-002",
"name": "Vehicle 002",
"values": {
"lifecycle_cost": 14500,
"downtime_risk": 3,
"maintenance_trend": 54,
"utilization_criticality": 76,
"safety_rating": 4
}
},
{
"optionId": "VEHICLE-003",
"name": "Vehicle 003",
"values": {
"lifecycle_cost": 22500,
"downtime_risk": 5,
"maintenance_trend": 98,
"utilization_criticality": 88,
"safety_rating": 3.5
}
}
]
}
Execute
curl -X POST "https://dde.vinquery.com/api/v1/decide" \
-H "Authorization: Bearer ${DECISIOQ_TOKEN}" \
-H "Content-Type: application/json" \
-H "X-Correlation-Id: auto-fleet-001-demo-001" \
--data @auto-fleet-001-execute.json
DDE retrieves authoritative criteria, profiles, scenarios, and validation metadata from DKS, composes the engine-ready request, and executes the deterministic ranking.
Interpret the Result
Use decisionResult.winner and decisionResult.ranking as the deterministic result. Scores are useful within the same run; avoid comparing raw scores across unrelated decisions or catalog versions.
{
"service": "decisioq",
"version": "7.6.3",
"requestId": "0HNE...",
"operation": "Decide",
"success": true,
"decisionType": "AUTO-FLEET-001",
"decisionVersion": "13.9.3",
"timestampUtc": "2026-07-19T00:00:00Z",
"decisionResult": {
"winner": "VEHICLE-001",
"confidence": 72.4,
"ranking": [
{
"optionId": "VEHICLE-001",
"score": 0.8421,
"breakdown": {
"lifecycle_cost": 0.25,
"utilization_criticality": 0.20
},
"normalizationBreakdown": {}
}
],
"excludedOptions": [],
"explanation": {
"summary": "Vehicle 001 ranked highest based on the submitted criteria.",
"strengths": [],
"weaknesses": [],
"exclusions": []
}
},
"constraintSummary": {
"definedConstraintCount": 0,
"activeConstraintCount": 0,
"eligibleOptionCount": 3,
"excludedOptionCount": 0,
"eligibleOptions": [
"VEHICLE-001",
"VEHICLE-002",
"VEHICLE-003"
],
"excludedOptions": []
},
"executionTrace": {
"selectedProfileId": "balanced",
"selectedScenarioId": "standard",
"weightSource": "dksProfile:balanced",
"effectiveWeights": {
"lifecycle_cost": 25,
"utilization_criticality": 20
}
},
"warnings": [],
"requestContext": {
"correlationId": "auto-fleet-001-demo-001"
}
}
decisionResult.winner.Sensitivity Analysis
Use "runSensitivity": true when the client needs evidence about recommendation stability. DecisioQ varies criterion weights by controlled factors while keeping submitted options and values fixed.
{
"runSensitivity": true,
"sensitivityResult": {
"stableWinner": true,
"winner": "VEHICLE-001",
"mostSensitiveCriterion": "lifecycle_cost",
"confidence": 95,
"criterionImpacts": {
"lifecycle_cost": 0.1842
},
"winnerChangeCounts": {
"lifecycle_cost": 0
}
}
}
Explanation of Decision Result
The Explanation Service receives the finalized deterministic result and a controlled evidence package. It is synchronous in the current execution flow when configured and returns under the vendor-neutral ai block. If explanation generation fails silently, the deterministic result remains available.
{
"ai": {
"enabled": true,
"generated": true,
"schemaValidated": true,
"explanation": {
"summary": "The selected vehicle has the strongest overall replacement priority.",
"whyRecommended": "It combined high utilization criticality with acceptable safety evidence and manageable lifecycle cost.",
"keyDrivers": [],
"tradeoffs": [],
"competitors": [],
"sensitivitySummary": "Sensitivity analysis was not included in this response.",
"scenarioSummary": "The standard operating scenario was selected.",
"risks": [],
"nextSteps": [],
"assumptions": []
}
}
}
The Explanation of Decision Result must not receive raw private vehicle files or unrestricted notes. It explains the already-finalized result; it does not select, rerank, recalculate, or override it.
Tracing and Logs
Use request identifiers to connect client, Identity, DKS, and DDE activity. Authentication and identity-security activity belongs in IdentityAuditEvents. Catalog, mapping, decision execution, sensitivity, and explanation operations belong in decisioq_log.
X-Request-Id- Optional client-supplied request ID. If omitted, DDE or DKS generates one.
X-Correlation-Id- Optional client workflow ID propagated from DDE to DKS.
requestContext.correlationId- Payload value echoed by DDE and used for execution logging.
DecisionId- Recorded for decision-specific operations. General catalog and identity operations may not have a decision ID.
| ServiceName | Operation | RequestId | CorrelationId | DecisionId | Status | Timestamp |
|---|---|---|---|---|---|---|
| Identity | Token issued | identity request | optional | Success | UTC | |
| DKS | DecisionCatalog.DecisionDefinition | DDE propagated request | auto-fleet-001-demo-001 | AUTO-FLEET-001 | Success | UTC |
| DDE | Decide | DDE request | auto-fleet-001-demo-001 | AUTO-FLEET-001 | Success | UTC |
Code Examples
These examples authenticate, retrieve AUTO-FLEET-001 metadata, validate profile and scenario selections, execute the decision, pass a correlation ID, and print the deterministic result.
DECISIOQ_CLIENT_ID
DECISIOQ_CLIENT_SECRET
Optional:
DECISIOQ_IDENTITY_URL=https://identity.vinquery.com/connect/token
DECISIOQ_DKS_URL=https://dks.vinquery.com
DECISIOQ_DDE_URL=https://dde.vinquery.com
Troubleshooting
| Symptom | Likely Cause | HTTP Status or Error | Corrective Action | Where to Investigate |
|---|---|---|---|---|
| Token rejected | Invalid credentials or access code | 401 or 400 | Request a new server-side token; do not expose credentials in browser JavaScript. | IdentityAuditEvents |
| Unknown decision ID | Decision is absent from active DKS catalog | 404 | Verify AUTO-FLEET-001 in /decisioncatalog/decisions/AUTO-FLEET-001. | DKS logs |
| Invalid profile or scenario | Request value is not listed in decision metadata | 400 | Use one of the profile or scenario IDs returned by DKS. | DDE validation logs |
| Missing criterion | Option values omit a required canonical criterion | 400 validation error | Send all five required AUTO-FLEET-001 criteria for every vehicle. | DDE validation response |
| Out-of-range value | Score outside 0-100 or negative currency value | 400 validation error | Apply score_0_to_100 and non_negative_currency before submit. | Client validation, DDE validation |
| Service unavailable | DKS, DDE, or Identity unavailable | 5xx or non-JSON upstream error | Check health endpoints and server logs. | Hosting/IIS logs and DecisioQ logs |
| Explanation unavailable | Explanation provider disabled or failed silently | Success with missing or failed ai block | Use deterministic decisionResult; treat explanation as optional. | DDE application logs |
| Download link fails | Static asset missing from website | 404 | Verify the file exists under examples/auto-fleet-001. | Website static files |
Production Checklist
Security
Keep API Consumer credentials server-side, use HTTPS, cache JWTs, renew before expiration, never log secrets, and ensure the API Consumer is linked to a DecisioQ account for usage accounting.
Knowledge and Versioning
Retrieve DKS metadata, preserve industry profile version 1.0.0, and monitor catalog version changes.
Execution Reliability
Use timeouts, cancellation tokens, structured error handling, and avoid unsafe automatic retries unless idempotency is established.
Observability
Propagate X-Correlation-Id, retain requestId, and distinguish DKS failures from DDE failures.
Explanation Safety
Persist deterministic results separately and isolate explanation failure from ranking success.
Testing
Use contract tests, validation tests, sensitivity tests, and privacy-safe vehicle samples.
