@wowok/agent-mcp 2.7.1 → 2.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/index.js +1 -1
- package/dist/config/runtime.js +1 -238
- package/dist/customer/customer-advice.js +1 -130
- package/dist/customer/index.js +1 -11
- package/dist/customer/industry-risks.js +1 -438
- package/dist/customer/info-puzzle.js +1 -681
- package/dist/customer/order-monitor.js +1 -328
- package/dist/customer/order-strategy.js +1 -373
- package/dist/customer/post-purchase.js +1 -351
- package/dist/customer/preorder-compare.js +1 -34
- package/dist/customer/reminder-system.js +1 -316
- package/dist/customer/risk-assessment.js +1 -397
- package/dist/customer/types.js +1 -13
- package/dist/customer/user-preferences.js +1 -460
- package/dist/evaluation/arbitration-game.d.ts +9 -2
- package/dist/evaluation/arbitration-game.js +1 -48
- package/dist/evaluation/builtins/demand-match.js +1 -153
- package/dist/evaluation/builtins/index.js +1 -10
- package/dist/evaluation/builtins/service-risk.js +1 -55
- package/dist/evaluation/capability.js +1 -13
- package/dist/evaluation/composer.js +1 -40
- package/dist/evaluation/engine.js +1 -175
- package/dist/evaluation/extract.js +1 -115
- package/dist/evaluation/game-strategy.d.ts +27 -0
- package/dist/evaluation/game-strategy.js +1 -0
- package/dist/evaluation/gap.js +1 -100
- package/dist/evaluation/index.d.ts +1 -0
- package/dist/evaluation/index.js +1 -11
- package/dist/evaluation/node-game.d.ts +31 -3
- package/dist/evaluation/node-game.js +1 -57
- package/dist/evaluation/region.js +1 -36
- package/dist/evaluation/types.d.ts +1 -0
- package/dist/evaluation/types.js +1 -1
- package/dist/evaluation/user-injection.js +1 -27
- package/dist/experience/experience-reuse.js +1 -103
- package/dist/experience/index.js +1 -5
- package/dist/experience/intent-distill.js +1 -83
- package/dist/experience/realtime-feedback.js +1 -94
- package/dist/experience/types.js +1 -1
- package/dist/experience/user-profile.js +1 -171
- package/dist/extensions/business-modules.js +1 -287
- package/dist/extensions/capability-manifest.js +1 -781
- package/dist/extensions/constraint-registry.js +1 -198
- package/dist/extensions/index.js +1 -6
- package/dist/extensions/metric-registry.js +1 -257
- package/dist/extensions/mode-evaluator.js +1 -170
- package/dist/extensions/modes.js +1 -499
- package/dist/extensions/registry.js +1 -717
- package/dist/extensions/types.js +1 -1
- package/dist/harness/auto-escalation.js +1 -68
- package/dist/harness/checkpoint.js +1 -129
- package/dist/harness/index.js +1 -78
- package/dist/harness/plan.js +1 -315
- package/dist/harness/recover.js +1 -139
- package/dist/harness/types.js +1 -1
- package/dist/harness/verify.js +1 -237
- package/dist/index.js +1 -273
- package/dist/intent/enrich.js +1 -67
- package/dist/intent/index.js +1 -60
- package/dist/intent/matcher.js +1 -81
- package/dist/intent/store.js +1 -55
- package/dist/intent/types.js +1 -10
- package/dist/knowledge/acquisition-flywheel.js +1 -192
- package/dist/knowledge/allocation-confirm.js +1 -534
- package/dist/knowledge/allocation-context.js +1 -249
- package/dist/knowledge/allocation-ledger.js +1 -463
- package/dist/knowledge/allocation-puzzle.js +1 -298
- package/dist/knowledge/allocation-risk.js +1 -568
- package/dist/knowledge/allocation-templates.js +1 -970
- package/dist/knowledge/allocation-translation.js +1 -585
- package/dist/knowledge/arb-risk.js +1 -210
- package/dist/knowledge/arbitration-confirm.js +1 -559
- package/dist/knowledge/arbitration-context.js +1 -505
- package/dist/knowledge/arbitration-ledger.js +1 -521
- package/dist/knowledge/arbitration-puzzle.js +1 -304
- package/dist/knowledge/arbitration-risk.js +1 -423
- package/dist/knowledge/arbitration-templates.js +1 -276
- package/dist/knowledge/arbitration-translation.js +1 -487
- package/dist/knowledge/arbitration-trust.js +1 -117
- package/dist/knowledge/audit-rules.js +1 -141
- package/dist/knowledge/bridge-risk.js +1 -263
- package/dist/knowledge/contact-risk.js +1 -200
- package/dist/knowledge/contact-templates.js +1 -60
- package/dist/knowledge/demand-confirm.js +1 -206
- package/dist/knowledge/demand-matching.js +1 -132
- package/dist/knowledge/demand-risk.js +1 -240
- package/dist/knowledge/demand-translation.js +1 -354
- package/dist/knowledge/deployment-scanner.js +1 -823
- package/dist/knowledge/dynamic-pricing.js +1 -87
- package/dist/knowledge/examples-scanner-cli.js +1 -26
- package/dist/knowledge/examples-scanner.js +1 -843
- package/dist/knowledge/flywheel-loop.js +1 -404
- package/dist/knowledge/fund-layer.js +1 -973
- package/dist/knowledge/glossary.js +1 -211
- package/dist/knowledge/guard-confirm.js +1 -406
- package/dist/knowledge/guard-context.js +1 -287
- package/dist/knowledge/guard-design-patterns.js +1 -360
- package/dist/knowledge/guard-ledger.js +1 -260
- package/dist/knowledge/guard-lint.js +1 -670
- package/dist/knowledge/guard-migration.js +1 -228
- package/dist/knowledge/guard-puzzle.js +1 -805
- package/dist/knowledge/guard-render.js +1 -700
- package/dist/knowledge/guard-risk.js +1 -1879
- package/dist/knowledge/guard-submission-prompt.js +1 -171
- package/dist/knowledge/guard-templates.js +1 -1105
- package/dist/knowledge/guard-translation.js +1 -1119
- package/dist/knowledge/index.js +1 -436
- package/dist/knowledge/industry-evolution.js +1 -323
- package/dist/knowledge/industry-generalizer.js +1 -381
- package/dist/knowledge/industry-registry.js +1 -174
- package/dist/knowledge/intent-metrics.d.ts +4 -3
- package/dist/knowledge/intent-metrics.js +1 -566
- package/dist/knowledge/machine-confirm.js +1 -559
- package/dist/knowledge/machine-context.js +1 -833
- package/dist/knowledge/machine-ledger.js +1 -338
- package/dist/knowledge/machine-puzzle.js +1 -494
- package/dist/knowledge/machine-render.js +1 -565
- package/dist/knowledge/machine-risk.js +1 -669
- package/dist/knowledge/machine-templates.js +1 -1597
- package/dist/knowledge/machine-topology.js +1 -234
- package/dist/knowledge/machine-translation.js +1 -513
- package/dist/knowledge/mcp-schema-audit-cli.js +1 -45
- package/dist/knowledge/mcp-schema-audit.js +1 -777
- package/dist/knowledge/onchain-constants.js +1 -35
- package/dist/knowledge/order-confirm.js +1 -573
- package/dist/knowledge/order-context.js +1 -390
- package/dist/knowledge/order-ledger.js +1 -341
- package/dist/knowledge/order-puzzle.js +1 -255
- package/dist/knowledge/order-risk.js +1 -653
- package/dist/knowledge/order-templates.js +1 -368
- package/dist/knowledge/order-translation.js +1 -550
- package/dist/knowledge/overrides-loader.js +1 -65
- package/dist/knowledge/passport-confirm.js +1 -531
- package/dist/knowledge/passport-context.js +1 -306
- package/dist/knowledge/passport-ledger.js +1 -282
- package/dist/knowledge/passport-puzzle.js +1 -333
- package/dist/knowledge/passport-risk.js +1 -450
- package/dist/knowledge/passport-templates.js +1 -568
- package/dist/knowledge/passport-translation.js +1 -516
- package/dist/knowledge/payment-risk.js +1 -249
- package/dist/knowledge/permission-confirm.js +1 -426
- package/dist/knowledge/permission-context.js +1 -224
- package/dist/knowledge/permission-ledger.js +1 -403
- package/dist/knowledge/permission-puzzle.js +1 -173
- package/dist/knowledge/permission-risk.js +1 -411
- package/dist/knowledge/permission-templates.js +1 -234
- package/dist/knowledge/permission-translation.js +1 -350
- package/dist/knowledge/personal-risk.js +1 -212
- package/dist/knowledge/process-model.js +1 -160
- package/dist/knowledge/progress-confirm.js +1 -456
- package/dist/knowledge/progress-context.js +1 -452
- package/dist/knowledge/progress-ledger.js +1 -330
- package/dist/knowledge/progress-puzzle.js +1 -219
- package/dist/knowledge/progress-risk.js +1 -461
- package/dist/knowledge/progress-templates.js +1 -228
- package/dist/knowledge/progress-translation.js +1 -405
- package/dist/knowledge/proof-confirm.js +1 -187
- package/dist/knowledge/proof-risk.js +1 -207
- package/dist/knowledge/proof-translation.js +1 -283
- package/dist/knowledge/registrar-risk.js +1 -217
- package/dist/knowledge/repository-confirm.js +1 -286
- package/dist/knowledge/repository-risk.js +1 -373
- package/dist/knowledge/repository-translation.js +1 -445
- package/dist/knowledge/reputation-rules.js +1 -99
- package/dist/knowledge/resource-risk.js +1 -157
- package/dist/knowledge/reward-confirm.js +1 -526
- package/dist/knowledge/reward-context.js +1 -504
- package/dist/knowledge/reward-ledger.js +1 -502
- package/dist/knowledge/reward-puzzle.js +1 -300
- package/dist/knowledge/reward-risk.js +1 -627
- package/dist/knowledge/reward-templates.js +1 -197
- package/dist/knowledge/reward-translation.js +1 -501
- package/dist/knowledge/safety-rules.js +1 -404
- package/dist/knowledge/scenario-modes.js +1 -321
- package/dist/knowledge/service-confirm.js +1 -807
- package/dist/knowledge/service-context.js +1 -403
- package/dist/knowledge/service-ledger.js +1 -609
- package/dist/knowledge/service-puzzle.js +1 -236
- package/dist/knowledge/service-risk.js +1 -651
- package/dist/knowledge/service-templates.js +1 -456
- package/dist/knowledge/service-translation.js +1 -622
- package/dist/knowledge/template-registry.js +1 -353
- package/dist/knowledge/tool-constraints.js +1 -195
- package/dist/knowledge/tools-reference.js +1 -178
- package/dist/knowledge/treasury-confirm.js +1 -512
- package/dist/knowledge/treasury-context.js +1 -363
- package/dist/knowledge/treasury-ledger.js +1 -300
- package/dist/knowledge/treasury-puzzle.js +1 -216
- package/dist/knowledge/treasury-risk.js +1 -440
- package/dist/knowledge/treasury-templates.js +1 -358
- package/dist/knowledge/treasury-translation.js +1 -498
- package/dist/knowledge/trust-metrics.js +1 -198
- package/dist/knowledge/util-risk.js +1 -135
- package/dist/loop-engineering/aggregate.js +1 -132
- package/dist/loop-engineering/context-collect.js +1 -83
- package/dist/loop-engineering/diagnose.js +1 -273
- package/dist/loop-engineering/improve.js +1 -405
- package/dist/loop-engineering/index.js +1 -4
- package/dist/loop-engineering/pipeline.js +1 -56
- package/dist/mode-market/index.js +1 -3
- package/dist/mode-market/registry.js +1 -124
- package/dist/mode-market/review.js +1 -214
- package/dist/mode-market/submission.js +1 -85
- package/dist/participation/collaborator-interest.d.ts +23 -0
- package/dist/participation/collaborator-interest.js +1 -0
- package/dist/participation/customer-interest.d.ts +25 -0
- package/dist/participation/customer-interest.js +1 -0
- package/dist/participation/merchant-interest.js +1 -100
- package/dist/participation/radar-core.d.ts +13 -3
- package/dist/participation/radar-core.js +1 -269
- package/dist/participation/supplier-interest.d.ts +25 -0
- package/dist/participation/supplier-interest.js +1 -0
- package/dist/persona/analyzer.js +1 -66
- package/dist/persona/bridge.js +1 -86
- package/dist/persona/defaults.js +1 -195
- package/dist/persona/experience-bridge.js +1 -23
- package/dist/persona/index.js +1 -71
- package/dist/persona/model.js +1 -111
- package/dist/persona/store.js +1 -62
- package/dist/persona/types.d.ts +3 -1
- package/dist/persona/types.js +1 -5
- package/dist/project/business-puzzle.js +1 -383
- package/dist/project/context-assembly.js +1 -254
- package/dist/project/deployment-bridge.js +1 -120
- package/dist/project/deployment-doc.js +1 -1126
- package/dist/project/edit-planner.js +1 -1342
- package/dist/project/evaluation.js +1 -2011
- package/dist/project/game-theory.js +1 -177
- package/dist/project/graph-builder.js +1 -656
- package/dist/project/graph.js +1 -340
- package/dist/project/handlers.js +1 -1784
- package/dist/project/index.d.ts +1 -0
- package/dist/project/index.js +1 -301
- package/dist/project/intent-analyzer.js +1 -149
- package/dist/project/machine-nodes.js +1 -36
- package/dist/project/merchant-guide.js +1 -264
- package/dist/project/migration.js +1 -125
- package/dist/project/mode-actions.js +1 -309
- package/dist/project/namespace.js +1 -206
- package/dist/project/participation-radar.js +1 -428
- package/dist/project/pipeline-actions.js +1 -109
- package/dist/project/project-store.js +1 -422
- package/dist/project/query.js +1 -153
- package/dist/project/reverse-mapping.d.ts +34 -0
- package/dist/project/reverse-mapping.js +1 -0
- package/dist/project/risk-aggregator.js +1 -295
- package/dist/project/rollback-policy.js +1 -290
- package/dist/project/semantic-assembler.js +1 -345
- package/dist/project/semantic-graph.js +1 -292
- package/dist/project/stage-gate.js +1 -369
- package/dist/project/substep-trace.js +1 -332
- package/dist/project/task-tracker.js +1 -78
- package/dist/role/derivation.d.ts +18 -0
- package/dist/role/derivation.js +1 -0
- package/dist/role/index.d.ts +5 -0
- package/dist/role/index.js +1 -0
- package/dist/role/model.d.ts +8 -0
- package/dist/role/model.js +1 -0
- package/dist/role/resolution.d.ts +11 -0
- package/dist/role/resolution.js +1 -0
- package/dist/role/types.d.ts +11 -0
- package/dist/role/types.js +1 -0
- package/dist/rules.js +1 -52
- package/dist/safety/confirm-gate.js +1 -88
- package/dist/safety/index.js +1 -3
- package/dist/safety/preview.js +1 -52
- package/dist/schema/call/allocation.js +1 -34
- package/dist/schema/call/arbitration.js +1 -113
- package/dist/schema/call/base.d.ts +15 -15
- package/dist/schema/call/base.js +1 -370
- package/dist/schema/call/bridge-handler.js +1 -265
- package/dist/schema/call/bridge.d.ts +7 -7
- package/dist/schema/call/bridge.js +1 -458
- package/dist/schema/call/contact.js +1 -37
- package/dist/schema/call/demand.js +1 -47
- package/dist/schema/call/guard.js +1 -161
- package/dist/schema/call/handler.js +1 -322
- package/dist/schema/call/index.js +1 -20
- package/dist/schema/call/machine.js +1 -193
- package/dist/schema/call/order.js +1 -35
- package/dist/schema/call/payment.js +1 -37
- package/dist/schema/call/permission-handler.js +1 -54
- package/dist/schema/call/permission.js +1 -105
- package/dist/schema/call/personal.js +1 -78
- package/dist/schema/call/progress.js +1 -47
- package/dist/schema/call/proof.js +1 -33
- package/dist/schema/call/repository.js +1 -77
- package/dist/schema/call/reward.js +1 -30
- package/dist/schema/call/semantic.js +1 -1679
- package/dist/schema/call/service.js +1 -184
- package/dist/schema/call/treasury.js +1 -71
- package/dist/schema/common/index.js +1 -407
- package/dist/schema/config/index.js +1 -68
- package/dist/schema/evaluation/index.d.ts +213 -16
- package/dist/schema/evaluation/index.js +1 -356
- package/dist/schema/index.js +1 -17
- package/dist/schema/intent-radar/index.d.ts +13 -13
- package/dist/schema/intent-radar/index.js +1 -89
- package/dist/schema/local/index.d.ts +21 -21
- package/dist/schema/local/index.js +1 -927
- package/dist/schema/local/wip.js +1 -187
- package/dist/schema/messenger/index.d.ts +7 -7
- package/dist/schema/messenger/index.js +1 -475
- package/dist/schema/operations.d.ts +7 -7
- package/dist/schema/operations.js +1 -520
- package/dist/schema/persona/index.d.ts +54 -54
- package/dist/schema/persona/index.js +1 -148
- package/dist/schema/project/index.d.ts +94 -48
- package/dist/schema/project/index.js +1 -2057
- package/dist/schema/query/index.d.ts +423 -7
- package/dist/schema/query/index.js +1 -1646
- package/dist/schema/schema-query/index.js +1 -104
- package/dist/schema/schema-version.js +1 -76
- package/dist/schema/sync-layer4.js +1 -286
- package/dist/schema/task-status.js +1 -36
- package/dist/schema/trust/index.js +1 -314
- package/dist/schema/utils/guard-parser.js +1 -419
- package/dist/schema/utils/guard-query-utils.js +1 -46
- package/dist/schema/utils/node-parser.js +1 -369
- package/dist/schema/utils/object-type-utils.js +1 -35
- package/dist/schema/utils/permission-index-utils.js +1 -7
- package/dist/schema/utils/permission-machine-check.js +1 -121
- package/dist/schema/utils/skills-recommendation.js +1 -77
- package/dist/schema-query/index.js +1 -810
- package/dist/schemas/account_operation.output.json +5 -2
- package/dist/schemas/bridge_operation.output.json +5 -2
- package/dist/schemas/evaluation_operation.output.json +112 -7
- package/dist/schemas/evaluation_operation.schema.json +93 -6
- package/dist/schemas/index.json +1 -1
- package/dist/schemas/intent_radar.output.json +4 -1
- package/dist/schemas/intent_radar.schema.json +4 -1
- package/dist/schemas/local_info_operation.output.json +5 -2
- package/dist/schemas/local_mark_operation.output.json +5 -2
- package/dist/schemas/messenger_operation.output.json +5 -2
- package/dist/schemas/onchain_events.output.json +5 -2
- package/dist/schemas/onchain_operations.output.json +5 -2
- package/dist/schemas/onchain_operations.schema.json +4 -4
- package/dist/schemas/onchain_operations_allocation.schema.json +1 -1
- package/dist/schemas/onchain_operations_machine.schema.json +2 -2
- package/dist/schemas/onchain_operations_service.schema.json +1 -1
- package/dist/schemas/onchain_table_data.output.json +6 -3
- package/dist/schemas/persona_operation.output.json +4 -1
- package/dist/schemas/persona_operation.schema.json +4 -1
- package/dist/schemas/project_operation.output.json +28 -8
- package/dist/schemas/query_toolkit.output.json +8 -5
- package/dist/schemas/wowok_buildin_info.output.json +132 -0
- package/dist/schemas/wowok_buildin_info.schema.json +14 -0
- package/dist/telemetry/index.js +1 -112
- package/dist/telemetry/redact.js +1 -23
- package/dist/telemetry/storage.js +1 -80
- package/dist/tools/handlers/bridge.js +1 -1
- package/dist/tools/handlers/config.js +1 -74
- package/dist/tools/handlers/evaluation.js +1 -123
- package/dist/tools/handlers/file-export.js +1 -90
- package/dist/tools/handlers/intent-radar.js +1 -76
- package/dist/tools/handlers/local.js +1 -53
- package/dist/tools/handlers/messenger.js +1 -188
- package/dist/tools/handlers/onchain.js +1 -1180
- package/dist/tools/handlers/persona.js +1 -89
- package/dist/tools/handlers/project.js +1 -211
- package/dist/tools/handlers/query.js +1 -434
- package/dist/tools/handlers/schema-query.js +1 -176
- package/dist/tools/handlers/task-status.js +1 -26
- package/dist/tools/handlers/trust.js +1 -380
- package/dist/tools/handlers/wip.js +1 -90
- package/dist/tools/index.js +1 -1382
- package/dist/tools/retry.js +1 -85
- package/dist/tools/rules-hook.js +1 -23
- package/dist/tools/shared.js +1 -130
- package/dist/tools/types.js +1 -1
- package/dist/tools/upgrade-check.d.ts +19 -0
- package/dist/tools/upgrade-check.js +1 -0
- package/dist/tools/wip-deploy-assist.js +1 -306
- package/dist/tools/wrap.js +1 -500
- package/package.json +4 -2
|
@@ -1,566 +1 @@
|
|
|
1
|
-
import { INDUSTRY_EVOLUTION_THRESHOLDS } from "./industry-evolution.js";
|
|
2
|
-
export const BUILTIN_INTENT_SPECS = {
|
|
3
|
-
default: {
|
|
4
|
-
intent: "default",
|
|
5
|
-
display_name: "Default (Phase 4 original model)",
|
|
6
|
-
weights: {
|
|
7
|
-
completed_rate: 35,
|
|
8
|
-
dispute_rate: 25,
|
|
9
|
-
refund_rate: 15,
|
|
10
|
-
repeat_buyer_rate: 15,
|
|
11
|
-
cycle_efficiency: 10,
|
|
12
|
-
},
|
|
13
|
-
healthy_thresholds: {
|
|
14
|
-
completed_rate: 0.9,
|
|
15
|
-
dispute_rate: 0.05,
|
|
16
|
-
refund_rate: 0.05,
|
|
17
|
-
repeat_buyer_rate: 0.3,
|
|
18
|
-
cycle_efficiency: 24 * 7,
|
|
19
|
-
},
|
|
20
|
-
suggestion_triggers: [],
|
|
21
|
-
level_thresholds: { thriving: 85, healthy: 65, stressed: 45 },
|
|
22
|
-
},
|
|
23
|
-
growth: {
|
|
24
|
-
intent: "growth",
|
|
25
|
-
display_name: "Growth (focus on new customers, repurchase, order-volume growth)",
|
|
26
|
-
weights: {
|
|
27
|
-
repeat_buyer_rate: 35,
|
|
28
|
-
completed_rate: 25,
|
|
29
|
-
dispute_rate: 15,
|
|
30
|
-
refund_rate: 10,
|
|
31
|
-
cycle_efficiency: 15,
|
|
32
|
-
},
|
|
33
|
-
healthy_thresholds: {
|
|
34
|
-
completed_rate: 0.85,
|
|
35
|
-
dispute_rate: 0.08,
|
|
36
|
-
repeat_buyer_rate: 0.25,
|
|
37
|
-
cycle_efficiency: 24 * 14,
|
|
38
|
-
},
|
|
39
|
-
suggestion_triggers: [
|
|
40
|
-
{
|
|
41
|
-
metric: "repeat_buyer_rate",
|
|
42
|
-
operator: ">=",
|
|
43
|
-
threshold: 0.3,
|
|
44
|
-
suggestion_type: "update_flywheel",
|
|
45
|
-
field: "flywheel.rewardStrategy",
|
|
46
|
-
suggested_value: "Strengthen loyalty Reward + tiered repurchase reward + referral cashback",
|
|
47
|
-
evidence_template: "Under growth intent, repurchase rate {value}% ≥ {threshold}%; recommend strengthening the loyalty flywheel",
|
|
48
|
-
confidence: 0.85,
|
|
49
|
-
priority: "high",
|
|
50
|
-
target_roles: ["merchant"],
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
metric: "repeat_buyer_rate",
|
|
54
|
-
operator: "<",
|
|
55
|
-
threshold: 0.15,
|
|
56
|
-
suggestion_type: "update_flywheel",
|
|
57
|
-
field: "flywheel.rewardStrategy",
|
|
58
|
-
suggested_value: "First-order reward + 7-day repurchase discount + referral cashback",
|
|
59
|
-
evidence_template: "Under growth intent, repurchase rate {value}% < {threshold}%; recommend strengthening first-order incentives",
|
|
60
|
-
confidence: 0.75,
|
|
61
|
-
priority: "medium",
|
|
62
|
-
target_roles: ["merchant"],
|
|
63
|
-
},
|
|
64
|
-
],
|
|
65
|
-
level_thresholds: { thriving: 80, healthy: 60, stressed: 40 },
|
|
66
|
-
role_advice_routing: {
|
|
67
|
-
user: ["Focus on repurchase Reward and referral cashback"],
|
|
68
|
-
merchant: ["Strengthen the loyalty flywheel", "Optimize first-order conversion", "Increase Reward investment"],
|
|
69
|
-
arbitrator: [],
|
|
70
|
-
},
|
|
71
|
-
},
|
|
72
|
-
retention: {
|
|
73
|
-
intent: "retention",
|
|
74
|
-
display_name: "Retention (focus on repurchase, disputes, refunds)",
|
|
75
|
-
weights: {
|
|
76
|
-
repeat_buyer_rate: 30,
|
|
77
|
-
dispute_rate: 30,
|
|
78
|
-
refund_rate: 25,
|
|
79
|
-
completed_rate: 15,
|
|
80
|
-
cycle_efficiency: 0,
|
|
81
|
-
},
|
|
82
|
-
healthy_thresholds: {
|
|
83
|
-
completed_rate: 0.8,
|
|
84
|
-
dispute_rate: 0.05,
|
|
85
|
-
refund_rate: 0.05,
|
|
86
|
-
repeat_buyer_rate: 0.25,
|
|
87
|
-
},
|
|
88
|
-
suggestion_triggers: [
|
|
89
|
-
{
|
|
90
|
-
metric: "dispute_rate",
|
|
91
|
-
operator: ">",
|
|
92
|
-
threshold: 0.1,
|
|
93
|
-
suggestion_type: "add_risk_check",
|
|
94
|
-
field: "risk_checks",
|
|
95
|
-
suggested_value: {
|
|
96
|
-
id: "retention_dispute_check",
|
|
97
|
-
description: "Retention intent: high dispute rate; recommend mandatory arbitration + compensation fund",
|
|
98
|
-
weight: 35,
|
|
99
|
-
},
|
|
100
|
-
evidence_template: "Under retention intent, dispute rate {value}% > {threshold}%; recommend strengthening dispute-resolution channels",
|
|
101
|
-
confidence: 0.85,
|
|
102
|
-
priority: "high",
|
|
103
|
-
target_roles: ["merchant", "arbitrator"],
|
|
104
|
-
},
|
|
105
|
-
{
|
|
106
|
-
metric: "refund_rate",
|
|
107
|
-
operator: ">",
|
|
108
|
-
threshold: 0.1,
|
|
109
|
-
suggestion_type: "adjust_preference",
|
|
110
|
-
field: "preference_template.require_arbitration",
|
|
111
|
-
suggested_value: true,
|
|
112
|
-
evidence_template: "Under retention intent, refund rate {value}% > {threshold}%; recommend mandatory arbitration",
|
|
113
|
-
confidence: 0.8,
|
|
114
|
-
priority: "high",
|
|
115
|
-
target_roles: ["user", "merchant"],
|
|
116
|
-
},
|
|
117
|
-
],
|
|
118
|
-
level_thresholds: { thriving: 80, healthy: 60, stressed: 45 },
|
|
119
|
-
role_advice_routing: {
|
|
120
|
-
user: ["Prefer merchants with arbitration", "Pay attention to refund policy"],
|
|
121
|
-
merchant: ["Reduce dispute rate", "Optimize refund process", "Strengthen delivery quality"],
|
|
122
|
-
arbitrator: ["Watch high-dispute industries", "Proactively provide dispute-resolution channels"],
|
|
123
|
-
},
|
|
124
|
-
},
|
|
125
|
-
compliance: {
|
|
126
|
-
intent: "compliance",
|
|
127
|
-
display_name: "Compliance (focus on arbitration, compensation fund, regulation)",
|
|
128
|
-
weights: {
|
|
129
|
-
arbitration_coverage: 35,
|
|
130
|
-
compensation_coverage: 30,
|
|
131
|
-
dispute_rate: 20,
|
|
132
|
-
refund_rate: 15,
|
|
133
|
-
completed_rate: 0,
|
|
134
|
-
repeat_buyer_rate: 0,
|
|
135
|
-
cycle_efficiency: 0,
|
|
136
|
-
},
|
|
137
|
-
healthy_thresholds: {
|
|
138
|
-
arbitration_coverage: 1.0,
|
|
139
|
-
compensation_coverage: 0.8,
|
|
140
|
-
dispute_rate: 0.05,
|
|
141
|
-
},
|
|
142
|
-
suggestion_triggers: [
|
|
143
|
-
{
|
|
144
|
-
metric: "arbitration_coverage",
|
|
145
|
-
operator: "<",
|
|
146
|
-
threshold: 1.0,
|
|
147
|
-
suggestion_type: "adjust_preference",
|
|
148
|
-
field: "preference_template.require_arbitration",
|
|
149
|
-
suggested_value: true,
|
|
150
|
-
evidence_template: "Under compliance intent, arbitration coverage {value}% < 100%; recommend mandatory arbitration configuration",
|
|
151
|
-
confidence: 0.95,
|
|
152
|
-
priority: "high",
|
|
153
|
-
target_roles: ["merchant", "arbitrator"],
|
|
154
|
-
},
|
|
155
|
-
{
|
|
156
|
-
metric: "compensation_coverage",
|
|
157
|
-
operator: "<",
|
|
158
|
-
threshold: 0.8,
|
|
159
|
-
suggestion_type: "add_risk_check",
|
|
160
|
-
field: "risk_checks",
|
|
161
|
-
suggested_value: {
|
|
162
|
-
id: "compliance_compensation_check",
|
|
163
|
-
description: "Compliance intent: compensation fund coverage insufficient",
|
|
164
|
-
weight: 40,
|
|
165
|
-
},
|
|
166
|
-
evidence_template: "Under compliance intent, compensation fund coverage {value}% < {threshold}%; recommend increasing the compensation fund",
|
|
167
|
-
confidence: 0.9,
|
|
168
|
-
priority: "high",
|
|
169
|
-
target_roles: ["merchant"],
|
|
170
|
-
},
|
|
171
|
-
],
|
|
172
|
-
level_thresholds: { thriving: 90, healthy: 70, stressed: 50 },
|
|
173
|
-
role_advice_routing: {
|
|
174
|
-
user: ["Only transact with merchants that have arbitration", "Confirm compensation fund adequacy"],
|
|
175
|
-
merchant: ["Configure arbitration", "Increase compensation fund", "Compliance first"],
|
|
176
|
-
arbitrator: ["Proactively monitor highly regulated industries", "Provide compliance consulting"],
|
|
177
|
-
},
|
|
178
|
-
},
|
|
179
|
-
efficiency: {
|
|
180
|
-
intent: "efficiency",
|
|
181
|
-
display_name: "Efficiency (focus on cycle, milestones, communication)",
|
|
182
|
-
weights: {
|
|
183
|
-
cycle_efficiency: 45,
|
|
184
|
-
milestone_adoption: 25,
|
|
185
|
-
completed_rate: 20,
|
|
186
|
-
dispute_rate: 10,
|
|
187
|
-
refund_rate: 0,
|
|
188
|
-
repeat_buyer_rate: 0,
|
|
189
|
-
},
|
|
190
|
-
healthy_thresholds: {
|
|
191
|
-
cycle_efficiency: 24 * 3,
|
|
192
|
-
milestone_adoption: 0.6,
|
|
193
|
-
completed_rate: 0.9,
|
|
194
|
-
},
|
|
195
|
-
suggestion_triggers: [
|
|
196
|
-
{
|
|
197
|
-
metric: "cycle_efficiency",
|
|
198
|
-
operator: ">",
|
|
199
|
-
threshold: 24 * 14,
|
|
200
|
-
suggestion_type: "adjust_preference",
|
|
201
|
-
field: "preference_template.max_acceptable_cycle",
|
|
202
|
-
suggested_value: 14,
|
|
203
|
-
evidence_template: "Under efficiency intent, average cycle {value} hours > {threshold} hours; recommend shortening the maximum acceptable cycle",
|
|
204
|
-
confidence: 0.8,
|
|
205
|
-
priority: "high",
|
|
206
|
-
target_roles: ["merchant"],
|
|
207
|
-
},
|
|
208
|
-
{
|
|
209
|
-
metric: "milestone_adoption",
|
|
210
|
-
operator: "<",
|
|
211
|
-
threshold: 0.4,
|
|
212
|
-
suggestion_type: "update_flywheel",
|
|
213
|
-
field: "flywheel.keyActions",
|
|
214
|
-
suggested_value: "Add milestone nodes + phased-acceptance Reward",
|
|
215
|
-
evidence_template: "Under efficiency intent, milestone adoption {value}% < {threshold}%; recommend introducing milestones",
|
|
216
|
-
confidence: 0.75,
|
|
217
|
-
priority: "medium",
|
|
218
|
-
target_roles: ["merchant"],
|
|
219
|
-
},
|
|
220
|
-
],
|
|
221
|
-
level_thresholds: { thriving: 85, healthy: 65, stressed: 45 },
|
|
222
|
-
role_advice_routing: {
|
|
223
|
-
user: ["Prefer merchants with milestones"],
|
|
224
|
-
merchant: ["Optimize Machine node splitting", "Introduce milestone acceptance", "Shorten the delivery cycle"],
|
|
225
|
-
arbitrator: [],
|
|
226
|
-
},
|
|
227
|
-
},
|
|
228
|
-
trust_building: {
|
|
229
|
-
intent: "trust_building",
|
|
230
|
-
display_name: "Trust building (focus on arbitration independence, reviews, compensation fund)",
|
|
231
|
-
weights: {
|
|
232
|
-
arbitration_coverage: 25,
|
|
233
|
-
compensation_coverage: 25,
|
|
234
|
-
review_openness: 20,
|
|
235
|
-
dispute_rate: 15,
|
|
236
|
-
completed_rate: 15,
|
|
237
|
-
repeat_buyer_rate: 0,
|
|
238
|
-
refund_rate: 0,
|
|
239
|
-
cycle_efficiency: 0,
|
|
240
|
-
},
|
|
241
|
-
healthy_thresholds: {
|
|
242
|
-
arbitration_coverage: 1.0,
|
|
243
|
-
compensation_coverage: 0.8,
|
|
244
|
-
review_openness: 0.5,
|
|
245
|
-
dispute_rate: 0.05,
|
|
246
|
-
},
|
|
247
|
-
suggestion_triggers: [
|
|
248
|
-
{
|
|
249
|
-
metric: "review_openness",
|
|
250
|
-
operator: "<",
|
|
251
|
-
threshold: 0.3,
|
|
252
|
-
suggestion_type: "update_flywheel",
|
|
253
|
-
field: "flywheel.trustSellingPoints",
|
|
254
|
-
suggested_value: "On-chain public reviews + higher weight for credential-backed reviews",
|
|
255
|
-
evidence_template: "Under trust-building intent, review openness {value}% < {threshold}%; recommend introducing public reviews",
|
|
256
|
-
confidence: 0.8,
|
|
257
|
-
priority: "medium",
|
|
258
|
-
target_roles: ["merchant"],
|
|
259
|
-
},
|
|
260
|
-
{
|
|
261
|
-
metric: "arbitration_coverage",
|
|
262
|
-
operator: "<",
|
|
263
|
-
threshold: 1.0,
|
|
264
|
-
suggestion_type: "add_risk_check",
|
|
265
|
-
field: "risk_checks",
|
|
266
|
-
suggested_value: {
|
|
267
|
-
id: "trust_arbitration_check",
|
|
268
|
-
description: "Trust building: arbitration not configured",
|
|
269
|
-
weight: 35,
|
|
270
|
-
},
|
|
271
|
-
evidence_template: "Under trust-building intent, arbitration coverage {value}% < 100%; recommend mandatory arbitration configuration",
|
|
272
|
-
confidence: 0.9,
|
|
273
|
-
priority: "high",
|
|
274
|
-
target_roles: ["merchant", "arbitrator"],
|
|
275
|
-
},
|
|
276
|
-
],
|
|
277
|
-
level_thresholds: { thriving: 85, healthy: 65, stressed: 50 },
|
|
278
|
-
role_advice_routing: {
|
|
279
|
-
user: ["View public reviews", "Confirm arbitration independence"],
|
|
280
|
-
merchant: ["Introduce a public review Repository", "Configure arbitration", "Increase compensation fund"],
|
|
281
|
-
arbitrator: ["Maintain independence", "Proactively disclose verdict rationale"],
|
|
282
|
-
},
|
|
283
|
-
},
|
|
284
|
-
custom: {
|
|
285
|
-
intent: "custom",
|
|
286
|
-
display_name: "Custom (registered at runtime)",
|
|
287
|
-
weights: {},
|
|
288
|
-
healthy_thresholds: {},
|
|
289
|
-
suggestion_triggers: [],
|
|
290
|
-
},
|
|
291
|
-
};
|
|
292
|
-
const intentRegistry = new Map();
|
|
293
|
-
for (const [k, v] of Object.entries(BUILTIN_INTENT_SPECS)) {
|
|
294
|
-
intentRegistry.set(k, v);
|
|
295
|
-
}
|
|
296
|
-
export function registerIntentProfile(spec) {
|
|
297
|
-
if (!spec.intent || !spec.weights)
|
|
298
|
-
return false;
|
|
299
|
-
intentRegistry.set(spec.intent, spec);
|
|
300
|
-
return true;
|
|
301
|
-
}
|
|
302
|
-
export function getIntentProfile(intent) {
|
|
303
|
-
return intentRegistry.get(intent);
|
|
304
|
-
}
|
|
305
|
-
export function listIntents() {
|
|
306
|
-
return Array.from(intentRegistry.keys());
|
|
307
|
-
}
|
|
308
|
-
export function _resetIntentRegistryForTest() {
|
|
309
|
-
intentRegistry.clear();
|
|
310
|
-
for (const [k, v] of Object.entries(BUILTIN_INTENT_SPECS)) {
|
|
311
|
-
intentRegistry.set(k, v);
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
export function evaluateIndustryHealthByIntent(industry, metrics, intent = "default") {
|
|
315
|
-
const spec = intentRegistry.get(intent) ?? intentRegistry.get("default");
|
|
316
|
-
const weights = spec.weights;
|
|
317
|
-
const thresholds = spec.healthy_thresholds;
|
|
318
|
-
const totalWeight = Object.values(weights).reduce((s, w) => s + (w ?? 0), 0) || 100;
|
|
319
|
-
const strengths = [];
|
|
320
|
-
const weaknesses = [];
|
|
321
|
-
const recommendations = [];
|
|
322
|
-
if (metrics.sample_size < INDUSTRY_EVOLUTION_THRESHOLDS.min_sample_size) {
|
|
323
|
-
weaknesses.push(`Insufficient sample size (${metrics.sample_size} < ${INDUSTRY_EVOLUTION_THRESHOLDS.min_sample_size}); evaluation confidence is low`);
|
|
324
|
-
recommendations.push("Continue accumulating order data to improve evaluation accuracy");
|
|
325
|
-
}
|
|
326
|
-
let healthScore = 0;
|
|
327
|
-
const wCompleted = weights.completed_rate ?? 0;
|
|
328
|
-
if (wCompleted > 0) {
|
|
329
|
-
const score = metrics.completed_rate * wCompleted;
|
|
330
|
-
healthScore += score;
|
|
331
|
-
const thr = thresholds.completed_rate ?? 0.9;
|
|
332
|
-
if (metrics.completed_rate >= thr) {
|
|
333
|
-
strengths.push(`High completion rate (${Math.round(metrics.completed_rate * 100)}%)`);
|
|
334
|
-
}
|
|
335
|
-
else if (metrics.completed_rate < thr * 0.8) {
|
|
336
|
-
weaknesses.push(`Low completion rate (${Math.round(metrics.completed_rate * 100)}%)`);
|
|
337
|
-
recommendations.push("Investigate the root cause of incomplete orders; strengthen Messenger communication");
|
|
338
|
-
}
|
|
339
|
-
}
|
|
340
|
-
const wDispute = weights.dispute_rate ?? 0;
|
|
341
|
-
if (wDispute > 0) {
|
|
342
|
-
const score = (1 - Math.min(1, metrics.dispute_rate)) * wDispute;
|
|
343
|
-
healthScore += score;
|
|
344
|
-
const thr = thresholds.dispute_rate ?? 0.05;
|
|
345
|
-
if (metrics.dispute_rate <= thr) {
|
|
346
|
-
strengths.push(`Low dispute rate (${Math.round(metrics.dispute_rate * 100)}%)`);
|
|
347
|
-
}
|
|
348
|
-
else if (metrics.dispute_rate > thr * 2) {
|
|
349
|
-
weaknesses.push(`High dispute rate (${Math.round(metrics.dispute_rate * 100)}%)`);
|
|
350
|
-
recommendations.push("Dispute rate exceeds threshold; recommend mandatory arbitration + compensation fund + delivery Guard");
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
const wRefund = weights.refund_rate ?? 0;
|
|
354
|
-
if (wRefund > 0) {
|
|
355
|
-
const score = (1 - Math.min(1, metrics.refund_rate)) * wRefund;
|
|
356
|
-
healthScore += score;
|
|
357
|
-
if (metrics.refund_rate > 0.2) {
|
|
358
|
-
weaknesses.push(`High refund rate (${Math.round(metrics.refund_rate * 100)}%)`);
|
|
359
|
-
recommendations.push("Abnormal refund rate; recommend checking delivery quality or product description consistency");
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
const wRepeat = weights.repeat_buyer_rate ?? 0;
|
|
363
|
-
if (wRepeat > 0) {
|
|
364
|
-
const score = Math.min(1, metrics.repeat_buyer_rate) * wRepeat;
|
|
365
|
-
healthScore += score;
|
|
366
|
-
const thr = thresholds.repeat_buyer_rate ?? 0.25;
|
|
367
|
-
if (metrics.repeat_buyer_rate >= thr) {
|
|
368
|
-
strengths.push(`High repurchase rate (${Math.round(metrics.repeat_buyer_rate * 100)}%)`);
|
|
369
|
-
}
|
|
370
|
-
else if (metrics.repeat_buyer_rate < thr * 0.5 && metrics.sample_size >= 20) {
|
|
371
|
-
weaknesses.push(`Low repurchase rate (${Math.round(metrics.repeat_buyer_rate * 100)}%)`);
|
|
372
|
-
recommendations.push("Low repurchase rate; recommend setting loyalty Reward + referral cashback");
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
const wCycle = weights.cycle_efficiency ?? 0;
|
|
376
|
-
if (wCycle > 0 && metrics.avg_cycle_hours > 0) {
|
|
377
|
-
const cycleScore = Math.max(0, Math.min(1, 1 - (metrics.avg_cycle_hours / 24 - 7) / 23));
|
|
378
|
-
healthScore += cycleScore * wCycle;
|
|
379
|
-
const thr = thresholds.cycle_efficiency ?? 24 * 7;
|
|
380
|
-
if (metrics.avg_cycle_hours <= thr) {
|
|
381
|
-
strengths.push(`Short delivery cycle (${Math.round(metrics.avg_cycle_hours)} hours)`);
|
|
382
|
-
}
|
|
383
|
-
else if (metrics.avg_cycle_hours > 24 * 30) {
|
|
384
|
-
weaknesses.push(`Long delivery cycle (${Math.round(metrics.avg_cycle_hours / 24)} days)`);
|
|
385
|
-
recommendations.push("Delivery cycle too long; recommend optimizing Machine node splitting");
|
|
386
|
-
}
|
|
387
|
-
}
|
|
388
|
-
const wArb = weights.arbitration_coverage ?? 0;
|
|
389
|
-
if (wArb > 0) {
|
|
390
|
-
const hasArbAnomaly = metrics.anomalies.some((a) => a.includes("arbitration"));
|
|
391
|
-
const coverage = hasArbAnomaly ? 0 : 1;
|
|
392
|
-
const score = coverage * wArb;
|
|
393
|
-
healthScore += score;
|
|
394
|
-
if (coverage < 1) {
|
|
395
|
-
weaknesses.push("Insufficient arbitration coverage");
|
|
396
|
-
recommendations.push("Recommend mandatory arbitration configuration (required under compliance/trust intents)");
|
|
397
|
-
}
|
|
398
|
-
}
|
|
399
|
-
const wComp = weights.compensation_coverage ?? 0;
|
|
400
|
-
if (wComp > 0) {
|
|
401
|
-
const hasCompAnomaly = metrics.anomalies.some((a) => a.includes("compensation fund"));
|
|
402
|
-
const coverage = hasCompAnomaly ? 0 : 1;
|
|
403
|
-
const score = coverage * wComp;
|
|
404
|
-
healthScore += score;
|
|
405
|
-
if (coverage < 0.8) {
|
|
406
|
-
weaknesses.push("Insufficient compensation fund coverage");
|
|
407
|
-
recommendations.push("Recommend increasing the compensation_fund balance");
|
|
408
|
-
}
|
|
409
|
-
}
|
|
410
|
-
const wMilestone = weights.milestone_adoption ?? 0;
|
|
411
|
-
if (wMilestone > 0) {
|
|
412
|
-
const adoptionSignal = metrics.trait_signals.long_cycle === true ? 0.6 : 0.3;
|
|
413
|
-
const score = adoptionSignal * wMilestone;
|
|
414
|
-
healthScore += score;
|
|
415
|
-
if (adoptionSignal < 0.4) {
|
|
416
|
-
weaknesses.push("Low milestone adoption rate");
|
|
417
|
-
recommendations.push("Recommend introducing milestone nodes + phased acceptance");
|
|
418
|
-
}
|
|
419
|
-
}
|
|
420
|
-
const wReview = weights.review_openness ?? 0;
|
|
421
|
-
if (wReview > 0) {
|
|
422
|
-
const hasReviewPattern = metrics.emerging_patterns.some((p) => p.includes("review"));
|
|
423
|
-
const openness = hasReviewPattern ? 0.6 : 0.3;
|
|
424
|
-
const score = openness * wReview;
|
|
425
|
-
healthScore += score;
|
|
426
|
-
if (openness < 0.4) {
|
|
427
|
-
weaknesses.push("Low review openness");
|
|
428
|
-
recommendations.push("Recommend introducing a public review Repository");
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
const normalizedScore = Math.round((healthScore / totalWeight) * 100);
|
|
432
|
-
const lvlThr = spec.level_thresholds ?? {};
|
|
433
|
-
const thrivingThr = lvlThr.thriving ?? 85;
|
|
434
|
-
const healthyThr = lvlThr.healthy ?? 65;
|
|
435
|
-
const stressedThr = lvlThr.stressed ?? 45;
|
|
436
|
-
let level;
|
|
437
|
-
if (normalizedScore >= thrivingThr)
|
|
438
|
-
level = "thriving";
|
|
439
|
-
else if (normalizedScore >= healthyThr)
|
|
440
|
-
level = "healthy";
|
|
441
|
-
else if (normalizedScore >= stressedThr)
|
|
442
|
-
level = "stressed";
|
|
443
|
-
else
|
|
444
|
-
level = "declining";
|
|
445
|
-
return {
|
|
446
|
-
industry,
|
|
447
|
-
health_score: normalizedScore,
|
|
448
|
-
level,
|
|
449
|
-
strengths,
|
|
450
|
-
weaknesses,
|
|
451
|
-
recommendations,
|
|
452
|
-
trait_drift: undefined,
|
|
453
|
-
};
|
|
454
|
-
}
|
|
455
|
-
export function suggestIndustryUpdateByIntent(industry, metrics, intent = "default") {
|
|
456
|
-
if (metrics.sample_size < INDUSTRY_EVOLUTION_THRESHOLDS.min_sample_size) {
|
|
457
|
-
return [];
|
|
458
|
-
}
|
|
459
|
-
const spec = intentRegistry.get(intent) ?? intentRegistry.get("default");
|
|
460
|
-
const suggestions = [];
|
|
461
|
-
for (const trigger of spec.suggestion_triggers) {
|
|
462
|
-
const metricValue = getMetricValue(metrics, trigger.metric);
|
|
463
|
-
if (metricValue === undefined)
|
|
464
|
-
continue;
|
|
465
|
-
const matched = compareMetric(metricValue, trigger.operator, trigger.threshold);
|
|
466
|
-
if (matched) {
|
|
467
|
-
suggestions.push({
|
|
468
|
-
industry,
|
|
469
|
-
suggestion_type: trigger.suggestion_type,
|
|
470
|
-
field: trigger.field,
|
|
471
|
-
current_value: metricValue,
|
|
472
|
-
suggested_value: trigger.suggested_value,
|
|
473
|
-
evidence: renderEvidence(trigger.evidence_template, metricValue, trigger.threshold),
|
|
474
|
-
confidence: trigger.confidence,
|
|
475
|
-
priority: trigger.priority,
|
|
476
|
-
});
|
|
477
|
-
}
|
|
478
|
-
}
|
|
479
|
-
return suggestions;
|
|
480
|
-
}
|
|
481
|
-
function getMetricValue(metrics, dim) {
|
|
482
|
-
switch (dim) {
|
|
483
|
-
case "completed_rate": return metrics.completed_rate;
|
|
484
|
-
case "dispute_rate": return metrics.dispute_rate;
|
|
485
|
-
case "refund_rate": return metrics.refund_rate;
|
|
486
|
-
case "repeat_buyer_rate": return metrics.repeat_buyer_rate;
|
|
487
|
-
case "cycle_efficiency": return metrics.avg_cycle_hours;
|
|
488
|
-
case "arbitration_coverage":
|
|
489
|
-
return metrics.anomalies.some((a) => a.includes("arbitration")) ? 0 : 1;
|
|
490
|
-
case "compensation_coverage":
|
|
491
|
-
return metrics.anomalies.some((a) => a.includes("compensation fund")) ? 0 : 1;
|
|
492
|
-
case "milestone_adoption":
|
|
493
|
-
return metrics.trait_signals.long_cycle === true ? 0.6 : 0.3;
|
|
494
|
-
case "review_openness":
|
|
495
|
-
return metrics.emerging_patterns.some((p) => p.includes("review")) ? 0.6 : 0.3;
|
|
496
|
-
default: return undefined;
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
function compareMetric(value, op, threshold) {
|
|
500
|
-
switch (op) {
|
|
501
|
-
case ">=": return value >= threshold;
|
|
502
|
-
case "<=": return value <= threshold;
|
|
503
|
-
case ">": return value > threshold;
|
|
504
|
-
case "<": return value < threshold;
|
|
505
|
-
case "==": return value === threshold;
|
|
506
|
-
default: return false;
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
function renderEvidence(template, value, threshold) {
|
|
510
|
-
return template
|
|
511
|
-
.replace(/\{value\}/g, String(Math.round(value * 100)))
|
|
512
|
-
.replace(/\{threshold\}/g, String(Math.round(threshold * 100)));
|
|
513
|
-
}
|
|
514
|
-
export function evaluateIndustryHealthMultiIntent(industry, metrics, intents) {
|
|
515
|
-
if (intents.length === 0) {
|
|
516
|
-
return evaluateIndustryHealthByIntent(industry, metrics, "default");
|
|
517
|
-
}
|
|
518
|
-
const totalWeight = intents.reduce((s, i) => s + i.weight, 0) || 1;
|
|
519
|
-
let combinedScore = 0;
|
|
520
|
-
const allStrengths = [];
|
|
521
|
-
const allWeaknesses = [];
|
|
522
|
-
const allRecommendations = [];
|
|
523
|
-
for (const { intent, weight } of intents) {
|
|
524
|
-
const report = evaluateIndustryHealthByIntent(industry, metrics, intent);
|
|
525
|
-
combinedScore += report.health_score * weight;
|
|
526
|
-
allStrengths.push(...report.strengths);
|
|
527
|
-
allWeaknesses.push(...report.weaknesses);
|
|
528
|
-
allRecommendations.push(...report.recommendations);
|
|
529
|
-
}
|
|
530
|
-
const finalScore = Math.round(combinedScore / totalWeight);
|
|
531
|
-
const strengths = Array.from(new Set(allStrengths));
|
|
532
|
-
const weaknesses = Array.from(new Set(allWeaknesses));
|
|
533
|
-
const recommendations = Array.from(new Set(allRecommendations));
|
|
534
|
-
let level;
|
|
535
|
-
if (finalScore >= 85)
|
|
536
|
-
level = "thriving";
|
|
537
|
-
else if (finalScore >= 65)
|
|
538
|
-
level = "healthy";
|
|
539
|
-
else if (finalScore >= 45)
|
|
540
|
-
level = "stressed";
|
|
541
|
-
else
|
|
542
|
-
level = "declining";
|
|
543
|
-
return {
|
|
544
|
-
industry,
|
|
545
|
-
health_score: finalScore,
|
|
546
|
-
level,
|
|
547
|
-
strengths,
|
|
548
|
-
weaknesses,
|
|
549
|
-
recommendations,
|
|
550
|
-
trait_drift: undefined,
|
|
551
|
-
};
|
|
552
|
-
}
|
|
553
|
-
export function getRoleAdvice(intent, role) {
|
|
554
|
-
const spec = intentRegistry.get(intent);
|
|
555
|
-
if (!spec?.role_advice_routing)
|
|
556
|
-
return [];
|
|
557
|
-
return spec.role_advice_routing[role] ?? [];
|
|
558
|
-
}
|
|
559
|
-
export function filterSuggestionsByRole(suggestions, role, triggers = []) {
|
|
560
|
-
return suggestions.filter((s) => {
|
|
561
|
-
const trigger = triggers.find((t) => t.suggestion_type === s.suggestion_type && t.field === s.field);
|
|
562
|
-
if (!trigger?.target_roles)
|
|
563
|
-
return true;
|
|
564
|
-
return trigger.target_roles.includes(role);
|
|
565
|
-
});
|
|
566
|
-
}
|
|
1
|
+
import{INDUSTRY_EVOLUTION_THRESHOLDS}from'./industry-evolution.js';export const BUILTIN_INTENT_SPECS={'default':{'intent':'default','display_name':'Default\x20(Phase\x204\x20original\x20model)','weights':{'completed_rate':0x23,'dispute_rate':0x19,'refund_rate':0xf,'repeat_buyer_rate':0xf,'cycle_efficiency':0xa},'healthy_thresholds':{'completed_rate':0.9,'dispute_rate':0.05,'refund_rate':0.05,'repeat_buyer_rate':0.3,'cycle_efficiency':0x18*0x7},'suggestion_triggers':[],'level_thresholds':{'thriving':0x55,'healthy':0x41,'stressed':0x2d}},'growth':{'intent':'growth','display_name':'Growth\x20(focus\x20on\x20new\x20customers,\x20repurchase,\x20order-volume\x20growth)','weights':{'repeat_buyer_rate':0x23,'completed_rate':0x19,'dispute_rate':0xf,'refund_rate':0xa,'cycle_efficiency':0xf},'healthy_thresholds':{'completed_rate':0.85,'dispute_rate':0.08,'repeat_buyer_rate':0.25,'cycle_efficiency':0x18*0xe},'suggestion_triggers':[{'metric':'repeat_buyer_rate','operator':'>=','threshold':0.3,'suggestion_type':'update_flywheel','field':'flywheel.rewardStrategy','suggested_value':'Strengthen\x20loyalty\x20Reward\x20+\x20tiered\x20repurchase\x20reward\x20+\x20referral\x20cashback','evidence_template':'Under\x20growth\x20intent,\x20repurchase\x20rate\x20{value}%\x20≥\x20{threshold}%;\x20recommend\x20strengthening\x20the\x20loyalty\x20flywheel','confidence':0.85,'priority':'high','target_roles':['merchant']},{'metric':'repeat_buyer_rate','operator':'<','threshold':0.15,'suggestion_type':'update_flywheel','field':'flywheel.rewardStrategy','suggested_value':'First-order\x20reward\x20+\x207-day\x20repurchase\x20discount\x20+\x20referral\x20cashback','evidence_template':'Under\x20growth\x20intent,\x20repurchase\x20rate\x20{value}%\x20<\x20{threshold}%;\x20recommend\x20strengthening\x20first-order\x20incentives','confidence':0.75,'priority':'medium','target_roles':['merchant']}],'level_thresholds':{'thriving':0x50,'healthy':0x3c,'stressed':0x28},'role_advice_routing':{'customer':['Focus\x20on\x20repurchase\x20Reward\x20and\x20referral\x20cashback'],'merchant':['Strengthen\x20the\x20loyalty\x20flywheel','Optimize\x20first-order\x20conversion','Increase\x20Reward\x20investment'],'arbitrator':[]}},'retention':{'intent':'retention','display_name':'Retention\x20(focus\x20on\x20repurchase,\x20disputes,\x20refunds)','weights':{'repeat_buyer_rate':0x1e,'dispute_rate':0x1e,'refund_rate':0x19,'completed_rate':0xf,'cycle_efficiency':0x0},'healthy_thresholds':{'completed_rate':0.8,'dispute_rate':0.05,'refund_rate':0.05,'repeat_buyer_rate':0.25},'suggestion_triggers':[{'metric':'dispute_rate','operator':'>','threshold':0.1,'suggestion_type':'add_risk_check','field':'risk_checks','suggested_value':{'id':'retention_dispute_check','description':'Retention\x20intent:\x20high\x20dispute\x20rate;\x20recommend\x20mandatory\x20arbitration\x20+\x20compensation\x20fund','weight':0x23},'evidence_template':'Under\x20retention\x20intent,\x20dispute\x20rate\x20{value}%\x20>\x20{threshold}%;\x20recommend\x20strengthening\x20dispute-resolution\x20channels','confidence':0.85,'priority':'high','target_roles':['merchant','arbitrator']},{'metric':'refund_rate','operator':'>','threshold':0.1,'suggestion_type':'adjust_preference','field':'preference_template.require_arbitration','suggested_value':!![],'evidence_template':'Under\x20retention\x20intent,\x20refund\x20rate\x20{value}%\x20>\x20{threshold}%;\x20recommend\x20mandatory\x20arbitration','confidence':0.8,'priority':'high','target_roles':['customer','merchant']}],'level_thresholds':{'thriving':0x50,'healthy':0x3c,'stressed':0x2d},'role_advice_routing':{'customer':['Prefer\x20merchants\x20with\x20arbitration','Pay\x20attention\x20to\x20refund\x20policy'],'merchant':['Reduce\x20dispute\x20rate','Optimize\x20refund\x20process','Strengthen\x20delivery\x20quality'],'arbitrator':['Watch\x20high-dispute\x20industries','Proactively\x20provide\x20dispute-resolution\x20channels']}},'compliance':{'intent':'compliance','display_name':'Compliance\x20(focus\x20on\x20arbitration,\x20compensation\x20fund,\x20regulation)','weights':{'arbitration_coverage':0x23,'compensation_coverage':0x1e,'dispute_rate':0x14,'refund_rate':0xf,'completed_rate':0x0,'repeat_buyer_rate':0x0,'cycle_efficiency':0x0},'healthy_thresholds':{'arbitration_coverage':0x1,'compensation_coverage':0.8,'dispute_rate':0.05},'suggestion_triggers':[{'metric':'arbitration_coverage','operator':'<','threshold':0x1,'suggestion_type':'adjust_preference','field':'preference_template.require_arbitration','suggested_value':!![],'evidence_template':'Under\x20compliance\x20intent,\x20arbitration\x20coverage\x20{value}%\x20<\x20100%;\x20recommend\x20mandatory\x20arbitration\x20configuration','confidence':0.95,'priority':'high','target_roles':['merchant','arbitrator']},{'metric':'compensation_coverage','operator':'<','threshold':0.8,'suggestion_type':'add_risk_check','field':'risk_checks','suggested_value':{'id':'compliance_compensation_check','description':'Compliance\x20intent:\x20compensation\x20fund\x20coverage\x20insufficient','weight':0x28},'evidence_template':'Under\x20compliance\x20intent,\x20compensation\x20fund\x20coverage\x20{value}%\x20<\x20{threshold}%;\x20recommend\x20increasing\x20the\x20compensation\x20fund','confidence':0.9,'priority':'high','target_roles':['merchant']}],'level_thresholds':{'thriving':0x5a,'healthy':0x46,'stressed':0x32},'role_advice_routing':{'customer':['Only\x20transact\x20with\x20merchants\x20that\x20have\x20arbitration','Confirm\x20compensation\x20fund\x20adequacy'],'merchant':['Configure\x20arbitration','Increase\x20compensation\x20fund','Compliance\x20first'],'arbitrator':['Proactively\x20monitor\x20highly\x20regulated\x20industries','Provide\x20compliance\x20consulting']}},'efficiency':{'intent':'efficiency','display_name':'Efficiency\x20(focus\x20on\x20cycle,\x20milestones,\x20communication)','weights':{'cycle_efficiency':0x2d,'milestone_adoption':0x19,'completed_rate':0x14,'dispute_rate':0xa,'refund_rate':0x0,'repeat_buyer_rate':0x0},'healthy_thresholds':{'cycle_efficiency':0x18*0x3,'milestone_adoption':0.6,'completed_rate':0.9},'suggestion_triggers':[{'metric':'cycle_efficiency','operator':'>','threshold':0x18*0xe,'suggestion_type':'adjust_preference','field':'preference_template.max_acceptable_cycle','suggested_value':0xe,'evidence_template':'Under\x20efficiency\x20intent,\x20average\x20cycle\x20{value}\x20hours\x20>\x20{threshold}\x20hours;\x20recommend\x20shortening\x20the\x20maximum\x20acceptable\x20cycle','confidence':0.8,'priority':'high','target_roles':['merchant']},{'metric':'milestone_adoption','operator':'<','threshold':0.4,'suggestion_type':'update_flywheel','field':'flywheel.keyActions','suggested_value':'Add\x20milestone\x20nodes\x20+\x20phased-acceptance\x20Reward','evidence_template':'Under\x20efficiency\x20intent,\x20milestone\x20adoption\x20{value}%\x20<\x20{threshold}%;\x20recommend\x20introducing\x20milestones','confidence':0.75,'priority':'medium','target_roles':['merchant']}],'level_thresholds':{'thriving':0x55,'healthy':0x41,'stressed':0x2d},'role_advice_routing':{'customer':['Prefer\x20merchants\x20with\x20milestones'],'merchant':['Optimize\x20Machine\x20node\x20splitting','Introduce\x20milestone\x20acceptance','Shorten\x20the\x20delivery\x20cycle'],'arbitrator':[]}},'trust_building':{'intent':'trust_building','display_name':'Trust\x20building\x20(focus\x20on\x20arbitration\x20independence,\x20reviews,\x20compensation\x20fund)','weights':{'arbitration_coverage':0x19,'compensation_coverage':0x19,'review_openness':0x14,'dispute_rate':0xf,'completed_rate':0xf,'repeat_buyer_rate':0x0,'refund_rate':0x0,'cycle_efficiency':0x0},'healthy_thresholds':{'arbitration_coverage':0x1,'compensation_coverage':0.8,'review_openness':0.5,'dispute_rate':0.05},'suggestion_triggers':[{'metric':'review_openness','operator':'<','threshold':0.3,'suggestion_type':'update_flywheel','field':'flywheel.trustSellingPoints','suggested_value':'On-chain\x20public\x20reviews\x20+\x20higher\x20weight\x20for\x20credential-backed\x20reviews','evidence_template':'Under\x20trust-building\x20intent,\x20review\x20openness\x20{value}%\x20<\x20{threshold}%;\x20recommend\x20introducing\x20public\x20reviews','confidence':0.8,'priority':'medium','target_roles':['merchant']},{'metric':'arbitration_coverage','operator':'<','threshold':0x1,'suggestion_type':'add_risk_check','field':'risk_checks','suggested_value':{'id':'trust_arbitration_check','description':'Trust\x20building:\x20arbitration\x20not\x20configured','weight':0x23},'evidence_template':'Under\x20trust-building\x20intent,\x20arbitration\x20coverage\x20{value}%\x20<\x20100%;\x20recommend\x20mandatory\x20arbitration\x20configuration','confidence':0.9,'priority':'high','target_roles':['merchant','arbitrator']}],'level_thresholds':{'thriving':0x55,'healthy':0x41,'stressed':0x32},'role_advice_routing':{'customer':['View\x20public\x20reviews','Confirm\x20arbitration\x20independence'],'merchant':['Introduce\x20a\x20public\x20review\x20Repository','Configure\x20arbitration','Increase\x20compensation\x20fund'],'arbitrator':['Maintain\x20independence','Proactively\x20disclose\x20verdict\x20rationale']}},'custom':{'intent':'custom','display_name':'Custom\x20(registered\x20at\x20runtime)','weights':{},'healthy_thresholds':{},'suggestion_triggers':[]}};const intentRegistry=new Map();for(const [k,v]of Object['entries'](BUILTIN_INTENT_SPECS)){intentRegistry['set'](k,v);}export function registerIntentProfile(a){if(!a['intent']||!a['weights'])return![];return intentRegistry['set'](a['intent'],a),!![];}export function getIntentProfile(a){return intentRegistry['get'](a);}export function listIntents(){return Array['from'](intentRegistry['keys']());}export function _resetIntentRegistryForTest(){intentRegistry['clear']();for(const [a,b]of Object['entries'](BUILTIN_INTENT_SPECS)){intentRegistry['set'](a,b);}}export function evaluateIndustryHealthByIntent(a,b,c='default'){const d=intentRegistry['get'](c)??intentRegistry['get']('default'),e=d['weights'],f=d['healthy_thresholds'],g=Object['values'](e)['reduce']((C,D)=>C+(D??0x0),0x0)||0x64,h=[],i=[],j=[];b['sample_size']<INDUSTRY_EVOLUTION_THRESHOLDS['min_sample_size']&&(i['push']('Insufficient\x20sample\x20size\x20('+b['sample_size']+'\x20<\x20'+INDUSTRY_EVOLUTION_THRESHOLDS['min_sample_size']+');\x20evaluation\x20confidence\x20is\x20low'),j['push']('Continue\x20accumulating\x20order\x20data\x20to\x20improve\x20evaluation\x20accuracy'));let l=0x0;const m=e['completed_rate']??0x0;if(m>0x0){const C=b['completed_rate']*m;l+=C;const D=f['completed_rate']??0.9;if(b['completed_rate']>=D)h['push']('High\x20completion\x20rate\x20('+Math['round'](b['completed_rate']*0x64)+'%)');else b['completed_rate']<D*0.8&&(i['push']('Low\x20completion\x20rate\x20('+Math['round'](b['completed_rate']*0x64)+'%)'),j['push']('Investigate\x20the\x20root\x20cause\x20of\x20incomplete\x20orders;\x20strengthen\x20Messenger\x20communication'));}const n=e['dispute_rate']??0x0;if(n>0x0){const E=(0x1-Math['min'](0x1,b['dispute_rate']))*n;l+=E;const F=f['dispute_rate']??0.05;if(b['dispute_rate']<=F)h['push']('Low\x20dispute\x20rate\x20('+Math['round'](b['dispute_rate']*0x64)+'%)');else b['dispute_rate']>F*0x2&&(i['push']('High\x20dispute\x20rate\x20('+Math['round'](b['dispute_rate']*0x64)+'%)'),j['push']('Dispute\x20rate\x20exceeds\x20threshold;\x20recommend\x20mandatory\x20arbitration\x20+\x20compensation\x20fund\x20+\x20delivery\x20Guard'));}const o=e['refund_rate']??0x0;if(o>0x0){const G=(0x1-Math['min'](0x1,b['refund_rate']))*o;l+=G,b['refund_rate']>0.2&&(i['push']('High\x20refund\x20rate\x20('+Math['round'](b['refund_rate']*0x64)+'%)'),j['push']('Abnormal\x20refund\x20rate;\x20recommend\x20checking\x20delivery\x20quality\x20or\x20product\x20description\x20consistency'));}const p=e['repeat_buyer_rate']??0x0;if(p>0x0){const H=Math['min'](0x1,b['repeat_buyer_rate'])*p;l+=H;const I=f['repeat_buyer_rate']??0.25;if(b['repeat_buyer_rate']>=I)h['push']('High\x20repurchase\x20rate\x20('+Math['round'](b['repeat_buyer_rate']*0x64)+'%)');else b['repeat_buyer_rate']<I*0.5&&b['sample_size']>=0x14&&(i['push']('Low\x20repurchase\x20rate\x20('+Math['round'](b['repeat_buyer_rate']*0x64)+'%)'),j['push']('Low\x20repurchase\x20rate;\x20recommend\x20setting\x20loyalty\x20Reward\x20+\x20referral\x20cashback'));}const q=e['cycle_efficiency']??0x0;if(q>0x0&&b['avg_cycle_hours']>0x0){const J=Math['max'](0x0,Math['min'](0x1,0x1-(b['avg_cycle_hours']/0x18-0x7)/0x17));l+=J*q;const K=f['cycle_efficiency']??0x18*0x7;if(b['avg_cycle_hours']<=K)h['push']('Short\x20delivery\x20cycle\x20('+Math['round'](b['avg_cycle_hours'])+'\x20hours)');else b['avg_cycle_hours']>0x18*0x1e&&(i['push']('Long\x20delivery\x20cycle\x20('+Math['round'](b['avg_cycle_hours']/0x18)+'\x20days)'),j['push']('Delivery\x20cycle\x20too\x20long;\x20recommend\x20optimizing\x20Machine\x20node\x20splitting'));}const r=e['arbitration_coverage']??0x0;if(r>0x0){const L=b['anomalies']['some'](O=>O['includes']('arbitration')),M=L?0x0:0x1,N=M*r;l+=N,M<0x1&&(i['push']('Insufficient\x20arbitration\x20coverage'),j['push']('Recommend\x20mandatory\x20arbitration\x20configuration\x20(required\x20under\x20compliance/trust\x20intents)'));}const s=e['compensation_coverage']??0x0;if(s>0x0){const O=b['anomalies']['some'](R=>R['includes']('compensation\x20fund')),P=O?0x0:0x1,Q=P*s;l+=Q,P<0.8&&(i['push']('Insufficient\x20compensation\x20fund\x20coverage'),j['push']('Recommend\x20increasing\x20the\x20compensation_fund\x20balance'));}const t=e['milestone_adoption']??0x0;if(t>0x0){const R=b['trait_signals']['long_cycle']===!![]?0.6:0.3,S=R*t;l+=S,R<0.4&&(i['push']('Low\x20milestone\x20adoption\x20rate'),j['push']('Recommend\x20introducing\x20milestone\x20nodes\x20+\x20phased\x20acceptance'));}const u=e['review_openness']??0x0;if(u>0x0){const T=b['emerging_patterns']['some'](W=>W['includes']('review')),U=T?0.6:0.3,V=U*u;l+=V,U<0.4&&(i['push']('Low\x20review\x20openness'),j['push']('Recommend\x20introducing\x20a\x20public\x20review\x20Repository'));}const w=Math['round'](l/g*0x64),x=d['level_thresholds']??{},y=x['thriving']??0x55,z=x['healthy']??0x41,A=x['stressed']??0x2d;let B;if(w>=y)B='thriving';else{if(w>=z)B='healthy';else{if(w>=A)B='stressed';else B='declining';}}return{'industry':a,'health_score':w,'level':B,'strengths':h,'weaknesses':i,'recommendations':j,'trait_drift':undefined};}export function suggestIndustryUpdateByIntent(a,b,c='default'){if(b['sample_size']<INDUSTRY_EVOLUTION_THRESHOLDS['min_sample_size'])return[];const d=intentRegistry['get'](c)??intentRegistry['get']('default'),e=[];for(const f of d['suggestion_triggers']){const g=getMetricValue(b,f['metric']);if(g===undefined)continue;const h=compareMetric(g,f['operator'],f['threshold']);h&&e['push']({'industry':a,'suggestion_type':f['suggestion_type'],'field':f['field'],'current_value':g,'suggested_value':f['suggested_value'],'evidence':renderEvidence(f['evidence_template'],g,f['threshold']),'confidence':f['confidence'],'priority':f['priority']});}return e;}function getMetricValue(a,b){switch(b){case'completed_rate':return a['completed_rate'];case'dispute_rate':return a['dispute_rate'];case'refund_rate':return a['refund_rate'];case'repeat_buyer_rate':return a['repeat_buyer_rate'];case'cycle_efficiency':return a['avg_cycle_hours'];case'arbitration_coverage':return a['anomalies']['some'](c=>c['includes']('arbitration'))?0x0:0x1;case'compensation_coverage':return a['anomalies']['some'](c=>c['includes']('compensation\x20fund'))?0x0:0x1;case'milestone_adoption':return a['trait_signals']['long_cycle']===!![]?0.6:0.3;case'review_openness':return a['emerging_patterns']['some'](c=>c['includes']('review'))?0.6:0.3;default:return undefined;}}function compareMetric(a,b,c){switch(b){case'>=':return a>=c;case'<=':return a<=c;case'>':return a>c;case'<':return a<c;case'==':return a===c;default:return![];}}function renderEvidence(a,b,c){return a['replace'](/\{value\}/g,String(Math['round'](b*0x64)))['replace'](/\{threshold\}/g,String(Math['round'](c*0x64)));}export function evaluateIndustryHealthMultiIntent(a,b,c){if(c['length']===0x0)return evaluateIndustryHealthByIntent(a,b,'default');const d=c['reduce']((o,p)=>o+p['weight'],0x0)||0x1;let e=0x0;const f=[],g=[],h=[];for(const {intent:o,weight:p}of c){const q=evaluateIndustryHealthByIntent(a,b,o);e+=q['health_score']*p,f['push'](...q['strengths']),g['push'](...q['weaknesses']),h['push'](...q['recommendations']);}const i=Math['round'](e/d),j=Array['from'](new Set(f)),l=Array['from'](new Set(g)),m=Array['from'](new Set(h));let n;if(i>=0x55)n='thriving';else{if(i>=0x41)n='healthy';else{if(i>=0x2d)n='stressed';else n='declining';}}return{'industry':a,'health_score':i,'level':n,'strengths':j,'weaknesses':l,'recommendations':m,'trait_drift':undefined};}export function getRoleAdvice(a,b){const c=intentRegistry['get'](a);if(!c?.['role_advice_routing'])return[];return c['role_advice_routing'][b]??[];}export function filterSuggestionsByRole(a,b,c=[]){return a['filter'](d=>{const e=c['find'](f=>f['suggestion_type']===d['suggestion_type']&&f['field']===d['field']);if(!e?.['target_roles'])return!![];return e['target_roles']['includes'](b);});}
|