リリースノート
v3.6.0
伝票複写機能
- 元帳の仕訳編集モーダルに「複写」ボタンを追加
- 既存伝票の内容(摘要・明細行)をコピーして新規伝票を作成
- 複写時は日付を今日に変更、伝票番号は新規採番、証憑は引き継がない
- 確定済み期間の伝票からも複写可能
POST /journal/create-apiエンドポイント新設(モーダルからのJSON新規作成)- pytest 695件(うち新規6件)
v3.5.6
セキュリティ強化 — Dependabot対応 + Code Scanning修正
- Flask 3.1.0→3.1.3, Werkzeug 3.1.3→3.1.6, cryptography >=46.0.6 に更新(CVE-2025/2026対応)
- 仕訳一括削除のリダイレクトURLにオープンリダイレクト対策を追加
- Passkey登録画面のエラー表示をtextContentに変更(XSS対策)
- GitHub セキュリティ機能を有効化(Dependabot alerts/updates, Secret scanning, Code scanning, Private vulnerability reporting)
- pytest 689件
v3.5.5
照合を行単位マッチングに変更
- 同一仕訳の複数CC行(例: ¥12,000×4 + ¥610×2 + ¥1,840)を個別にCSV行とマッチングするように変更
- 合算方式ではCSV側の個別金額とマッチしないケースを修正
used_entry_idsをused_line_idsに変更し、同一entry_idの異なる金額行を個別にマッチ可能に- pytest 689件
v3.5.4
照合の複数行合算修正 + 日計ホバーdiff改善
- 同一仕訳内で支払元口座が複数行に分かれるケースで、行を合算してからマッチングするように修正
- 日計ホバーdiffを左CSV/右仕訳の2列diff形式に変更、金額降順で並列表示
- ポップオーバーにマウスを移動してもスクロール可能(150msタイマーで消え防止)
- pytest 689件
v3.5.2
照合の集計修正 + 日計ホバーdiff + AI照合バグ修正
- 日計サマリーの仕訳金額集計を credit(出金)/debit(入金) に分離し、元帳の金額と正しく対応
- 日計サマリーの差異行にマウスホバーすると、その日のCSV明細と仕訳明細のdiffをポップオーバー表示
- AI照合で
_extract_jsonの二重呼び出しによるAttributeErrorを修正 - pytest 688件
v3.5.1
照合の日付マッチングを完全一致に変更
- 照合の日付許容範囲を±5日から完全一致(±0日)に変更
- クレカ明細の日付が正であるため、日付ズレのある取引は unmatched / journal_only として検出
- 日付ズレの取引はAI照合で摘要テキストの類似性から候補提案可能
- pytest 688件
v3.5.0
照合機能の大幅強化 — 日計サマリー・逆方向照合・AI照合 + 科目コピーバグ修正
照合機能
find_matches()の返り値を拡張し、csv_results/journal_only/daily_summaryを返す dict 形式に変更- 日計サマリー: 日付ごとにCSV件数/合計 vs 仕訳件数/合計を比較、差額・件数差をハイライト表示。合計行で全体の過不足を一目で確認可能
- 逆方向照合(journal_only): CSVにマッチしなかった仕訳を「仕訳のみ(CSV未照合)」セクションに表示。記帳済みだがCSVに出てこない取引を可視化
- 同日同額の回数差異検出: CSV3件・仕訳2件のように件数が異なるケースを件数差・金額差で検出
- AI照合: 金額不一致でマッチしなかった行に対し、AIが摘要テキストの類似性・日付の近さ等から照合候補を提案。確信度バッジ付き(0.7以上=緑、0.3-0.7=黄)
バグ修正
- 科目コピーが更新APIに送信されるバグを修正 — コピーモードで
editingCodeに値が残り、新規作成ではなく既存科目の更新APIにPOSTされていた問題を修正
テスト
- 科目管理APIテスト34件(新規21件: 残高API、バリデーション、残高振替、無効化/有効化)
- AI証憑仕訳テスト29件(新規: upload/drafts/delete/review/quick_accept異常系)
- 照合エンドポイントテスト13件(新規: reconcile/ai-reconcileエンドポイント)
- 照合サービステスト37件(+13件: エッジケース、フォーマットヘルパー、AI照合追加)
- pytest 689件
v3.4.1
AI証憑仕訳 — 案1クイックアクセプト
- 下書き一覧に「案1で登録」ボタンを追加。レビュー画面を開かずに、AIの第1候補をワンタップで仕訳登録
- 従来の「仕訳を作成」ボタンは「編集」ボタンとして横に配置(レビュー画面で内容を確認・修正したい場合に使用)
- 下書きカードに案1の借方・貸方科目名を表示(例: 食費 → 現金)。複合仕訳はスラッシュ区切り
- 提出済みロック科目・確定済み期間のチェックは従来通り実施。エラー時はレビュー画面にリダイレクトして手動修正可能
- pytest 589件(うち新規5件)
v3.4.0
青色申告決算書対応 — 科目マッピング・決算書レポート・事業所得折りたたみ
所得税の青色申告決算書(一般用)に対応。決算書の各欄に勘定科目をマッピングし、損益計算書・貸借対照表の形式でレポートを出力する機能を追加。将来の不動産所得用決算書にも対応可能な設計。
科目マッピング設定
TaxFormFieldマスタテーブルに青色決算書(一般用)の全66欄を定義(マイグレーション 030)TaxFormMappingテーブルでユーザーの勘定科目を決算書の欄に紐付け- 決算書欄から9000番台の事業用勘定科目を一括作成し、自動でマッピングを設定
- 設定画面(
/settings/tax-form)で欄ごとのマッピングを管理 - 1科目は1つの決算書種別にのみ所属可能(二重計上防止)
決算書レポート
- 決算書レポート画面(
/reports/tax-form)で損益計算書(第1面)と貸借対照表(第4面)を表示 - 小計欄(売上原価・差引金額・所得金額など)を自動計算
- 貸借対照表は期首残高・期末残高を別列で表示
- 未マッピングの欄は「(未設定)」と表示
家計簿レポートとの連携
- 損益計算書(P/L)で事業科目を「事業所得」1行に折りたたみ表示(事業収入 - 事業費用)
- 月次比較レポートでも事業所得行を収入セクションの先頭に表示
- マッピング未設定時は従来通り全科目を個別表示
複数決算書種別対応
- 設定・レポート画面に「一般用」「不動産所得用」のタブナビを追加
form_typeパラメータで種別を保持し、一括作成・保存後もタブ状態を維持- 不動産所得用の欄定義は今後のマイグレーションで追加予定
データモデル
- マイグレーション 030:
tax_form_fields+tax_form_mappingsテーブル新設、一般用66欄をシード - マイグレーション 031: form_type スコープ対応のアプリロジック変更
- Account の複合PK
(user_id, code)をForeignKeyConstraintで参照
テスト
- 青色申告決算書テスト 51件(マッピングCRUD、一括作成、小計計算、B/S期首期末、事業所得計算、P/L折りたたみ、月次比較、ユーザー分離、form_type排他制御)
- pytest 584件(うち新規51件)
v3.3.0
月次着地予想の予測方法選択
- 変動費の月末着地予想に3つの計算方法を選択可能に
- 日割按分(従来方式): 経過日数で按分して月末着地を予測
- 28日移動平均: 過去28日間の日平均 × 残り日数で予測(月初でも安定)
- 曜日別平均: 過去4週間の曜日別パターンで残り日数を予測
- 表示設定画面(
/settings/display)から切り替え可能 - 固定費・随時費の計算には影響なし
- 過去データがない科目は日割按分にフォールバック
- テスト 533件(うち新規16件)
v3.2.3
明細取込の source 修正 + 仕訳帳ソースバッジ追加
- CSV/OFX/Web取込で作成される仕訳の
sourceを正しく設定(csv/ofx/web)- 従来は全て
cashbookになっていたため、仕訳帳の編集リンクが出納帳編集に誘導されていた
- 従来は全て
- 仕訳帳にCSV/OFX/Webソースバッジを追加表示
- E2Eテストの安定性改善(並列テスト実行時のロケーター修正)
v3.2.2
照合画面に全選択/全解除ボタン追加
- 照合タブの取込チェックボックスに全選択/全解除ボタンを追加
- 照合済み・候補選択済み行は操作対象外(disabled)
v3.2.1
CSV取込: 入出金1列モード廃止 + マイナス値自動反転
amount_mode: "single"オプションを廃止、常に入金列/出金列の2列モードに統一- マイナス値は自動反転(出金列に -500 → 入金 500 として扱う。クレカのキャッシュバック等)
parse_amount()が符号を保持するように変更(abs()削除)- AI列検出プロンプトを更新: クレカCSVの利用額を出金列として検出するよう指示
v3.2.0
CSV列マッピングプロファイル + 取込UI改善
CSV列マッピングの自動化
- 口座ごとにCSV列マッピング設定を自動保存、2回目以降は復元
- 初回はAIで列マッピングを自動検出(AI設定済みの場合)
- CsvColumnProfile モデル + マイグレーション 029
取込確認画面のバグ修正
- Account PK 移行後、
default_income_id/default_expense_idが文字列になりtojsonが HTML属性を破壊していた問題を修正(CSV/OFX/Web 3画面)
取込UI改善
- アップロード画面を段階的表示に変更: 口座選択 → ファイル入力 → 送信ボタン(CSV/OFX/Web)
- 出納帳のCSV取込リンクを削除(ナビバーに集約済み)
- アップロード画面のキャンセルボタンを削除
インポート履歴の安全性向上
- 損益振替(自動生成)バッチの削除ボタンを非表示
- 確定済み期間に含まれるバッチの削除ボタンを無効化
テスト
- CSV取込 E2E テスト 6件追加(フルフロー、プロファイル復元、確認画面)
- CSV取込ユニットテスト 53件(モデル、CRUD、AI検出、ビュー統合)
- 521 pytest + 63 E2E(うち6件新規)
v3.1.0
出納帳3タブ化 — 支出/収入/資金移動 + マイナス金額対応
- 出納帳の取引種類を支出/収入のドロップダウンから3タブ(支出・収入・資金移動)に変更
- 各タブで適切な科目のみ表示: 支出→費用科目、収入→収益科目、資金移動→BS科目
- 資金移動タブで同一科目選択時にクライアント/サーバー両方でバリデーション
- 既存仕訳の編集時に科目タイプから取引種類を自動検出(3方向)
- マイナス金額を受付可能に(返金・費用戻りなどを記録可能、借方・貸方が自動反転)
v3.0.0
Account 複合PK移行 — 科目コードをプライマリーキーに
accounts テーブルの PK を auto-increment id から (user_id, code) 複合キーに変更。API・フォーム・内部ロジックの全レイヤーで account_id(整数)を account_code(文字列)に置換。
破壊的変更
- REST API: 仕訳明細の
account_id(int) →account_code(str) - Python クライアント:
JournalLine.account_id→JournalLine.account_code - DBマイグレーション (
028_account_composite_pk):accounts.id廃止、FK を持つ 3 テーブル(journal_entry_lines,audit_grant_accounts,balance_caches)のカラム構造が変更
変更内容
- Account モデル:
id(Integer PK) →(user_id, code)複合 PK - JournalEntryLine:
account_id→account_user_id+account_code(複合 FK) - AuditGrantAccount: 同上
- BalanceCache:
account_id→account_code(user_idは既存) - サービス層 7 ファイル: 関数名・引数名を
_id→_codeに統一 - ビュー層 11 ファイル: URL パラメータ・フォーム処理・JSON レスポンス
- テンプレート 15 ファイル + JS:
account.id→account.code全置換 - IDOR セキュリティテスト 7 件追加(科目一覧・元帳・試算表・API の他ユーザー分離検証)
- 71 ファイル変更、pytest 499 件 + E2E 55 件
アップグレード手順
- コンテナを再作成(マイグレーション 028 が自動実行)
- Python クライアントを v3.0.0 に更新
v2.16.1
科目コードのモバイル表示を統制
- モバイル(576px以下)で科目コードが表示されていた5箇所を修正:
- 勘定科目管理テーブルのコード列に
d-mobile-noneを適用 - 総勘定元帳の科目selectからコードを除外(デスクトップ時のみJSで付与)
- 総勘定元帳カードヘッダーのコードを
d-mobile-noneで囲む - AI証憑仕訳の仕訳モードで
fullName: trueを削除(モバイル判定が効くように) - 公開科目管理のラベルのコードを
d-mobile-noneで囲む
- 勘定科目管理テーブルのコード列に
- 科目コードのモバイル非表示E2Eテストを新規追加(10テスト)
- pytest 492件 + E2E 55件
v2.16.0
既存仕訳への証憑添付機能
- 元帳の仕訳編集モーダルに「証憑追加」ボタンを追加 — 出納帳・CSV取込・手動入力など、AI証憑仕訳以外で登録した仕訳にも後から証憑画像を添付可能に
- AI設定がある場合は添付時に自動で2つのチェックを実行:
- 電帳法コンプライアンスチェック — 画像品質・必須情報の視認性・書類妥当性を判定(pass/warn/fail)
- 仕訳整合性チェック — 証憑の日付・金額・摘要と既存仕訳データを照合し一致度をバッジ表示
- AIチェック失敗時も添付はブロックされない(警告表示のみ)
- 証憑は SHA-256 ハッシュ付きで永続保存、VoucherAuditLog に操作記録
create_voucher_from_upload()サービス関数で直接アップロード→Voucher作成を一括処理- pytest 492件 + E2E 45件
v2.15.2
元帳の逆順表示を改善
- 逆順(新しい順)表示時、合計行を上部・前期繰越を下部に配置するよう変更
- 合計行の colspan 不足(9列に対して8セル)を修正 — 摘要列のセルが欠落していた
- Jinja2 マクロ化で合計行・前期繰越行の重複を排除
- pytest 482件 + E2E 45件
v2.15.1
設定ナビのドロップダウン廃止
- ナビバーの設定ドロップダウンメニューを廃止し、設定トップへの直接リンクに変更
- 項目が増えてドロップダウンが長くなったため、設定トップページのカード一覧をハブとして利用する方式に統一
- E2Eテスト更新(ドロップダウン→直接リンク検証)
- pytest 482件 + E2E 45件
v2.15.0
CSV明細照合モードの追加 + 表示設定E2Eテスト拡充
- CSV照合モード — CSV取込確認画面(Step 3)に「照合」タブを追加。クレジットカード明細などのCSVと、レシートやAI仕訳で日々記帳した既存仕訳を突合して差異を可視化
- 金額一致+日付±5日で既存仕訳と自動マッチング
- 照合済み(緑)/ 複数候補(黄)/ 未照合(灰)で色分け表示
- 複数候補はドロップダウンで選択可能
- 未照合行のみ科目を選択してそのまま取込可能
- バッチクエリで N+1 回避、金額インデックスで高速ルックアップ
- 照合サービス (
app/services/reconciliation.py) —find_matches()マッチングロジック - 照合API (
/csv-import/reconcile) — 照合タブからの遅延ロード用 JSON API - reconcileMode Alpine コンポーネント — 取込/照合タブ切り替え・照合結果管理
- 表示設定E2Eテスト — 設定ページの表示・保存・復元を6テストケースで検証
- pytest 482件 + E2E 49件
v2.14.0
表示設定の追加(試算表・元帳のデフォルト期間+元帳ソート順)
- 表示設定ページ — 設定 > 帳簿 に「表示設定」を追加
- レポートのデフォルト期間 — 試算表・元帳を開いたときの初期表示期間を「全期間」または「当月のみ」から選択可能
- 元帳のソート順 — デフォルトのソート順を「古い順(標準)」または「新しい順」から選択可能
- 元帳画面にソートトグルボタン — 元帳画面上で古い順/新しい順をワンクリックで切り替え
- 期間バーのクリック/ドラッグ操作時はユーザー設定を上書きせず URL パラメータが優先
- User モデルに
preferencesJSON カラム追加(マイグレーション 027) - E2E テスト: settings テストに表示設定カード検証追加、login リトライ強化
- pytest 470件 + E2E 43件
v2.13.2
tojson 属性バグを全テンプレートで修正
月次確定データがある場合、|tojson 出力のダブルクォートが x-data="..." HTML属性を壊し、日付や仕訳明細が表示されなくなるバグを修正。
- AI証憑仕訳レビュー画面 — 日付が空になり仕訳登録できない問題
- 仕訳帳編集画面 — 既存仕訳の編集時に明細行が表示されない問題
- 出納帳フォーム — 月次確定チェックが動作しない問題
- CSV/OFX/Web取込確認画面 — 取込データが表示されない問題
- 勘定科目管理画面 — 科目一覧が表示されない問題
- 全
|tojsonを<script>タグ経由に移動して根本的に解消 - E2E テスト 18 件に拡充(仕訳編集画面テスト追加)
- pytest 470件 + E2E 43件
v2.13.1
仕訳モードのバグ修正・タブ保持・E2Eテスト追加
- 仕訳モードの JSON 属性破壊バグを修正 — Jinja2
|tojson出力のダブルクォートが HTML 属性x-data="..."を壊し、仕訳明細が表示されない問題を修正 - 仕訳案候補切替時のタブ保持 — 仕訳モードで別の仕訳案候補を選んでも、タブ選択(かんたん/仕訳モード)を維持
- AI 証憑仕訳 E2E テスト 15 件追加 — モック AI サーバーによるアップロード〜解析〜レビュー〜登録の全フローをテスト
- pytest 470件 + E2E 40件
v2.13.0
AI証憑仕訳の改善 — 電帳法チェック表示・仕訳モード修正・セキュリティテスト
電帳法コンプライアンスチェック
- pass 時の表示追加 — チェック通過時に「電帳法チェックOK」メッセージを表示
- (i) 詳細ボタン — pass/warn/fail いずれの場合もチェック詳細をモーダルで確認可能に
- 下書き一覧に pass バッジ — 緑色の「OK」バッジを追加
レビュー画面の改善
- 「下書き保存」ボタン追加 — レビュー画面から直接下書き保存が可能に(API再呼び出し不要)
- 「やり直す」に確認ダイアログ — AI解析結果が削除される旨を警告
- 仕訳モード修正 — AI提案の勘定科目名が表示されない問題を修正
- POST エラー時のテンプレート変数不足を修正 — 月次確定チェッカーが正常に動作するように
テスト
- 証憑画像アクセス権限のセキュリティテスト追加(12件)
- AI仕訳モードのテスト追加(9件)
- pytest 470件
v2.12.1
UI バグ修正 — 一括選択バー・PWA 画像プレビュー
- 仕訳帳「0件選択中」常時表示を修正 — Bootstrap
d-flexの!importantが Alpine.jsx-showを上書きしていた問題を解消 - PWA で証憑画像を外部ブラウザで開けるように —
<a target="_blank">をwindow.open()に変更し、スタンドアロンモードでもシステムブラウザが起動
v2.12.0
画像配信最適化 — キャッシュ・サムネイル・Gunicorn
証憑画像の読み込み速度を大幅に改善。
- HTTP キャッシュ —
Cache-Control: immutable+ ETag/304 で、2回目以降のアクセスはネットワーク転送ゼロ - サムネイル自動生成 — アップロード時に Pillow で 400px サムネイルを生成。一覧画面の転送量を数MB→数十KBに削減
- send_file() ストリーミング — ローカルストレージはメモリに全読みせずファイルから直接配信。Range リクエスト対応
- S3 presigned URL — S3 使用時は Flask を経由せずブラウザが直接ダウンロード
- serve_image() ヘルパー — 3つの画像エンドポイントの配信ロジックを統一
- Gunicorn 本番サーバー — 2ワーカーで AI 処理中も画像配信がブロックされない(
FLASK_DEBUG=1時は Flask dev server 維持) flask generate-thumbnails— 既存画像の一括サムネイル生成コマンド- pytest 445件 + E2E 25件
アップグレード手順
- コンテナを再ビルド・再作成(Pillow / Gunicorn が新規依存)
- 既存画像のサムネイルを生成:
docker exec -w /app <container> flask generate-thumbnails
v2.11.0
htmx + Alpine.js によるフロントエンド刷新
手動 DOM 操作・インライン <script> 約 1,600 行を htmx の宣言的属性と Alpine.js のリアクティブコンポーネントに段階的に移行。ビルドシステムなし(CDN のみ)。
- Phase 0: 基盤 — htmx 2.0 / Alpine.js 3.x を CDN で導入。CSRF トークン自動付与、htmx → Toast 連携
- Phase 1: 月次確定チェック統合 — 3テンプレートに重複していた
checkClosedPeriod()を AlpinefiscalPeriodCheckerコンポーネントに統合 - Phase 2: 簡単なフォーム — cashbook/medical フォームのインライン JS 全廃
- Phase 3: リスト削除の htmx 化 — 出納帳・設定画面の
fetch()+ DOM 操作をhx-post/hx-confirmに置換 - Phase 4: 仕訳帳一覧 — 個別削除を htmx 化、一括選択バーを Alpine
bulkSelectコンポーネントに移行 - Phase 5: 科目管理・科目選択モーダル — IIFE 約 400 行を Alpine
accountEditor/accountSelectorに移行 - Phase 6: 仕訳明細行 —
addLine()/updateTotals()の重複を AlpinejournalLinesに統合。仕訳フォーム・AI レビュー画面で共用 - Phase 7: 取込確認画面 —
import_confirm.js(499 行)を AlpineimportConfirmに全面移行。CSV/OFX/Web の 3 テンプレートを共通パーシャルに統合 - Phase 8: ドキュメント整備 — CLAUDE.md にフロントエンドパターンを文書化、陳腐化した参照を更新
- pytest 431件 + E2E 25件
v2.10.3
証憑画像のライトボックスプレビュー
- 証憑画像をモーダルでプレビュー表示 — PWA モードで
target="_blank"による画面遷移で戻れなくなる問題を解消。全ての証憑画像リンクを Bootstrap モーダルによるライトボックスに統一 - 仕訳編集画面・仕訳帳一覧・元帳・証憑一覧の全箇所で対応
- モーダル内「別タブで開く」ボタンで従来動作も可能
- pytest 431件 + E2E 25件
v2.10.2
証憑プレビューの共通化・元帳モーダル対応
- 証憑プレビューを共通JS関数に統合 —
renderVoucherPreview()をapp.jsに定義し、仕訳編集画面と元帳モーダルで共通利用 - 元帳モーダルに証憑プレビュー表示 — 元帳の仕訳編集モーダルでも証憑画像を表示
- pytest 431件 + E2E 25件
v2.10.1
仕訳編集画面の証憑プレビュー・削除警告
- 仕訳編集画面に証憑プレビュー表示 — 証憑ありの仕訳を編集する際、フォーム上部に証憑画像を表示。クリックで別タブに拡大表示
- 証憑付き仕訳の削除警告 — 仕訳帳(個別・一括)、元帳モーダルで証憑が紐づく仕訳を削除しようとした際に、証憑が未紐付けになる旨の確認ダイアログを表示
- pytest 431件 + E2E 25件
v2.10.0
電子帳簿保存法(スキャナ保存)対応
AI証憑仕訳でアップロードしたレシート画像を電帳法の要件に沿って保存・管理する機能を追加。
- Phase 1: 証憑の永続保存と仕訳紐付け —
Voucherモデルを新設し、AI 仕訳登録時に証憑画像を永続保存。仕訳と 1:N で紐付け、仕訳削除時も証憑は孤立証憑として保持 - Phase 1.5: AI コンプライアンスチェック — 画像品質(ピンぼけ・影・切れ)、必須情報の視認性(日付・金額・取引先)、入力期限を AI が自動判定。下書き一覧・レビュー画面にコンプライアンスバッジを表示
- Phase 2: 証憑一覧画面(電帳法検索要件対応) — 日付・金額・取引先(摘要)で証憑を検索できる一覧画面を新設。REST API にも証憑一覧・画像取得エンドポイントを追加
- Phase 3: 改ざん防止 — 保存時に SHA-256 ハッシュを記録し、Web UI・API からいつでも検証可能。仕訳削除による孤立化を
VoucherAuditLogに自動記録 - Phase 4: 入力期限チェック — レシート日付から約2ヶ月+7日(67日)を超過した証憑に警告バッジを表示。AI 下書き一覧・レビュー画面・証憑一覧・API の全箇所で対応
- GitHub Pages に証憑 API ドキュメントを追加 — 証憑一覧・画像取得・ハッシュ検証・操作ログの API リファレンス
- pytest 426件 + E2E 25件
v2.9.0
Playwright E2E テストの CI 統合
- GitHub Actions に E2E ジョブ追加 — PostgreSQL サービスコンテナ + Flask バックグラウンド起動で Playwright (Firefox) E2E テストを CI で自動実行
- global-setup の CI 対応 —
process.env.CIを検出し、CI では Python を直接実行(ローカルは従来通り docker compose) - RATELIMIT_ENABLED 環境変数対応 —
RATELIMIT_ENABLED=falseでレート制限を無効化可能に - pytest 337件 + E2E 25件
v2.8.0
証憑画像のオブジェクトストレージ移行
電子帳簿保存法対応に向け、証憑画像の保存先を PostgreSQL (LargeBinary) からファイルシステム/S3互換ストレージへ移行。
- ストレージ抽象レイヤー — ローカルファイルシステムと S3 互換ストレージ (AWS S3 / MinIO / Cloudflare R2) を環境変数
STORAGE_BACKENDで切替可能 - マイグレーション安全チェック — Docker 環境でローカルストレージ使用時、ボリュームマウントされていなければマイグレーションを中断しデータ消失を防止
- 既存データ自動移行 — マイグレーション
023で既存のimage_dataをストレージに書き出し、DB には参照キー (image_key) のみ保持 - pytest 357件
アップグレード手順
docker-compose.ymlにボリュームマウントを追加してからコンテナを再作成すること(マウントなしではマイグレーションが中断します):web: volumes: - ./volumes/vouchers:/app/data/vouchers # 追加- コンテナ起動時に
flask db upgradeが自動実行され、既存の証憑画像がファイルシステムに書き出されます - S3 を使う場合は
.envにSTORAGE_BACKEND=s3と S3 関連の環境変数を設定してください
v2.7.2
セキュリティ修正・テスト拡充・バグ修正
- セキュリティ: パストラバーサル脆弱性を修正 —
load_import_data()/delete_import_data()でos.path.join()にユーザー由来のキーをそのまま渡しており、../../を含むキーで一時ディレクトリ外のファイル(.json拡張子付き)を読み取り・削除できる可能性があった。os.path.realpath()による正規化と_TEMP_DIR配下の検証を追加して修正 - セキュリティテスト70件追加 — 認証フロー(27)・IDOR(12)・入力検証(12)・CSRF(9)・セキュリティヘッダー(7)・レート制限(3)
- fix: チェックボックス単体クリック時の二重トグルを修正 —
drag_select.jsのmousedownハンドラで手動設定した後、clickイベントのデフォルト動作でチェックが戻る問題をpreventDefault()で防止 - fix: AI科目推定が設定済み行をスキップして使えない問題を修正 — 科目未設定行は自動で対象、設定済み行はチェック時のみ上書き推定するように変更
- Playwright E2E ドラッグ選択テスト15件追加
- pytest 337件 + E2E 25件
v2.7.0
Ollama (ローカルAI) 対応
- AIプロバイダーに Ollama を追加(OpenAI互換API経由)
base_url設定でカスタムエンドポイントに対応(Tailnet上の別マシン等)- APIキー不要で利用可能
- UserAIConfig に
base_urlカラム追加(マイグレーション 022)
v2.6.1
Worker サービス削除
- WebDAV UI オプトアウトに伴い worker サービスを docker-compose / Dockerfile / CI から削除
v2.6.0
設定メニューリファクタリング
/settings/に設定トップページを新設(カード型レイアウト)- ヘッダードロップダウンを帳簿・AI連携・セキュリティの3カテゴリーに整理
- 勘定科目をトップナビから設定メニュー内に移動
- 「AI API設定」を「外部AI」に改名(APIキー管理との混同を解消)
- 「自動取込」を「通知」に改名、WebDAVソース管理UIをオプトアウト
- Playwright E2Eテスト(Firefox)を導入
- pytest 256件 + E2E 10件
v2.5.6
AI証憑仕訳に定型プロンプト機能を追加
- 設定画面から定型プロンプト(カスタムプロンプト)を設定可能に
- 「QUICPay = JCB CARD W」「摘要は店名+品目」等のルールをAIに毎回自動で指示
- 画像解析(Round 1)と仕訳案生成(Round 2)の両方に定型プロンプトを注入
v2.5.5
Discord通知に完了マーク・URLボタン追加
- Discord Webhook通知にAI証憑仕訳画面へのURLボタンを追加
- 仕訳登録後、Discord通知メッセージに完了マークを自動付与(Webhook API編集)
AIDraftにdiscord_webhook_url/discord_message_idカラムを追加
v2.5.4
AI下書き自動削除 & テスト追加
- AI仕訳下書きを仕訳登録後に自動削除(done ステータス廃止)
- csv_import テスト(53件)、ofx_import テスト(15件)、balance_cache テスト(15件)を追加
- テスト合計 249件
v2.5.3
ドキュメント修正
- docs のクライアントリポジトリ名 typo 修正(
kakiebo→kakeibo)
v2.5.2
テスト拡充
- 税務集計テストを重点拡充(合計 123テスト)
v2.5.1
確定申告集計のバグ修正
- 確定申告集計から損益振替仕訳を除外
- 医療費・住民税カテゴリの除外処理を修正
v2.5.0
GitHub Pages ドキュメントサイト
- GitHub Pages でドキュメントサイトを公開
- REST API リファレンス・Python クライアントガイドを整備
v2.4.1
セキュリティ強化
- レート制限・ページネーション・入力検証の強化
v2.4.0
AI証憑仕訳 REST API
- AI証憑仕訳の REST API エンドポイントを追加
key_prefixカラム修正
v2.3.0
Discord通知改善
- Discord通知に下書き一覧へのリンクを追加
v2.2.0
WebDAV接続テストUI
- WebDAV接続テストUIを追加
- FK制約修正
v2.1.2
Alpine化・セキュリティ強化
- Docker イメージを Alpine ベースに移行
- セキュリティ強化
v2.1.1
Dockerマルチステージビルド
- web/worker の Docker イメージを分離(マルチステージビルド)
v2.1.0
自動取込機能
- WebDAV ストレージ(Nextcloud等)からレシート画像を定期取得
- AI で自動仕訳して下書きに保存
- Discord Webhook 通知
v2.0.0
セキュリティ強化・CAPTCHA対応
- CAPTCHA 対応(hCaptcha / reCAPTCHA / Turnstile / mCaptcha)
- セキュリティ全般の見直し
- README 見直し
v1.6.x
- v1.6.9 — セキュリティ強化(XSS・オープンリダイレクト・IDOR・セキュリティヘッダー・レート制限)
- v1.6.8 — 収益・費用の集計を正味額に修正、docker-compose 分離
- v1.6.7 — 元帳モーダル削除・AI仕訳確定済み期間チェック
- v1.6.6 — セッション永続化・AI科目推定機能
- v1.6.5 — 確定済み期間チェック改善(全年度対応・年度開設制限)
- v1.6.4 — 確定済み期間の警告表示・フォームデータ保持
- v1.6.3 — モバイル sticky カラム修正・仕訳フォームエラー時のデータ保持
- v1.6.2 — 医療費控除の自動計算を削除
- v1.6.1 — DEV 環境バッジ追加
- v1.6.0 — 貸借対照表・損益計算書・残高キャッシュ・損益振替期間
v1.5.0
API スコープ・仕訳 CRUD・ブックマークレット
- API スコープ(read/create/delete)を導入
- 仕訳の閲覧・削除エンドポイントを追加
- Web取込用ブックマークレット「明細ピッカー」を追加
v1.4.0
REST API
- 仕訳起票の REST API を追加(API キー Bearer 認証)
v1.3.x
- v1.3.4 — AI証憑仕訳にコメント欄・一時保存機能を追加
- v1.3.3 — モバイルレスポンシブ対応
- v1.3.2 — ドラッグ選択のモバイル修正、CLAUDE.md 追加
- v1.3.1 — バグ修正(btn-group レイアウト・マイグレーション ID)、CI 対応
- v1.3.0 — 年度制限・インポート確認画面の大幅強化(ソート・日付編集・sticky ツールバー・元入金変換)
v1.2.x
- v1.2.3 — マイナー修正
- v1.2.2 — PWA 対応(manifest / Service Worker / アプリアイコン)
- v1.2.1 — README 更新(監査アカウント・月次確定・プロジェクト構成)
v1.2
監査用アカウント機能
- 税理士・公認会計士向け監査用アカウント(Lv1 集計のみ / Lv2 税務科目 / Lv3 本人同等)
- 提出ロック・科目隠蔽・部分編集
- 個人/監査用の分離ログイン
v1.1
- 月次試算表で P/L 科目の年初来残高を表示
v1.0
初版リリース