Improve dashboard maintainability before the next release
The dashboard had several oversized orchestration, component, and CSS files that made product-copy changes and mobile/performance work risky. This refactor preserves behavior while splitting scan terminal CSS, opportunity helpers, future forecast panels, history/detail charts, and probability/model sections into smaller ownership boundaries. Constraint: No user-visible version bump because this batch is architecture and performance cleanup, not a release announcement. Rejected: Rewrite dashboard state management in the same batch | too broad for a safe upload after CSS and component splitting. Confidence: high Scope-risk: moderate Reversibility: clean Directive: Keep new component/CSS boundaries instead of moving product copy back into the large dashboard files. Tested: npm run build; npm run test:business; git diff --check Not-tested: Browser visual smoke test after push
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
export { getWindowPhaseMeta, type PhaseMeta } from "./opportunity-window-phase";
|
||||
export { getLocalizedRowText } from "./opportunity-copy";
|
||||
export {
|
||||
getAiMeta,
|
||||
getExclusionReasons,
|
||||
getOpportunityStrength,
|
||||
getRecommendationReasons,
|
||||
getRiskHints,
|
||||
getShortAiConclusion,
|
||||
} from "./opportunity-ai-meta";
|
||||
export {
|
||||
getDebDistanceSummary,
|
||||
getMetarConflictSummary,
|
||||
getModelSupportSummary,
|
||||
} from "./opportunity-evidence-summary";
|
||||
export type { V4CityForecast, V4TradeDecision } from "./opportunity-v4-types";
|
||||
export {
|
||||
getForecastContractFit,
|
||||
getForecastRangeLabel,
|
||||
getPaceDecisionTail,
|
||||
getPaceDeviationRead,
|
||||
getPaceSignalLabel,
|
||||
getV4CityForecast,
|
||||
median,
|
||||
} from "./opportunity-v4-forecast";
|
||||
export {
|
||||
getForecastFitMeta,
|
||||
getThresholdDecision,
|
||||
getV4DecisionLabel,
|
||||
getV4TradeDecision,
|
||||
} from "./opportunity-v4-decision";
|
||||
export {
|
||||
getDecisionReasonItems,
|
||||
getForecastRiskItems,
|
||||
} from "./opportunity-v4-risk";
|
||||
export {
|
||||
getDetailForRow,
|
||||
getDetailViewDate,
|
||||
normalizeLookupKey,
|
||||
} from "./opportunity-detail";
|
||||
export {
|
||||
bucketMatchesRow,
|
||||
buildOpportunityGroups,
|
||||
getBucketDisplayLabel,
|
||||
getBucketText,
|
||||
getDetailBucketEventProbability,
|
||||
type OpportunityGroup,
|
||||
} from "./opportunity-groups";
|
||||
export {
|
||||
formatModelClusterRange,
|
||||
formatModelSources,
|
||||
getModelSourceSummary,
|
||||
} from "./opportunity-model-summary";
|
||||
export {
|
||||
formatAction,
|
||||
formatMinuteSpan,
|
||||
formatPercent,
|
||||
formatQuoteCents,
|
||||
formatTemperatureDelta,
|
||||
formatThreshold,
|
||||
formatTradeSide,
|
||||
formatWindowMinutes,
|
||||
normalizeProbability,
|
||||
} from "./opportunity-format";
|
||||
export {
|
||||
extractNumbers,
|
||||
getTargetRange,
|
||||
normalizeBucketLabel,
|
||||
} from "./opportunity-target";
|
||||
export {
|
||||
formatPeakWindowTiming,
|
||||
getMetarGate,
|
||||
getMetarObservationContext,
|
||||
getObservationSortMinutes,
|
||||
firstNonEmptyPoints,
|
||||
normalizeObservationPoints,
|
||||
type ObservationPoint,
|
||||
} from "./opportunity-observation";
|
||||
export {
|
||||
decodeMetarWeatherToken,
|
||||
decodeRawMetarCloud,
|
||||
decodeRawMetarVisibility,
|
||||
decodeRawMetarWeather,
|
||||
formatAirportReportRead,
|
||||
formatAirportWeatherRead,
|
||||
getAirportWeatherInputs,
|
||||
} from "./opportunity-airport-read";
|
||||
Reference in New Issue
Block a user