Transactionの編集機能と、それに合わせてAuditLog機能を追加した

まずは、SinglePairのみ

基本的には仕訳帳を使わないUIを目指しているので、まず、SinglePairの編集対象にはCounterparty(取引相手)も含めた。売上・経費どちらの編集でも、勘定科目と金額だけでなく取引相手も直せるようにした。

1仕訳の修正はTransactionRevisorの延長

修正の入口は、7月に作ったTransactionRevisorをそのまま拡張する形にした。「旧版を無効化し、新版を新規作成する」という改訂の流儀は変えず、対象をSinglePairのTransactionにも広げた。共通処理をリファクタリングして、複数の改訂経路(既存の1行修正、SinglePair編集)で同じ土台を使うようにしている。

AuditLog機能

Transactionの作成・修正・削除、それぞれのタイミングでAuditLogを保存するようにした。「誰が」「いつ」「何を」変更したかを追える記録が、編集機能を入れる以上は必須だと考えたため。

修正時のログには、変更前後の差分を人間が読める形で持たせたかったのでTransactionDiffとそのFormatterを別途用意した。DBの生の値をそのまま並べても何が変わったのか分かりにくいので、勘定科目名や金額を整形してから差分として出す。

閲覧用のUIも作り、Transaction一覧からAuditLogを辿れるようにした。

ついでに一覧のデザインも整理

Transaction一覧を月ごとにタブでグループ化した。編集・削除機能が増えて1画面に表示する情報が増えたので、ここで一度整理しておいた方がよいと判断した。あわせてUIにTabコンポーネントを追加している。経費の種類一覧ページから経費登録コンポーネントを削除したのも同じ整理の一環で、登録と一覧の役割が1画面に混ざっていたのを分けた。

Transaction一覧に削除機能も追加

編集と合わせて、Transaction一覧からの削除機能も入れた。