A:
謝謝你的詳細詢問,
問題一:選項A。
問題二:選項C。
問題三:新增一個非必填的「選擇專案」。
問題四:能夠將以存在的交易,批次或逐一的加入這個新專案中。
問題五:是的,超過預算時,需要顯示出來提醒使用者。
問題六:是的,專案要有一個結束的功能,已完成專案,就不該出現在新增交易的「選擇專案」下拉選單中,但是應該保留在專案中,能夠批次或逐一的將漏掉的交易,加入專案中。
另外補充記帳統計圖表的功能分析:
1:統計圖表要能夠選擇要不要顯示專案預算項目的比較圖表,當顯示專案預算時,統計圖表中交易統計要確認由原本的主類別中扣除統計,統計顯示到所屬的專案預算中。
2:專案預算顯示的層級跟主類別在同一個層級。
3:選擇專案預算圖表的進一步圖表分析時,能夠看到專案預算交易的主類別圖表分析,進一步選擇專案預算主類別時,也能夠看到這個專案預算主類別次類別的圖表分析。
謝謝
Q:
非常感謝你花時間思考並提供如此清晰、詳盡的需求!
你提出的這些細節,特別是關於「專案」與「主分類」在統計圖表中的互動關係,以及「批次關聯舊交易」的想法,都極具價值。它們將會讓「錢流」App 遠比最初的設想更加強大和智慧。
這也代表功能的複雜度有了顯著的提升。為了確保我們能穩健地完成開發,我將我們原訂的「專案管理」計畫,根據你的新需求,重新拆解成一個更詳細、更有序的開發藍圖。
全新開發藍圖:專案管理 & 進階統計
我建議將接下來的工作分為兩個主要階段:
階段 A:核心專案管理功能 - 先建立起專案的「增刪改查」基礎,並與記帳流程結合。
階段 B:進階整合與統計圖表強化 - 接著處理「批次關聯」和複雜的「統計圖表重構」。
階段 A:核心專案管理功能
第十六步:為「專案」功能更新資料庫與數據層
目標: 讓我們的資料庫能儲存專案的「狀態」,並提供完整的 CRUD(增刪改查)數據操作方法。
具體作法:
修改
Project
Entity: 在Project
資料表中新增一個status
欄位(例如,ACTIVE
,COMPLETED
)。建立
ProjectDao
與Repository
: 建立全新的ProjectDao.kt
和ProjectRepository.kt
,並在其中定義新增、更新、刪除、取得單一專案、取得所有專案等方法。
第十七步:建立專案管理的主介面
目標: 讓使用者有一個可以管理所有專案的地方。
具體作法:
建立
ProjectViewModel
: 負責所有專案管理的業務邏輯。建立
ProjectListScreen
: 根據你的需求(問題一:選項A),這個畫面會是一個簡潔的列表,只顯示所有專案的名稱。上方可以有篩選器來切換查看「進行中」或「已完成」的專案。右下角有 FAB 用於新增專案。建立
AddEditProjectScreen
: 一個獨立的畫面,用於新增或編輯專案的名稱、預算、描述等資訊。修改「新增/編輯交易畫面」: 如你所述(問題三),在這個畫面上新增一個非必填的「選擇專案」下拉選單。這個選單只會顯示**狀態為「進行中」**的專案。
第十八步:建立專案詳情與進度追蹤頁面
目標: 讓使用者能深入了解單一專案的詳細花費狀況。
具體作法:
建立
ProjectDetailScreen
: 當使用者在專案列表點擊任一專案時,會進入此頁面。實作 UI (問題二:選項C):
畫面上方會顯示專案的數據總覽:預算、已花費、剩餘金額。
一個進度條或圖表,當花費超過預算時,會以紅色等警告樣式呈現(問題五)。
畫面下方會列出所有已歸屬於此專案的交易明細。這需要一個新的 DAO 查詢
getTransactionsForProject(projectId)
。
階段 B:進階整合與統計圖表強化
當完成階段 A 後,我們再來處理更複雜的整合與重構。
第十九步:實作「批次關聯交易」功能
目標: 實現你提出的「將已存在交易,批次加入專案」的強大功能(問題四、六)。
具體作法:
在「專案詳情頁」上,新增一個「關聯現有交易」的按鈕。
點擊後,開啟一個新畫面或對話框。這個介面會列出所有尚未歸屬任何專案的交易。
使用者可以在這個列表上,透過勾選框 (Checkbox) 一次選擇多筆交易。
點擊「確認關聯」後,一次性更新所有被選中交易的
projectId
。這需要一個新的updateTransactionsProjectId
的 DAO 方法。
第二十步:重構「統計圖表」的數據邏輯
目標: 實現你對統計圖表提出的全新互動邏輯(統計功能分析 1, 2, 3)。
具體作法:
修改
TransactionDao
: 我們需要改寫現有的統計查詢。新的查詢必須能夠根據「檢視模式」(依分類或依專案)來決定如何分組和計算。例如:分類模式查詢:
GROUP BY
主分類,但WHERE projectId IS NULL
(只計算未歸屬專案的交易),並將所有專案花費合併為一項「專案總支出」。專案模式查詢:
GROUP BY
專案,WHERE projectId IS NOT NULL
。
建立新的 DAO 查詢:
為第一層鑽取建立查詢:
getCategorySumsForProject(projectId, ...)
。為第二層鑽取建立查詢:
getSubCategorySumsForProject(projectId, mainCategoryName, ...)
。
升級
StatisticsViewModel
: 加入新的狀態來管理目前的「檢視模式」、「被選中的專案」、「被選中的主分類」,並根據這些狀態呼叫對應的 DAO 查詢。
第二十一步:更新「統計圖表」的 UI 介面
目標: 將重構後的數據邏輯,呈現在使用者介面上。
具體作法:
在
StatisticsScreen
加入一個切換按鈕,讓使用者可以在「依分類檢視」和「依專案檢視」之間切換。根據 ViewModel 的狀態,讓圖表和列表可以多層級地鑽取下去,動態地顯示主分類、子分類,或專案內的主/子分類統計。
這個全新的、更詳細的開發藍圖,清楚地反映了你的所有想法,並將巨大的功能拆解成了一步步可以實現的具體任務。
如果同意這個計畫,我們就可以從階段 A 的第十六步:為「專案」功能更新資料庫與數據層開始動手了。你覺得如何?