# 旅遊小幫手
## Introduction
### 目的
本系統旨在打造一個一站式的智慧 AI 旅遊助手平台,整合旅遊相關的各項功能,從查詢景點、行程規劃、導覽導遊、互動建模、到翻譯與記錄旅程,皆可在單一平台內完成。透過 AI 技術,我們希望使用者能:
- 節省搜尋與安排的時間
- 根據個人需求獲得最佳推薦
- 在旅途中獲得即時、互動式的資訊支援
- 提升整體旅遊的效率與體驗品質
### 動機
現今市面上的旅遊應用程式雖然功能豐富,但往往分散在多個平台中,導致使用者在行前、行中與行後都需要反覆切換不同 App,不僅操作麻煩,也容易遺漏重要資訊。此外:
- 多數應用缺乏 AI 智能整合,無法針對個人偏好自動推薦與整理資訊。
- 許多使用者在行前做了大量功課,卻難以在旅途中快速回顧。
- 評論與資訊數量龐大且雜亂,使用者難以掌握重點。
- 部分功能如 AR/VR 導覽、語音翻譯、旅遊日記,仍未被主流平台完整納入。
因此,我們希望透過 AI 整合與創新互動介面,解決功能分散、資訊過載、使用效率低落等問題,提升使用者從規劃到旅行實際體驗的全流程便利性與智慧化。
## Current System
### Comparison
| 功能 | AI 旅遊助手 | chicTrip | TripAdvisor | Google Map |
|:--:|:--:|:--:|:--:| :--: |
| 地圖 | 提供室外地圖與即時資訊 | 無內建地圖<br>依賴 Google Maps | 無內建地圖<br>依賴 Google Maps |提供地圖與部分地點資訊 |
| 興趣點 | 提供詳細資訊 | 提供詳細資訊 | 提供詳細資訊 | 提供詳細資訊 |
| 評分與留言 | AI 匯總評分與推薦評論 | 支援使用者評分與留言 | 支援使用者評分與留言 | 支援使用者評分與留言 |
| AI 歸納 | AI 整理並提供參考建議 | 不支援 | 不支援 | 不支援 |
| 建模與查看 | 建模與互動 | 不支援 | 不支援 | 部分地點適用 |
| 景點尋找 | AI 推薦旅遊景點 | 手動搜尋、無 AI 輔助 | 手動搜尋、無 AI 輔助 | 手動搜尋、無 AI 輔助 |
| 景點導覽 | AI 文字或語音導覽 | 不支援 | 不支援 | 不支援 |
| AR 導覽 | 現場獲取互動式資訊 | 不支援 | 不支援 | 部分地點適用 |
| VR 導覽 | 虛擬實境體驗 | 不支援 | 不支援 | 部分地點適用 |
| 景點規劃 | AI 自動生成最佳行程 | 手動規劃、無 AI 輔助 | 規劃推薦、無 AI 輔助 | 不支援 |
| 路線規劃 | AI 推薦安排方式 | 根據距離推薦路線 | 手動拖移、無 AI 輔助 | 不支援 |
| 旅遊日記 | 圖文記錄旅程、AI 整理 | 記錄日記、無 AI 整理 | 不支援 | 不支援 |
| 景點清單 | 收藏景點、AI 推薦行程 | 收藏清單、無 AI 推薦 | 收藏清單、無 AI 推薦 | 收藏清單、無 AI 推薦 |
| 商品清單 | 記錄想購買的商品 | 不支援 | 不支援 | 不支援 |
| 即時對話翻譯 | 多語言即時語音翻譯 | 不支援 | 不支援 | 不支援 |
| 即時掃描翻譯 | 透過相機快速掃描翻譯內容 | 不支援 | 不支援 | 不支援 |
| 優點 | AI 旅遊助手 | chicTrip | TripAdvisor | Google Map |
| :--: | :--: | :--:| :--:| :--: |
| 整合分散功能 | 一站式體驗 | 功能較為獨立 | 無明顯整合功能 | 以地圖與導航為核心 |
| AI 支援 | 各式 AI 功能 | 無 AI 支援 | 無 AI 功能 | 提供基於數據的建議 |
| 介面簡單 | 簡單易用 | 簡單易懂 | 操作需習慣 | 介面簡潔 |
| 清晰景點資訊 | AI 整理資訊 | 精選的資訊、簡潔 | 大量評論、雜亂 | 大量評論、雜亂 |
| 大量的資料 | 整個網路都是資料 | 數據量有限| 評論與評分數多 | 評論與評分數多 |
| 了解地點 | AI 生成摘要 | 完整度不一 | 提供不同觀點 | 提供不同觀點 |
| 即時室外地圖 | 提供即時資訊 | 無即時地圖 | 無即時地圖 | 地圖功能完整 |
| 精確導航 | AI 計算路線 | 依賴第三方地圖 | 無內建導航 | 導航功能完整 |
| 支援全球範圍 | 整個網路都是資料 | 針對特定旅遊市場 | 部分區域資料較少 | 全球皆可使用 |
| 缺點 | AI 旅遊助手 | chicTrip | TripAdvisor | Google Map |
| :--| :-- | :-- | :-- | :-- |
| AI 依賴性過強 | 極度仰賴 AI 判斷 | 無 AI 支援 | 無 AI 支援 | 無 AI 支援 |
| 沒有 AI 輔助 | 有 AI 功能 | 無 AI 功能 | 無 AI 功能 | 無 AI 功能 |
| 需要大量數據支持 | 需要大量的數據 | 少數使用者分享 | 許多使用者評論 | 全球使用者貢獻數據 |
| 功能不夠完整 | 完整的功能體驗 | 功能較為單一 | 功能較為單一 | 功能較為單一 |
| 評論偏向主觀 | AI 整理評論 | 評論較主觀 | 評論較主觀 | 評論較主觀 |
| 沒有導覽 | AI 導覽 | 使用者手動安排 | 無導覽功能 | 無導覽功能 |
| 沒有行程規劃 | AI 規劃行程 | 使用者手動安排 | 無規劃功能 | 使用者手動安排 |
## Proposed system
### Overview
- 地圖服務
- 提供即時室外地圖,顯示位置與景點資訊,支援導航功能
- 興趣點探索
- 瀏覽景點資訊、評論與評分,支援 AI 重點整理與 3D 互動展示
- AI 導遊
- 根據使用者興趣與位置推薦景點,並提供語音、AR、VR 導覽功能
- AI 行程規劃
- 依據時間、偏好與交通資訊,自動生成最佳化行程與路線
- 旅遊日記
- 使用者可圖文記錄旅程,由 AI 協助整理每日亮點
- 願望清單
- 收藏想造訪的地點與商品,系統自動推薦相關行程
- 翻譯工具
- 支援即時語音與掃描翻譯,協助旅途中語言溝通
### Functional Requirement
- 地圖
- 地圖:提供室外地圖
- 興趣點
- 介紹:提供景點、餐廳、住宿等地點的詳細資訊
- 評分與留言:使用者可為地點評分、撰寫評論
- AI 歸納:透過 AI 分析熱門評論、整理重點資訊與提供參考連結
- 建模與查看:支援建模與互動,讓使用者能更直觀地瀏覽興趣點
- AI 導遊
- 景點尋找:根據使用者興趣與位置,推薦適合的旅遊景點
- 景點導覽:提供文字或語音導覽,提升遊覽體驗
- AR 導覽:透過擴增實境技術,讓使用者在現場獲取互動式資訊
- VR 導覽:支援虛擬實境體驗,讓使用者不出門也能探索世界
- AI 行程規劃
- 景點規劃:根據旅遊時間、興趣與評價,自動生成最佳行程
- 路線規劃:整合交通資訊,推薦最有效率的移動方式與行程順序
- 日記
- 旅遊日記:使用者可透過圖文記錄旅程,並由 AI 幫助整理亮點
- 願望清單
- 景點清單:收藏想造訪的景點,方便未來規劃旅行
- 商品清單:記錄想購買的紀念品或特色商品,避免錯過當地好物
- 翻譯
- 即時對話翻譯:支援多語言語音翻譯,幫助旅途中與當地人溝通
- 即時掃描翻譯:透過相機拍攝,快速翻譯標誌、菜單與文件內容
### Nonfunctional Requirement
#### User Interface and Human Factors
- What type of user will be using the system?
- 主要使用者為旅遊愛好者、自由行旅客、背包客以及各種需要行程規劃的使用者。
- Will more than one type of user be using the system?
- 是,包含一般旅客與餐廳/景點業主等。
- What training will be required for each type of user?
- 會有簡潔的教學,力求直觀與方便操作,同時保持美觀。
- 根據使用者的身分,透過動畫,互動式地指引使用者操作功能。
- 旅遊者:提供地圖、興趣點、導遊與行程規畫等功能教學。
- 業主:上傳/更新店家資訊與後台數據等功能教學。
- Is it important that the system is easy to learn?
- 是,要給予使用者良好的使用體驗,需確保 UI/UX 友善,讓大家都能快速上手。
- Should users be protected from making errors?
- 是,若系統發現使用者不正確使用就有相應的應對機制。
- What input/output devices are available?
- 手機、平板、電腦、VR 設備、AR 設備。
- 於 Hardware Considerations 對裝置具體細節有進一步說明。
#### Documentation
- What kind of documentation is required?
- 系統需求文件、系統設計文件、系統測試文件。
- 使用者指南、隱私政策與服務條款。
- What audience is to be addressed by each document?
- 旅客(使用者指南)、業主(使用者指南)、開發者(系統類文件)。
#### Hardware Considerations
- What hardware is the proposed system to be used on?
- 輸入裝置
- 手機、平板:觸控螢幕。
- 電腦:鍵盤、滑鼠。
- VR 設備:體感控制器(搖桿、手勢)。
- AR 眼鏡:配套控制器(搖桿、手勢)。
- 輸出裝置
- 電腦、平板、手機:螢幕,顯示文字、圖片、影片等內容,並提供操作介面進行互動。
- VR:螢幕,顯示建模之場景等內容,並結合體感控制器進行互動。
- AR:螢幕,在使用者視野中疊加數位內容,並結合配套控制器進行互動。
- 喇叭、耳機:在導遊等功能支援語音時播放。
- VR / AR 規格詳情
- VR
- HTC Vive:建議至少 2 基站追蹤器、可支援 6DoF 動作捕捉。
- Meta Quest:內建 Inside-Out 追蹤、6DoF 控制器。
- AR
- Microsoft HoloLens:內建深度攝影機、空間繪製與手勢控制。
- Magic Leap:空間定位、手勢控制器。
- 建議確保使用者端具有足夠效能以順暢運行複雜 3D 場景或即時擴增實境。
- Apple Vision Pro:M2 晶片
- 8 核心 CPU 、10 核心 GPU、16 核心神經網路引擎、16GB 統一記憶體
- What are the characteristics of the target hardware, including memory size and auxiliary storage space?
- 伺服器建議 RAM 為 128GB 以上。
- 伺服器儲存空間需要 100TB 以上。
#### Performance Characteristics
- Are there speed, throughput, response time constraints on the system?
- 系統在 1000 位使用者內需要1秒內回應使用者。
- 整個系統可以乘載 10000 人以下的使用者同時使用。
- 加強後端伺服器架構,否則依賴單一伺服器會導致負載過高。
- Are there size or capacity constraints on the data to be processed by the system?
- 興趣點
- 純文本的資訊不超過 100 MB
- 圖片的資訊不超過 1 GB
- 建模無資料量限制
#### Error Handling and Extreme Conditions
- How should the system respond to input errors?
- 提供清楚的錯誤提示,例如語音輸入錯誤時,允許重試或手動輸入。
- 當系統當掉時,啟用備用伺服器來應付。
- 網路塞車,使用排隊來限制人數進入系統。
- How should the system respond to extreme conditions?
- 無網路時:提供部分離線地圖與翻譯功能。
- 裝置效能低:啟用低效能模式,減少動畫與即時運算負擔。
- GPS 訊號弱:提供 AI 預測定位與使用者手動選擇位置的選項。
#### System Interfacing
- Is input coming from systems outside the proposed system?
- 一般 API:地圖、興趣點、天氣、交通、商品、翻譯
- AI API:LLM
- Is output going to systems outside the proposed system?
- 一般 API:地圖、興趣點、天氣、交通、商品、翻譯
- AI API:LLM
- Are there restrictions on the format or medium that must be used for input or output?
- 都以 JSON 作為資料格式
#### Quality Issues
- What are the requirements for reliability?
- 伺服器有 90% 以上的可用性,每天允許的最大停機時間不超過 30 分鐘。
- 備用伺服器確保即使發生故障,系統仍能正常運作。
- Must the system trap faults?
- 捕捉錯誤並提供適當的錯誤處理機制。
- What is the time for restarting the system after a failure?
- 當系統出現故障,需在 10 分鐘內自動重新啟動,並使用備援機制確保最小的服務中斷。
- Is there an acceptable downtime per 24-hour period?
- 每天允許的最大停機時間不超過 30 分鐘,系統會透過後備機制將停機時間降至最低。
- Is it important that the system be portable?
- 是,系統需多種設備,具備跨平台兼容性,確保使用者能在不同裝置上獲得一致的體驗。
#### System Modifications.
- What parts of the system are likely to be modified?
- AI 類功能、第三方API
- 地圖、興趣點、行程規劃、日記、願望清單
- What sorts of modifications are expected?
- UI、UX
- 安全性
- 資料
#### Physical Environment.
- Where will the target equipment operate?
- 伺服器應運行於穩定的環境中,並至少配置兩台伺服器互為備援,以應對突發狀況。
- Amazon Web Services (東京)
- Is the target equipment in one or several locations?
- 伺服器應分布於多個地點,以降低火災、停電等意外事故的影響。
- Will the environmental conditions be ordinary?
- 機房需維持適當的溫度與濕度,並配備空調等環境調節設備。
#### Security Issues
- Must access to data or the system be controlled?
- 劃分使用者、業者及開發者權限。
- 所有使用者個人資訊都要有相關文件去規範個資的產生、保管、留存及銷毀。
- 後端商業資料應嚴格區分開發人員能取得資料的權限。
- 保證使用者個資無法被開發人員取得。
- Is physical security an issue?
- 是,需要管理實體機房、工作區域的資訊安全。
- 機房需設有多層次的物理防衛機制,如:實時監控、門禁。
- 防止資料被物理機制破壞:火災控管、濕度控管、防震、防突波電流。
#### Resources and Management Issues
- How often will the system be backed up?
- 系統資料必須每小時進行自動備份。
- 分散式系統能夠將資料同時儲存在多部伺服器上。
- 備份儲存時間
- 短期備份:2 個月、備份所有資料。
- 中期備份:6 個月、備份重要資料。
- 長期備份:1 年、備份關鍵資料。
- Who will be responsible for the back up?
- 系統本身會進行自動備份。
- 系統管理員為主要負責人,系統管理員需檢查是否有備份到。
- Who is responsible for system installation?
- 系統管理員。
- 使用者。
- Who will be responsible for system maintenance?
- 從開發團隊挑選並額外增加人員成立維運團隊。
## Scenario
- 宜臻坐在書桌前,使用平板開啟「旅遊小幫手」App。
- 她點選主畫面的「AI 行程規劃」圖示。
- 系統切換至設定頁面,她輸入:
- 出發地:「台北」
- 目的地:「花蓮」
- 天數:「4天」
- 日期:「7月5日~7月8日」
- 偏好:「自然風景」、「歷史建築」
- 點擊「開始規劃」,系統顯示提示「為您規劃中……」。
- 幾秒後,畫面顯示四日行程,包括每個景點卡片、推薦時間與交通安排。
- 她點選第一天的「松園別館」卡片,進入詳細資訊頁面,查看:
- 景點介紹
- 熱門評論摘要(由 AI 歸納)
- 圖片與實用資訊(開放時間、交通方式等)
- 點選「← 返回」,她回到行程卡片瀏覽模式。
- 她發現「花蓮文化創意產業園區」排在第一天晚上過於普通,點選右上角垃圾桶圖示。
- 系統彈出確認:「是否刪除此行程?將重新計算路線與時間」→ 她點選「確定」
- 景點被移除,系統即時重排路線與交通時間。
- 她覺得「七星潭」更適合第一天下午:
- 長按「七星潭」卡片 → 拖曳至第一天下午。
- 放手後畫面更新順序與地圖路線。
- 她想到朋友推薦的「石梯坪」:
- 點選「新增景點」→ 輸入「石梯坪」→ 點擊加入 → 拖曳排入「第二天下午」。
- 景點成功加入行程,系統更新路線與預估交通時間。
- 修改完成後,宜臻檢視行程頁面,確認內容無誤。
- 她點選畫面下方的「完成規劃」按鈕,回到主畫面。








