frontend
├─ .eslintrc.cjs
├─ .git // Git 紀錄
│  └─ refs
│     ├─ heads
│     │  ├─ lucia-demo-v0.99.0
│     │  └─ main
│     ├─ remotes
│     │  └─ origin
│     │     ├─ lucia-demo-v0.99.0
│     │     └─ main
│     └─ tags
│        ├─ v0.99.0
│        ├─ v0.99.1
│        ├─ v0.99.1.01
│        ├─ v0.99.1.02
│        ├─ v0.99.2
│        ├─ v0.99.3
│        ├─ v0.99.4
│        ├─ v0.99.5
│        ├─ v0.99.6
│        ├─ v0.99.7
│        ├─ v0.99.9
│        └─ v1.0.0
├─ .gitignore
├─ .prettierrc.json
├─ README.md
├─ cypress // E2Etesting 檔
│  ├─ downloads
│  ├─ e2e // 要跑測試的檔案放這邊
│  │  ├─ compare.cy.js
│  │  └─ jsconfig.json
│  ├─ fixtures
│  │  ├─ csv // 上傳功能測試檔
│  │  │  ├─ big5.csv
│  │  │  ├─ corrupted.csv
│  │  │  ├─ empty.csv
│  │  │  ├─ favicon.ico
│  │  │  ├─ insufficient-columns.csv
│  │  │  ├─ rightFile.csv
│  │  │  └─ worngFile.csv
│  │  ├─ doneTesting // 已經測試過的檔案
│  │  │  ├─ conformanceRule.cy.js
│  │  │  ├─ conformanceSave.cy.js
│  │  │  ├─ fileUploadEtc.cy.js
│  │  │  ├─ filterFunnel.cy.js
│  │  │  ├─ loginToLogout.cy.js
│  │  │  ├─ performance.cy.js
│  │  │  └─ saveLogAndFilter.cy.js
│  │  └─ users // 測試用的假帳號資料
│  │     └─ id-not-exists.json
│  ├─ screenshots
│  ├─ support // E2Etesting 元件檔
│  │  ├─ commands.js
│  │  └─ e2e.js
│  └─ videos // E2Etesting 影片
│     └─ compare.cy.js.mp4
├─ cypress.config.js // Cypress E2Etesting 設定檔
├─ doc // 檔案總管
│  └─ structure.txt
├─ index.html // Vite的進入點
├─ package-lock.json
├─ package.json
├─ postcss.config.cjs
├─ public // 不被 JavaScript 引用的靜態資源
│  ├─ chartSpace.jpg
│  ├─ favicon.ico // 網頁標題欄 icon
│  ├─ filterContainment.png
│  └─ timeFrameSlope.jpg
├─ src
│  ├─ App.vue // 網頁根元件
│  ├─ assets // 靜態資源 EX: 圖片, CSS
│  │  ├─ base.css
│  │  ├─ components.css
│  │  ├─ layout.css
│  │  ├─ main.css
│  │  ├─ tailwind.css
│  │  └─ vendors.css
│  ├─ components // 元件檔
│  │  ├─ Compare
│  │  │  └─ SidebarStates.vue
│  │  ├─ Discover
│  │  │  ├─ Conformance
│  │  │  │  ├─ ConformanceResults.vue
│  │  │  │  ├─ ConformanceSidebar
│  │  │  │  │  ├─ ActList.vue
│  │  │  │  │  ├─ ActRadio.vue
│  │  │  │  │  ├─ ActSeqDrag.vue
│  │  │  │  │  ├─ ConformanceRadioGroup.vue
│  │  │  │  │  ├─ ConformanceSelectResult.vue
│  │  │  │  │  ├─ ConformanceShowBar.vue
│  │  │  │  │  ├─ ConformanceTimeRange.vue
│  │  │  │  │  ├─ ResultArrow.vue
│  │  │  │  │  ├─ ResultCheck.vue
│  │  │  │  │  ├─ ResultDot.vue
│  │  │  │  │  └─ TimeRangeDuration.vue
│  │  │  │  ├─ ConformanceSidebar.vue
│  │  │  │  └─ MoreModal.vue
│  │  │  ├─ Map
│  │  │  │  ├─ Filter
│  │  │  │  │  ├─ ActAndSeq.vue
│  │  │  │  │  ├─ ActOcc.vue
│  │  │  │  │  ├─ ActOccCase.vue
│  │  │  │  │  ├─ Attributes.vue
│  │  │  │  │  ├─ Funnel.vue
│  │  │  │  │  ├─ Timeframes.vue
│  │  │  │  │  └─ Trace.vue
│  │  │  │  ├─ SidebarFilter.vue
│  │  │  │  ├─ SidebarState.vue
│  │  │  │  ├─ SidebarTraces.vue
│  │  │  │  └─ SidebarView.vue
│  │  │  └─ StatusBar.vue
│  │  ├─ File
│  │  │  └─ UploadModal.vue
│  │  ├─ Header.vue
│  │  ├─ Loading.vue
│  │  ├─ Navbar.vue
│  │  ├─ Search.vue
│  │  ├─ durationjs.vue
│  │  └─ icons // 放所有 icon 的 svg 檔
│  │     ├─ DspLogo.vue
│  │     ├─ IconDataFormat.vue
│  │     ├─ IconEyeClose.vue
│  │     ├─ IconEyeOpen.vue
│  │     ├─ IconFlowChart.vue
│  │     ├─ IconGrid.vue
│  │     ├─ IconList.vue
│  │     ├─ IconLockKey.vue
│  │     ├─ IconMember.vue
│  │     ├─ IconNA.vue
│  │     ├─ IconRule.vue
│  │     ├─ IconSearch.vue
│  │     ├─ IconSetting.vue
│  │     ├─ IconUploarding.vue
│  │     ├─ IconVector.vue
│  │     ├─ IconWarnTriangle.vue
│  │     └─ IconsFilter.vue
│  ├─ main.ts // 程式進入點
│  ├─ module // JavaScript 邏輯
│  │  ├─ abbreviateNumber.js
│  │  ├─ alertModal.js // SweetAlert
│  │  ├─ apiError.js // API Error 邏輯
│  │  ├─ cytoscapeMap.js
│  │  ├─ cytoscapeMapTrace.js
│  │  ├─ numberLabel.js
│  │  ├─ setChartData.js
│  │  ├─ shortScaleNumber.js
│  │  ├─ sortNumEngZhtw.js
│  │  └─ timeLabel.js
│  ├─ router // Vue Router 路由管理
│  │  └─ index.js
│  ├─ stores // 資料狀態管理器
│  │  ├─ allMapData.js
│  │  ├─ compare.js
│  │  ├─ conformance.js
│  │  ├─ files.js
│  │  ├─ loading.js
│  │  ├─ login.ts
│  │  ├─ main.ts
│  │  └─ performance.js
│  └─ views // 路由元件
│     ├─ AuthContainer.vue
│     ├─ Compare
│     │  └─ Dashboard
│     │     └─ index.vue
│     ├─ Discover
│     │  ├─ Conformance
│     │  │  └─ index.vue
│     │  ├─ Map
│     │  │  └─ index.vue
│     │  └─ Performance
│     │     └─ index.vue
│     ├─ Files
│     │  └─ index.vue
│     ├─ Login
│     │  └─ index.vue
│     ├─ MainContainer.vue
│     ├─ MemberArea
│     │  └─ index.vue
│     ├─ NotFound404.vue
│     └─ Upload
│        └─ index.vue
├─ tailwind.config.js // Tailwind 設定檔
└─ vite.config.js // Vite 設定檔
