本文說明 Ceum 的各個部分如何彼此關聯,讓你在整個應用程式中看到的連結與篩選變得合理。這幅圖景刻意保持精簡:少數幾種核心項目類型、一張鬆散的連結網(客戶、專案與任務各自可連結到其中許多其他項目;發票、交易、訂閱、時間記錄與文件則掛在它們之下),再加上一層你可以自行定義的連結。
核心項目類型
- 客戶 ——你為其工作的個人或組織。
- 專案 ——成批的工作,每個可附加到任意數量的客戶,或保持未附加。
- 任務 ——工作的單位,每個可附加到任意數量的專案,或保持未附加。一個任務也可以是另一個任務的子任務。
- 發票 ——單一客戶所積欠的金額;可選擇性地繫結到一個專案。
- 交易 ——個別的收入與支出項目;可選擇性地繫結到一個客戶、專案和/或任務。
- 訂閱 ——週期性支出;它們各自獨立。
- 時間記錄 ——追蹤的工作時間,每筆可附加到任意數量的任務,或保持獨立。
- 文件 ——Markdown 筆記,每份可附加到任意數量的客戶與專案,或保持未附加。
項目彼此如何連結
數個核心連結讓一個項目可以同時連結到許多其他項目,因此你可以為真實的自由接案工作建模——同一份工作會服務於不只一個地方:
- 一個專案可以同時屬於數個客戶——例如兩個客戶共同分攤的共用聘約——或不屬於任何客戶(一個浮動、與客戶無關的專案)。
- 一個任務可以同時屬於數個專案——當一份工作同時供給不只一個合作案時很有用——或不屬於任何專案(一個浮動、一次性的待辦項目)。
- 一筆時間記錄可以同時計入數個任務,或獨立存在而不屬於任何任務。
- 一份文件可以同時連結到數個客戶與數個專案,或不連結到任何項目。
這些之中的每一項都是一組連結,而非單一插槽:依需要新增任意多個、移除其中任何一個,且順序不拘。在整個應用程式中,這些集合會以表單上可移除的標籤片,以及表格中可點選的清單(含「+N」溢位)的形式出現。
少數連結刻意保持單一,因為現實世界中的關係是一對一的:一張發票只開立給確切一個客戶(並可選擇性地對應一個專案),而一筆交易最多連結到一個客戶、一個專案與一個任務。
一切如何相互連結
這張網之所以鬆散,是因為幾乎每個連結都是選填的:
- 一個專案可以沒有客戶——適用於內部工作。
- 一個任務可以沒有專案——適用於一次性的待辦項目。
- 一筆時間記錄可以沒有任務——適用於未繫結到特定工作的時間。
- 一張發票或一筆交易可以沒有專案,或完全沒有客戶。
當你確實設定了連結時,刪除事物會遵循合理的規則。由於專案、任務與時間記錄現在以多對多方式連結,刪除連結的一端只會移除該連結,而不會移除另一端的事物:
- 刪除一個客戶會把該客戶從它所在的任何專案中移除;專案本身保留(連結到其他客戶的專案會保留那些客戶;剩下沒有客戶的專案則變為浮動)。它也會解除任何指向該客戶的發票、交易與文件的連結。
- 刪除一個專案會把該專案從它所在的任何任務中移除;任務本身保留(連結到其他專案的任務會保留那些專案;剩下沒有專案的任務則變為浮動)。它也會解除任何指向該專案的發票、文件與交易的連結。
- 刪除一個任務會把該任務從它所在的任何時間記錄中移除;時間記錄本身保留,且你的追蹤時間總計不受影響(見下文)。它也會解除任何指向該任務的交易的連結。
為何將一筆時間記錄連結到多個任務不會膨脹你的總計
由於一筆時間記錄可以計入數個任務,這點值得明確說明:你的追蹤時間總計絕不會重複計算。 一筆時間記錄永遠是一筆、一段時長的記錄。各項總計——「今日總計」、報告上某個任務的追蹤時間——都只計算每筆記錄確切一次,無論它連結到多少個任務。
數字唯一能合理地加總超過總計的地方,是依任務或專案的明細:一筆連結到兩個任務的記錄,會將其完整時長計入每個任務的分桶,因此這些分桶的加總可能高於整體總計。這是刻意設計的——明細回答的是「有多少時間觸及了每個任務」,而非「這些切片如何劃分總計」。
這會出現在哪裡
- 每個清單頁面上的篩選讓你依這些連結縮小範圍——依專案篩選任務、依客戶篩選交易,依此類推。一個屬於數個專案的任務,會符合其中任一個專案的篩選。請參閱篩選與排序。
- 詳細頁面會並列顯示相關項目。客戶的頁面會列出其專案;專案的頁面會列出其任務;發票會顯示它所屬的客戶。
- 表格會內嵌顯示連結的實體。當一個項目可以有數個連結時——專案的客戶、任務的專案、時間記錄的任務——該欄會將每一個列為可點選的標籤片,並收合成可點選以查看其餘的「+N」。
- 批次編輯使用相同的連結——一次重新指派交易的客戶、專案或任務。
你可以擴充的部分:明確關係
在內建階層之外,Ceum 讓你定義自己的、介於兩個同種項目之間的有向連結:專案對專案,以及任務對任務。你可透過實體關係管理這些連結,並在關係類型之下選擇可用的連結種類。
這種明確連結僅適用於專案與任務,且與上述內建的多對多連結是分開的:它連接兩個同種項目(專案↔專案、任務↔任務),而內建連結連接的是不同種類(專案↔客戶、任務↔專案、時間記錄↔任務)。
顯示 ID
每個項目都會獲得一個像 C-7、P-12 或 T-205 的 ID。你可以在一般設定之下變更字母前綴。這些 ID 是穩定的、絕不重複使用,且永遠以數字順序排序。
提示與邊界情況
- 未附加的項目是一等公民。 Ceum 絕不強制你把專案附加到客戶,或把任務附加到專案。清單與篩選都支援「無專案」/「無客戶」/「無任務」選項。
- 多對多不會重複計算時間。 將一筆時間記錄連結到數個任務絕不會誇大你的總計;只有依任務或依專案的明細才可能加總得更高,而那是刻意設計的。
- 一個連結或多個連結——由你決定。 多對多連結對於確切一筆項目也運作得很愉快(只有單一客戶的專案,行為就跟以前一樣)。當你需要更多時,容納更多的能力就在那裡。
- 沒有共用工作區。 Ceum 只屬於你;請參閱工作區與使用者。
- 同種連結使用關係類型。 若要連接兩個專案或兩個任務,請在它們之間定義一個關係;內建的多對多連結是用來連接不同種類的(任務連到它的專案、專案連到它的客戶)。