## Use case models
- Use case
- Planning and Landmark Navigation(行程規劃)
- Participating Actors
- 使用者(如旅遊規劃者、學生、觀光客)
- AI 規劃模組
- Entry Condition
- 使用者已開啟 App。
- Flow of Events
- 使用者點選「AI 行程規劃」。
- 使用者可以輸入出發地、目的地、日期、天數與偏好類型。
- 使用者確認資料後,點選「開始規劃」。
- 系統生成行程卡片,包含景點卡片、交通建議與時間安排。
- 使用者可以檢視、編輯、新增或刪除景點。
- 使用者完成行程編輯後,點選「完成規劃」,行程儲存。
- 返回主頁面。
- Exit Condition
- 行程成功儲存。
- Exceptions
- 網路中斷,無法下載或更新行程/景點資訊。
- 景點資料庫缺少地標或無法推薦。
- Nonfunctional Requirements
- 使用介面直覺與快速反應:介面須具備高直覺性,操作反應時間短。
- 多語系支援:支援中英文操作介面,語音導覽須支援在地語言與離線使用。
- 高效能行程規劃:行程規劃作業須於 5 秒內完成。
- 資訊計算準確性:行程與路線計算、景點資訊與交通時間需具備高準確度。
## Class identification from use case models
### Data dictionary
#### 名詞
| Example | Part of speech | UML model component | 型態 | 說明 |
|----------------------|----------------|-----------------------------------|---------|------------------------------------------------|
| 使用者 | 名詞 | `User` | class | 使用本系統進行旅遊規劃的使用對象 |
| 旅遊介面 | 名詞 | `TravelView` | class | 使用者進行操作與互動的主要畫面 |
| 系統 | 名詞 | `TravelAssistantSystem` | class | 執行行程規劃與景點管理的核心邏輯系統 |
| 行程 | 名詞 | `Itinerary` | class | 包含多日景點與時間安排的完整旅遊規劃 |
| 行程卡片 | 名詞 | `ItineraryCard` | class | 在介面中顯示單一景點的資訊卡片 |
| 景點 | 名詞 | `Attraction` | class | 使用者將造訪的觀光位置 |
| 公共景點 | 名詞 | `PublicAttraction` | class | 從外部來源擷取的開放式景點資料 |
| 私人景點 | 名詞 | `PrivateAttraction` | class | 使用者自訂的景點資料 |
| 景點安排 | 名詞 | `AttractionSchedule ` | class | 指定景點於特定日與時間造訪的配置與交通建議 |
#### 形容詞
| Example | Part of speech | UML model component | 型態 | 說明 |
|----------------------|----------------|-----------------------------------|------------|----------------------------------------------------|
| 行程標題 | 形容詞 | `Itinerary.title` | String | 行程的名稱或主題標示 |
| 出發地 | 形容詞 | `Itinerary.startLocation` | String | 行程的起點 |
| 目的地 | 形容詞 | `Itinerary.destination` | String | 行程的終點 |
| 日期區間 | 形容詞 | `Itinerary.dateRange` | DateTime | 行程的開始與結束時間範圍 |
| 天數 | 形容詞 | `Itinerary.days` | DateTime | 行程所涵蓋的天數總計 |
| 行程偏好 | 形容詞 | `Itinerary.preference` | String | 使用者偏好的旅遊類型或活動偏好 |
| 景點標題 | 形容詞 | `Attraction.title` | String | 景點的標題 |
| 圖片 | 形容詞 | `Attraction.image` | Blob | 景點的配圖 |
| 景點介紹 | 形容詞 | `Attraction.description` | String | 景點的官方簡介 |
| 熱門評論摘要 | 形容詞 | `Attraction.reviewSummary` | String | 系統彙整的熱門評論精華 |
| 景點實用資訊 | 形容詞 | `Attraction.practicalInfo` | String | 景點相關的實用參訪資訊 |
| 資料來源 | 形容詞 | `PublicAttraction.source` | String | 景點資訊的來源 |
| 建立者編號 | 形容詞 | `PrivateAttraction.createdBy` | String | 哪個使用者建立的景點 |
| 景點順序 | 形容詞 | `AttractionSchedule.attractionOrder` | Integer | 景點在每日中的順序 |
| 推薦時間 | 形容詞 | `AttractionSchedule.displayTime` | DateTime | 建議參訪該景點的理想時間點 |
| 交通建議 | 形容詞 | `AttractionSchedule.transportationInfo`| String | 各景點之間的移動方式與交通耗時建議 |
#### 動詞
| Example | Part of speech | UML model component | 型態 | 說明 |
|----------------------|----------------|---------------------------------------|----------|----------------------------------------------------------|
| 顯示行程設定 | 動詞 | `TravelView.displayItinerarySetting()` | void | 在畫面上呈現行程相關設定選項 |
| 開始行程規劃 | 動詞 | `TravelView.planItinerary()` | Itinerary | 根據輸入自動產生初始行程 |
| 顯示行程 | 動詞 | `TravelView.displayItinerary()` | void | 呈現目前已建立的行程與細節資訊 |
| 檢視景點 | 動詞 | `TravelView.searchAttraction()`| Attraction | 尋找所選景點的詳細 |
| 顯示景點詳情 | 動詞 | `TravelView.displayAttractionInfo()`| void | 顯示所選景點的詳細資訊 |
| 新增景點卡片 | 動詞 | `TravelView.addAttraction()`| Itinerary | 新增景點卡片 |
| 刪除景點卡片 | 動詞 | `TravelView.deleteAttraction()`| Itinerary | 刪除景點卡片 |
| 拖曳景點卡片 | 動詞 | `TravelView.moveAttraction()`| Itinerary | 重新排序景點卡片以調整參訪順序 |
| 更新行程卡片 | 動詞 | `TravelView.displayUpdateItinerary()`| void | 更新 UI 上對應景點卡片的顯示內容 |
| 完成行程規劃 | 動詞 | `TravelView.saveItinerary()`| Boolean | 儲存行程規劃 |
| 返回主畫面 | 動詞 | `TravelView.returnToMainPage()`| void | 返回主畫面 |
| 新增行程 | 動詞 | `TravelAssistantSystem.createItinerary()` | Itinerary | 新增行程 |
| 檢視景點 | 動詞 | `TravelAssistantSystem.searchAttraction()`| Attraction | 尋找所選景點的詳細資訊 |
| 新增景點 | 動詞 | `TravelAssistantSystem.addAttraction()`| Itinerary | 新增景點 |
| 刪除景點 | 動詞 | `TravelAssistantSystem.deleteAttraction()`| Itinerary | 刪除景點 |
| 編輯景點安排 | 動詞 | `TravelAssistantSystem.changeAttractionSchedule()`| Itinerary | 調整景點在行程中的時間與順序安排 |
| 儲存行程 | 動詞 | `TravelAssistantSystem.saveItinerary()` | Boolean | 將目前行程內容保存 |
### 類別圖關聯性

## Sequence diagram

## Activity diagram

## StateChart Diagram

## Navigation Path
