iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0

今天,我們會介紹這次專案對我來說比較難的有挑戰的點,接著再將功能細分規劃實作。將一個大項目拆成很多小項目也是一個必要的技能。

挑戰點

我背景是在工廠擔任研發工程師,我想如果有待過工廠或是工作一段時間要寫KPI之類的話,應該對紅綠燈評估法不陌生吧。

紅綠燈評估方法

紅綠燈評估是一種常見的風險管理方法,主要用來快速視覺化當前工作或項目的狀態。這種方法通常被稱為 RAG Status (Red-Amber-Green) 狀態報告,表示風險或工作進度的「紅燈」、「黃燈」、「綠燈」。它能幫助管理者或團隊成員更容易識別問題、風險或需要優先解決的事項。

  • 紅燈(Red)🔴:表示有高風險或重大問題,沒使用過或學習過,需要花很多時間學習。
  • 黃燈(Amber)🟡:表示有潛在風險或問題,有用過但不太熟悉
  • 綠燈(Green)🟢:表示沒什麼問題,很熟悉。

挑戰點評估表格

挑戰項目 熟悉度 評估
React Native 開發 🟡 雖然我熟悉 React,但 RN 未使用過,需要額外學習。
資料庫設計 🟡 資料庫架構設計經驗不多,但因為需求簡單,應該可以應對。
PDF 檔案填寫 🔴 從未嘗試過,新的技術挑戰,需要學習與實作。
後端 email 寄信 🟢 有相當經驗,可以快速實現。
後端技術的掌握 🔴 對 Nest.js 不熟悉,需要學習和探索。
OCR 技術串接 🟡 雖然之前有串接經驗,但 AWS OCR 是新挑戰,可應付。
Docker 使用 🟡 雖然不熟悉,但僅是簡單打包和部署,問題不大。
CI/CD 流程 🟡 有基礎,但對於詳細設置和優化還需進一步學習。
APP 上架技術 🔴 有修改過 Swift 並更新APP,但沒有從頭發佈過需要學習。

整體對我來說,算是滿多有新的領域要學習實作。但我本人滿喜歡學習和實作新的東西,應該不會是太大的問題。

功能拆分

要做一個很大的專案的時候,把功能拆細一點除了比較好管理以外,我個人覺得有助於完成目標。比較不會有,哇~好大不知道從哪裡下手的感覺。

把功能才細一點,也會比較有成就感,慢慢地完成一件又一件小小的事情累積起來的那種成就感。這件事對我來說滿重要的。

協作能力:
如果專案不是只有你一個人獨立開發,有其他的人。那麼把項目拆小是一件很重要的事。方便和其他人一起協作,檢視劃分工作。但這個時候拆的功能細度和說明就要更詳細了。

像是公司愛用的Jira(如下圖),就可以更好的管理各位成員的進度狀況。

我們功能分成下面幾個部分

功能 1:用戶登入

前端部分:

  • 登入頁面設計與實作
    • 實現簡單的登入與註冊介面,。
    • 使用 React Native,並選擇合適的 UI 套件。
  • 前端狀態管理
    • 使用 Redux Toolkit 管理登入狀態,處理使用者登入後的 Token 儲存。
    • 設定前端與後端的 API 溝通。

後端部分:

  • 後端 API 實作
    • 使用 Nest.js 創建會員系統,並實現登入功能。
    • 建立 JWT 驗證,確保用戶登入時能獲取 Token。
    • 使用 MongoDB 儲存和驗證用戶資料。

功能 2:事故報告表單

前端部分:

  • 表單頁面設計
    • 設計多步驟的事故報告表單頁面,包含上傳照片(如駕駛證、車輛行照)。
    • 使用 React Native Camera 實現照片拍攝和上傳功能。
  • 表單數據管理
    • 使用 Redux Toolkit 管理表單提交狀態,並驗證用戶輸入的數據是否正確。

後端部分:

  • 後端 API 實作
    • 使用 Nest.js 實現報告表單的 CRUD API。
    • 將上傳的照片存儲在 AWS S3,並提供相應的 API 進行讀取。
    • 對表單數據進行驗證和處理,確保數據完整且正確。

功能 3:PDF 預覽與匯出

前端部分:

  • PDF 預覽與下載
    • 在前端實現 PDF 預覽功能,使用 React Native PDF 顯示用戶提交的報告內容。
    • 提供下載或分享 PDF 文件的選項,讓用戶可以保存自己的報告。

後端部分:

  • 後端 PDF 生成
    • 使用 Nest.js 生成報告的 PDF 文件,將表單資料填入模板中。
    • 透過 API 將生成的 PDF 傳送到前端,供用戶進行預覽和下載。

功能 4:照片上傳與 OCR 辨識

前端部分:

  • 上傳照片與預覽
    • 在事故報告表單中,實現上傳駕駛證和車輛行照的功能。
    • 使用 React Native Camera 實現拍照並顯示照片預覽。

後端部分:

  • OCR 辨識與處理
    • 使用 AWS Textract 進行照片中的文字識別,並提取駕駛證和行照中的關鍵數據。
    • 將識別出的資料回傳給前端,進行自動填表。

功能 5:部署與 CI/CD

部署部分:

  • Docker 打包與部署
    • 使用 Docker 將後端服務打包,並部署到 AWS EC2 上運行。
    • 確保應用可以穩定運行,並且容易擴展和維護。

CI/CD 部分:

  • 自動化流程
    • 設置 CI/CD 流程,通過 GitHub Actions 自動化測試與部署。
    • 按鍵部署,自動進行測試和部署,確保新功能無錯誤。

總結

總結上面的功能部分,將功能再細分成前後端的工作細項並作成下面的表格,大致上後面的挑戰會依據這個順序將這個專案完成。

老實說我在寫這個的同時,我這個專案只做到一半而已。主要方向會是我把關鍵技術拿出來講解。如果有不明白或是想瞭解更多的,歡迎留言和我說,我之後可以再補充甚至可以給大家範例碼。

功能 類型 項目 文章連結
Setup 前端 React Native 初始化設置
前端 Hello World & UI 基本功能
前端 UI 套件選擇與登入頁面實作
後端 Nest.js 介紹與初始設置
後端 CRUD API 測試與實作
前端 前後端溝通(RN Redux 設定與整合)
會員功能 後端 會員系統功能開發
前端 會員功能前端開發
CHP55 事故報告表單 後端 表單欄位設計與資料結構規劃
後端 表單 CRUD 功能與列表實作
前端 表單新增與列表顯示功能開發
前端 表單修改與刪除功能開發
前端 欄位設計與組件抽象化
前端 模組化表單邏輯開發
PDF 後端 PDF 表單欄位填寫功能實作
後端 生成 PDF 並傳送至前端
前端 PDF 文件預覽功能開發
上傳證件 後端 圖片上傳 API 開發,設定圖片存放位置
後端 將圖片存放至 AWS S3
後端 圖片讀取 API 開發
前端 圖片上傳與顯示功能開發
OCR 辨識 後端 AWS OCR 串接與資料處理
Docker 打包 部署 使用 Docker 打包 API
EC2 部署 部署 部署 API 至 AWS EC2
TestFlight 發布 部署 發布測試版本至 TestFlight 平台
CICD 流程 部署 設定 CI/CD 自動化流程
#it鐵人

上一篇
[Day 05] 從零開始的技術選擇
下一篇
[Day07] React Native 開發入門:從 Setup 到啟動專案
系列文
30天 使用chatGPT輔助學習APP完成接案任務委託30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言