hejianhao
2026-06-08 bcccba9cf267f486875d1148654cd8990a4534ac
refactor(robotaxi): 重构代码结构,统一导入路径并抽离通用资源

抽离分散在各页面的行程状态枚举、埋点配置、站点状态管理等代码到统一的constants、hooks与components目录,新增公共TipPopup弹窗组件,修正所有关联的导入路径。
8 文件已重命名
26个文件已修改
92 ■■■■■ 已修改文件
src/pages/robotaxi/home/components/home-content-panel.tsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/robotaxi/home/components/order-status-card/index.tsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/robotaxi/home/components/privacy-popup/index.tsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/robotaxi/home/constants.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/robotaxi/home/hooks/use-drag-gesture.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/robotaxi/home/hooks/use-home-bootstrap.ts 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/robotaxi/home/hooks/use-location-flow.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/robotaxi/home/hooks/use-navigation.ts 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/robotaxi/home/hooks/use-order-ws.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/robotaxi/home/hooks/use-quick-capsule.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/robotaxi/home/hooks/use-region-change.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/robotaxi/home/hooks/use-site-state.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/robotaxi/home/index.tsx 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/components/tip-popup/index.less 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/components/tip-popup/index.tsx 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/constants/confirm-ride-report.ts 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/constants/modify-destination.ts 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/constants/report-events.ts 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/constants/report-structures.ts 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/constants/trip-status.ts 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/hooks/use-home-start-site-display.ts 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/begin-route-view.tsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/hooks/use-page-actions.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/select-map-site/components/select-map-site-view.tsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/select-map-site/hooks/use-select-map-site.ts 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/select-map-site/index.tsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/share-trip/components/share-trip-view.tsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/share-trip/hooks/use-map-markers.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/share-trip/hooks/use-map-viewport.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/share-trip/hooks/use-route-manager.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/share-trip/hooks/use-share-trip-runtime.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/share-trip/hooks/use-view-delegates.tsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/share-trip/index.tsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/site-search/index.tsx 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/robotaxi/home/components/home-content-panel.tsx
@@ -1,6 +1,6 @@
import { View, Text, Image } from '@tarojs/components';
import OrderStatusCard from './order-status-card';
import { TripStatus } from '../../../../robotaxi/pages/begin-route/constants/trip-status';
import { TripStatus } from '../../../../robotaxi/constants/trip-status';
import { safeParse } from '../../../../utils/Robotaxi-public-method';
type Props = {
src/pages/robotaxi/home/components/order-status-card/index.tsx
@@ -1,6 +1,6 @@
import { View, Image } from '@tarojs/components';
import { safeParse } from '../../../../../utils/Robotaxi-public-method';
import { TripStatus } from '../../../../../robotaxi/pages/begin-route/constants/trip-status';
import { TripStatus } from '../../../../../robotaxi/constants/trip-status';
type HomeTripStatus = TripStatus | 0;
src/pages/robotaxi/home/components/privacy-popup/index.tsx
@@ -6,7 +6,7 @@
import { submitAgreement } from '../../../../../robotaxi/api/home'
import { getNormalizedLoginAgreementList, type LoginAgreementItem } from '../../../../../robotaxi/utils/login-agreement'
import { reportEvent } from '../../../../../utils/Robotaxi-public-method'
import { PROTOCOL_CLICK_EVENT_ID } from '../../../../../robotaxi/pages/begin-route/constants/report-events'
import { PROTOCOL_CLICK_EVENT_ID } from '../../../../../robotaxi/constants/report-events'
type Props = {
  show?: boolean;
src/pages/robotaxi/home/constants.ts
@@ -1,4 +1,4 @@
import { TripStatus } from '../../../robotaxi/pages/begin-route/constants/trip-status';
import { TripStatus } from '../../../robotaxi/constants/trip-status';
/** 首页地图实例 ID。 */
export const HOME_MAP_ID = 'map';
src/pages/robotaxi/home/hooks/use-drag-gesture.ts
@@ -1,6 +1,6 @@
import Taro from '@tarojs/taro';
import { useEffect, useRef, useState } from 'react';
import { TripStatus } from '../../../../robotaxi/pages/begin-route/constants/trip-status';
import { TripStatus } from '../../../../robotaxi/constants/trip-status';
type HomeTripStatus = TripStatus | 0;
src/pages/robotaxi/home/hooks/use-home-bootstrap.ts
@@ -1,7 +1,7 @@
import Taro from '@tarojs/taro';
import wsManager from '../../../../utils/websocket';
import { mapOrderStatusToTripStatus } from '../../../../utils/Robotaxi-public-method';
import { SocketOrderStatus, TripStatus, toTripStatus } from '../../../../robotaxi/pages/begin-route/constants/trip-status';
import { SocketOrderStatus, TripStatus, toTripStatus } from '../../../../robotaxi/constants/trip-status';
import {
  clearHomeStartSiteDisplayState,
  consumeRetainManualSelectedHomeStartSiteOnNextHome,
@@ -11,7 +11,7 @@
  resolveHomeStartSiteDisplaySite,
  shouldRetainManualSelectedHomeStartSiteOnNextHome,
  writeHomeStartSiteDisplayState
} from './use-home-start-site-display';
} from '../../../../robotaxi/hooks/use-home-start-site-display';
import useStationScaleFocus from '../../../../robotaxi/hooks/use-station-scale-focus';
type HomeTripStatus = TripStatus | 0;
src/pages/robotaxi/home/hooks/use-location-flow.ts
@@ -11,7 +11,7 @@
  isManualSelectedHomeStartSiteDisplayState,
  readHomeStartSiteDisplayState,
  shouldRetainManualSelectedHomeStartSiteOnNextHome
} from './use-home-start-site-display';
} from '../../../../robotaxi/hooks/use-home-start-site-display';
type Deps = {
  mapState: any;
src/pages/robotaxi/home/hooks/use-navigation.ts
@@ -14,16 +14,16 @@
  RIDE_HOME_EDIT_DROPOFF_EVENT_ID,
  RIDE_HOME_EDIT_PICKUP_EVENT_ID,
  SEARCH_CLICK_EVENT_ID
} from '../../../../robotaxi/pages/begin-route/constants/report-events';
} from '../../../../robotaxi/constants/report-events';
import {
  createReportStationPayload,
  createReportUserCurrentLocationPayload
} from '../../../../robotaxi/pages/begin-route/constants/report-structures';
} from '../../../../robotaxi/constants/report-structures';
import {
  RECOMMENDED_CONFIRM_RIDE_SOURCE_TYPE,
  writeConfirmRideSiteSourceType
} from '../../../../robotaxi/pages/begin-route/constants/confirm-ride-report';
import { resolveHomeStartSiteDisplaySite } from './use-home-start-site-display';
} from '../../../../robotaxi/constants/confirm-ride-report';
import { resolveHomeStartSiteDisplaySite } from '../../../../robotaxi/hooks/use-home-start-site-display';
type Deps = {
  /** 是否未登录 */
src/pages/robotaxi/home/hooks/use-order-ws.ts
@@ -1,6 +1,6 @@
import { useEffect, useRef } from 'react';
import wsManager from '../../../../utils/websocket';
import { TripStatus, toTripStatus } from '../../../../robotaxi/pages/begin-route/constants/trip-status';
import { TripStatus, toTripStatus } from '../../../../robotaxi/constants/trip-status';
type HomeTripStatus = TripStatus | 0;
src/pages/robotaxi/home/hooks/use-quick-capsule.ts
@@ -5,7 +5,7 @@
  RECOMMENDED_CONFIRM_RIDE_SOURCE_TYPE,
  completeConfirmRideSelectionSession,
  writeConfirmRideSiteSourceType
} from '../../../../robotaxi/pages/begin-route/constants/confirm-ride-report';
} from '../../../../robotaxi/constants/confirm-ride-report';
type CapsuleSite = {
  id: string | number;
src/pages/robotaxi/home/hooks/use-region-change.ts
@@ -3,7 +3,7 @@
import {
  HOME_START_SITE_SOURCE_MANUAL_SELECTED,
  writeHomeStartSiteDisplayState
} from './use-home-start-site-display';
} from '../../../../robotaxi/hooks/use-home-start-site-display';
type Deps = {
  mapState: any;
src/pages/robotaxi/home/hooks/use-site-state.ts
@@ -4,7 +4,7 @@
import {
  RECOMMENDED_CONFIRM_RIDE_SOURCE_TYPE,
  writeConfirmRideSiteSourceType
} from '../../../../robotaxi/pages/begin-route/constants/confirm-ride-report';
} from '../../../../robotaxi/constants/confirm-ride-report';
/**
 * 站点与吸附状态管理:统一吸附判断与逆地理地址回填。
src/pages/robotaxi/home/index.tsx
@@ -27,7 +27,7 @@
import { DEFAULT_TEMPERATURE_UNIT } from '../../../utils/weather';
import { _ROBOTAXI_WS_HOST } from '../../../constants/api';
import { DEFAULT_LATITUDE, DEFAULT_LONGITUDE, FIRST_ENTER_KEY } from '../../../robotaxi/constants/map';
import { TripStatus } from '../../../robotaxi/pages/begin-route/constants/trip-status';
import { TripStatus } from '../../../robotaxi/constants/trip-status';
import {
  getBannerList,
  getAgreement,
@@ -53,18 +53,18 @@
  HOME_START_SITE_SOURCE_MANUAL_SELECTED,
  resolveHomeStartSiteDisplaySite,
  writeHomeStartSiteDisplayState
} from './hooks/use-home-start-site-display';
} from '../../../robotaxi/hooks/use-home-start-site-display';
import {
  ensureConfirmRideSelectionStartedAt,
  RECOMMENDED_CONFIRM_RIDE_SOURCE_TYPE,
  resetConfirmRideSelectionContext,
  writeConfirmRideSiteSourceType
} from '../../../robotaxi/pages/begin-route/constants/confirm-ride-report';
import { RIDE_HOME_PAGE_VIEW_EVENT_ID } from '../../../robotaxi/pages/begin-route/constants/report-events';
} from '../../../robotaxi/constants/confirm-ride-report';
import { RIDE_HOME_PAGE_VIEW_EVENT_ID } from '../../../robotaxi/constants/report-events';
import {
  createReportStationPayload,
  createReportUserCurrentLocationPayload
} from '../../../robotaxi/pages/begin-route/constants/report-structures';
} from '../../../robotaxi/constants/report-structures';
type HomeTripStatus = TripStatus | 0;
type UserCurrentLocation = {
src/robotaxi/components/tip-popup/index.less
File was renamed from src/robotaxi/pages/select-map-site/components/css-folder/tip-popup.less
@@ -54,4 +54,4 @@
            color: #FFFFFF;
        }
    }
}
}
src/robotaxi/components/tip-popup/index.tsx
File was renamed from src/robotaxi/pages/select-map-site/components/tip-popup.tsx
@@ -1,7 +1,7 @@
import Taro from '@tarojs/taro';
import { View, Text, Image } from '@tarojs/components';
import { useEffect, useState } from 'react';
import './css-folder/tip-popup.less'
import './index.less'
type Props = {
    show?: boolean;
@@ -58,4 +58,4 @@
            </View>
        </View>
    )
}
}
src/robotaxi/constants/confirm-ride-report.ts
src/robotaxi/constants/modify-destination.ts
src/robotaxi/constants/report-events.ts
src/robotaxi/constants/report-structures.ts
src/robotaxi/constants/trip-status.ts
src/robotaxi/hooks/use-home-start-site-display.ts
src/robotaxi/pages/begin-route/components/begin-route-view.tsx
@@ -5,7 +5,7 @@
import OverRoute from './over-route';
import PassengerNotice from './passenger-notice';
import EvaluatePopup from './evaluate-popup';
import TipPopup from '../../select-map-site/components/tip-popup';
import TipPopup from '../../../components/tip-popup';
import AuthBluetoothPopup from './auth-bluetooth-popup';
import PrivacyPopup from '../../../../pages/robotaxi/home/components/privacy-popup';
import { useBeginRouteViewContext } from './begin-route-view-context';
src/robotaxi/pages/begin-route/hooks/use-page-actions.ts
@@ -13,7 +13,7 @@
import {
  HOME_START_SITE_SOURCE_MANUAL_SELECTED,
  writeHomeStartSiteDisplayState
} from '../../../../pages/robotaxi/home/hooks/use-home-start-site-display';
} from '../../../hooks/use-home-start-site-display';
type Deps = {
  tripStatus: TripStatus;
src/robotaxi/pages/select-map-site/components/select-map-site-view.tsx
@@ -1,6 +1,6 @@
import { View, Map, Text, Image, ScrollView } from '@tarojs/components';
import CustomerServicePopup from '../../../components/customer-service';
import TipPopup from '../components/tip-popup';
import TipPopup from '../../../components/tip-popup';
import { formatTripDistance, formatTripDurationFromSeconds } from '../../../../utils/Robotaxi-public-method';
type Deps = {
src/robotaxi/pages/select-map-site/hooks/use-select-map-site.ts
@@ -23,21 +23,21 @@
  MODIFY_DESTINATION_CANDIDATE_KEY,
  MODIFY_DESTINATION_SKIP_AC_QUERY_ON_RETURN_KEY,
  MODIFY_DESTINATION_SESSION_KEY
} from '../../begin-route/constants/modify-destination';
} from '../../../constants/modify-destination';
import {
  CONFIRM_MAP_DROPOFF_BUTTON_EVENT_ID,
  CONFIRM_MAP_PICKUP_BUTTON_EVENT_ID
} from '../../begin-route/constants/report-events';
import { createReportStationPayload } from '../../begin-route/constants/report-structures';
} from '../../../constants/report-events';
import { createReportStationPayload } from '../../../constants/report-structures';
import {
  HOME_START_SITE_SOURCE_MANUAL_SELECTED,
  writeHomeStartSiteDisplayState
} from '../../../../pages/robotaxi/home/hooks/use-home-start-site-display';
} from '../../../hooks/use-home-start-site-display';
import {
  MAP_CONFIRM_RIDE_SOURCE_TYPE,
  completeConfirmRideSelectionSession,
  writeConfirmRideSiteSourceType
} from '../../begin-route/constants/confirm-ride-report';
} from '../../../constants/confirm-ride-report';
const AUTO_SCALE_MAX = 17; // 自动缩放最大等级
const AUTO_SCALE_MIN = 11; // 自动缩放最小等级
src/robotaxi/pages/select-map-site/index.tsx
@@ -7,7 +7,7 @@
import {
  MAP_SELECT_DROPOFF_PAGE_VIEW_EVENT_ID,
  PIN_PICKUP_LOCATION_PAGE_VIEW_EVENT_ID
} from '../begin-route/constants/report-events';
} from '../../constants/report-events';
import { withRobotaxiWhitelist } from '../../../utils/whitelist';
/**
src/robotaxi/pages/share-trip/components/share-trip-view.tsx
@@ -1,6 +1,6 @@
import { View, Image, Map } from '@tarojs/components';
import { formatDurationDisplay, safeParse } from '../../../../utils/Robotaxi-public-method';
import { TripStatus } from '../../begin-route/constants/trip-status';
import { TripStatus } from '../../../constants/trip-status';
type Props = {
  isExpired: boolean;
src/robotaxi/pages/share-trip/hooks/use-map-markers.ts
@@ -1,6 +1,6 @@
import Taro from "@tarojs/taro";
import { useEffect, useRef, useState } from "react";
import { TripStatus } from "../../begin-route/constants/trip-status";
import { TripStatus } from "../../../constants/trip-status";
type Deps = {
    tripStatus: TripStatus;
src/robotaxi/pages/share-trip/hooks/use-map-viewport.ts
@@ -1,7 +1,7 @@
import Taro from "@tarojs/taro";
import { useCallback, useEffect, useRef, useState } from "react";
import { computeAdaptiveBottomPadding } from "../../../../utils/Robotaxi-public-method";
import { TripStatus } from "../../begin-route/constants/trip-status";
import { TripStatus } from "../../../constants/trip-status";
type Deps = {
    tripStatus: TripStatus;
src/robotaxi/pages/share-trip/hooks/use-route-manager.ts
@@ -1,5 +1,5 @@
import { useEffect, useRef, useState } from "react";
import { TripStatus } from "../../begin-route/constants/trip-status";
import { TripStatus } from "../../../constants/trip-status";
type Deps = {
    isAndroid: boolean;
src/robotaxi/pages/share-trip/hooks/use-share-trip-runtime.ts
@@ -3,7 +3,7 @@
import { mapOrderStatusToTripStatus } from '../../../../utils/Robotaxi-public-method';
import { queryOrderTrajectory, shareQueryOrderInfo, shareQueryOrderRoute } from '../../../api/begin-route';
import { normalizeDistanceKm, normalizeDurationSeconds } from '../../../utils/format';
import { TripStatus } from '../../begin-route/constants/trip-status';
import { TripStatus } from '../../../constants/trip-status';
type LocationPoint = { latitude: number; longitude: number };
src/robotaxi/pages/share-trip/hooks/use-view-delegates.tsx
@@ -1,6 +1,6 @@
import { CoverImage, CoverView, Image, View } from "@tarojs/components";
import { formatDurationDisplay } from "../../../../utils/Robotaxi-public-method";
import { TripStatus } from "../../begin-route/constants/trip-status";
import { TripStatus } from "../../../constants/trip-status";
type Deps = {
    isAndroid: boolean;
src/robotaxi/pages/share-trip/index.tsx
@@ -8,7 +8,7 @@
import useViewDelegates from './hooks/use-view-delegates';
import useShareTripRuntime from './hooks/use-share-trip-runtime';
import ShareTripView from './components/share-trip-view';
import { TripStatus } from '../begin-route/constants/trip-status';
import { TripStatus } from '../../constants/trip-status';
import { isWhiteList } from '../../api/home';
import { subscribeShareTripByTap } from '../../../utils/subscribe';
import { checkOtp } from '../../../utils/tools';
src/robotaxi/pages/site-search/index.tsx
@@ -5,7 +5,7 @@
import { getDistance, reportEvent, toUnixSeconds } from '../../../utils/Robotaxi-public-method';
import { getOrderDistance } from '../../api/select-map-site';
import { checkOtp } from '../../../utils/tools';
import TipPopup from '../select-map-site/components/tip-popup';
import TipPopup from '../../components/tip-popup';
import SiteListItem from './components/site-list-item';
import FavoritePopup from './components/favorite-popup';
import useSiteSearch from './hooks/use-site-search';
@@ -20,7 +20,7 @@
  MODIFY_DESTINATION_CANDIDATE_KEY,
  MODIFY_DESTINATION_SKIP_AC_QUERY_ON_RETURN_KEY,
  MODIFY_DESTINATION_SESSION_KEY
} from '../begin-route/constants/modify-destination';
} from '../../constants/modify-destination';
import {
  RECOMMENDED_DROPOFF_STATION_ITEM_EVENT_ID,
  SEARCH_DROPOFF_RESULT_ITEM_EVENT_ID,
@@ -31,16 +31,16 @@
  SELECT_DROPOFF_LOCATION_MAP_SELECT_BUTTON_EVENT_ID,
  SELECT_PICKUP_LOCATION_HISTORY_PICKUP_ITEM_EVENT_ID,
  SELECT_PICKUP_LOCATION_PIN_PICKUP_LOCATION_BUTTON_EVENT_ID
} from '../begin-route/constants/report-events';
} from '../../constants/report-events';
import {
  createIndexedStationSelectionPayload,
  createReportStationPayload,
  createReportUserCurrentLocationPayload
} from '../begin-route/constants/report-structures';
} from '../../constants/report-structures';
import {
  HOME_START_SITE_SOURCE_MANUAL_SELECTED,
  writeHomeStartSiteDisplayState
} from '../../../pages/robotaxi/home/hooks/use-home-start-site-display';
} from '../../hooks/use-home-start-site-display';
import {
  HISTORY_CONFIRM_RIDE_SOURCE_TYPE,
  RECOMMENDED_CONFIRM_RIDE_SOURCE_TYPE,
@@ -48,7 +48,7 @@
  UNKNOWN_CONFIRM_RIDE_SOURCE_TYPE,
  completeConfirmRideSelectionSession,
  writeConfirmRideSiteSourceType
} from '../begin-route/constants/confirm-ride-report';
} from '../../constants/confirm-ride-report';
import { withRobotaxiWhitelist } from '../../../utils/whitelist';
/**