Implement full-stack material trace feature enabling forward (LOT/工單 → 原物料) and reverse (原物料 → LOT) queries with wildcard support, safeguards (memory guard, IN-clause batching, Oracle slow-query channel), CSV export, and portal-shell integration. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
209 lines
7.3 KiB
JSON
209 lines
7.3 KiB
JSON
{
|
|
"routes": [
|
|
{
|
|
"route": "/wip-overview",
|
|
"route_id": "wip-overview",
|
|
"title": "WIP Overview",
|
|
"scope": "in-scope",
|
|
"render_mode": "native",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin",
|
|
"canonical_shell_path": "/portal-shell/wip-overview",
|
|
"rollback_strategy": "fallback_to_legacy_route",
|
|
"compatibility_policy": "redirect_to_shell_when_spa_enabled"
|
|
},
|
|
{
|
|
"route": "/wip-detail",
|
|
"route_id": "wip-detail",
|
|
"title": "WIP Detail",
|
|
"scope": "in-scope",
|
|
"render_mode": "native",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin",
|
|
"canonical_shell_path": "/portal-shell/wip-detail",
|
|
"rollback_strategy": "fallback_to_legacy_route",
|
|
"compatibility_policy": "redirect_to_shell_when_spa_enabled"
|
|
},
|
|
{
|
|
"route": "/hold-overview",
|
|
"route_id": "hold-overview",
|
|
"title": "Hold Overview",
|
|
"scope": "in-scope",
|
|
"render_mode": "native",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin",
|
|
"canonical_shell_path": "/portal-shell/hold-overview",
|
|
"rollback_strategy": "fallback_to_legacy_route",
|
|
"compatibility_policy": "redirect_to_shell_when_spa_enabled"
|
|
},
|
|
{
|
|
"route": "/hold-detail",
|
|
"route_id": "hold-detail",
|
|
"title": "Hold Detail",
|
|
"scope": "in-scope",
|
|
"render_mode": "native",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin",
|
|
"canonical_shell_path": "/portal-shell/hold-detail",
|
|
"rollback_strategy": "fallback_to_legacy_route",
|
|
"compatibility_policy": "redirect_to_shell_when_spa_enabled"
|
|
},
|
|
{
|
|
"route": "/hold-history",
|
|
"route_id": "hold-history",
|
|
"title": "Hold History",
|
|
"scope": "in-scope",
|
|
"render_mode": "native",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin",
|
|
"canonical_shell_path": "/portal-shell/hold-history",
|
|
"rollback_strategy": "fallback_to_legacy_route",
|
|
"compatibility_policy": "redirect_to_shell_when_spa_enabled"
|
|
},
|
|
{
|
|
"route": "/reject-history",
|
|
"route_id": "reject-history",
|
|
"title": "Reject History",
|
|
"scope": "in-scope",
|
|
"render_mode": "native",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin",
|
|
"canonical_shell_path": "/portal-shell/reject-history",
|
|
"rollback_strategy": "fallback_to_legacy_route",
|
|
"compatibility_policy": "redirect_to_shell_when_spa_enabled"
|
|
},
|
|
{
|
|
"route": "/resource",
|
|
"route_id": "resource",
|
|
"title": "Resource",
|
|
"scope": "in-scope",
|
|
"render_mode": "native",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin",
|
|
"canonical_shell_path": "/portal-shell/resource",
|
|
"rollback_strategy": "fallback_to_legacy_route",
|
|
"compatibility_policy": "redirect_to_shell_when_spa_enabled"
|
|
},
|
|
{
|
|
"route": "/resource-history",
|
|
"route_id": "resource-history",
|
|
"title": "Resource History",
|
|
"scope": "in-scope",
|
|
"render_mode": "native",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin",
|
|
"canonical_shell_path": "/portal-shell/resource-history",
|
|
"rollback_strategy": "fallback_to_legacy_route",
|
|
"compatibility_policy": "redirect_to_shell_when_spa_enabled"
|
|
},
|
|
{
|
|
"route": "/qc-gate",
|
|
"route_id": "qc-gate",
|
|
"title": "QC Gate",
|
|
"scope": "in-scope",
|
|
"render_mode": "native",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin",
|
|
"canonical_shell_path": "/portal-shell/qc-gate",
|
|
"rollback_strategy": "fallback_to_legacy_route",
|
|
"compatibility_policy": "redirect_to_shell_when_spa_enabled"
|
|
},
|
|
{
|
|
"route": "/job-query",
|
|
"route_id": "job-query",
|
|
"title": "Job Query",
|
|
"scope": "in-scope",
|
|
"render_mode": "native",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin",
|
|
"canonical_shell_path": "/portal-shell/job-query",
|
|
"rollback_strategy": "fallback_to_legacy_route",
|
|
"compatibility_policy": "redirect_to_shell_when_spa_enabled"
|
|
},
|
|
{
|
|
"route": "/admin/pages",
|
|
"route_id": "admin-pages",
|
|
"title": "Admin Pages",
|
|
"scope": "in-scope",
|
|
"render_mode": "external",
|
|
"owner": "frontend-platform-admin",
|
|
"visibility_policy": "admin_only",
|
|
"canonical_shell_path": "/portal-shell/admin/pages",
|
|
"rollback_strategy": "external_route_reversion",
|
|
"compatibility_policy": "external_target_redirect"
|
|
},
|
|
{
|
|
"route": "/admin/performance",
|
|
"route_id": "admin-performance",
|
|
"title": "Admin Performance",
|
|
"scope": "in-scope",
|
|
"render_mode": "native",
|
|
"owner": "frontend-platform-admin",
|
|
"visibility_policy": "admin_only",
|
|
"canonical_shell_path": "/portal-shell/admin/performance",
|
|
"rollback_strategy": "fallback_to_legacy_route",
|
|
"compatibility_policy": "redirect_to_shell_when_spa_enabled"
|
|
},
|
|
{
|
|
"route": "/tables",
|
|
"route_id": "tables",
|
|
"title": "Tables",
|
|
"scope": "in-scope",
|
|
"render_mode": "native",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin",
|
|
"canonical_shell_path": "/portal-shell/tables",
|
|
"rollback_strategy": "fallback_to_legacy_route",
|
|
"compatibility_policy": "redirect_to_shell_when_spa_enabled"
|
|
},
|
|
{
|
|
"route": "/excel-query",
|
|
"route_id": "excel-query",
|
|
"title": "Excel Query",
|
|
"scope": "in-scope",
|
|
"render_mode": "native",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin",
|
|
"canonical_shell_path": "/portal-shell/excel-query",
|
|
"rollback_strategy": "fallback_to_legacy_route",
|
|
"compatibility_policy": "redirect_to_shell_when_spa_enabled"
|
|
},
|
|
{
|
|
"route": "/query-tool",
|
|
"route_id": "query-tool",
|
|
"title": "Query Tool",
|
|
"scope": "in-scope",
|
|
"render_mode": "native",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin",
|
|
"canonical_shell_path": "/portal-shell/query-tool",
|
|
"rollback_strategy": "fallback_to_legacy_route",
|
|
"compatibility_policy": "redirect_to_shell_when_spa_enabled"
|
|
},
|
|
{
|
|
"route": "/mid-section-defect",
|
|
"route_id": "mid-section-defect",
|
|
"title": "Mid Section Defect",
|
|
"scope": "in-scope",
|
|
"render_mode": "native",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin",
|
|
"canonical_shell_path": "/portal-shell/mid-section-defect",
|
|
"rollback_strategy": "fallback_to_legacy_route",
|
|
"compatibility_policy": "redirect_to_shell_when_spa_enabled"
|
|
},
|
|
{
|
|
"route": "/material-trace",
|
|
"route_id": "material-trace",
|
|
"title": "Material Trace",
|
|
"scope": "in-scope",
|
|
"render_mode": "native",
|
|
"owner": "frontend-mes-reporting",
|
|
"visibility_policy": "released_or_admin",
|
|
"canonical_shell_path": "/portal-shell/material-trace",
|
|
"rollback_strategy": "fallback_to_legacy_route",
|
|
"compatibility_policy": "redirect_to_shell_when_spa_enabled"
|
|
}
|
|
]
|
|
}
|