お局様
  • Python 92.7%
  • JavaScript 3.8%
  • HTML 3.1%
  • CSS 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-10 20:18:11 +09:00
.planning docs: refresh README/PROJECT for implemented UI and experimental policy (#46) 2026-09-19 17:32:42 +09:00
docs feat: 同期v2 識別子(UUIDv4/v7受け入れ)と端末系列コード(Issue #58) 2026-10-10 20:17:18 +09:00
migrations feat: 同期v2 識別子(UUIDv4/v7受け入れ)と端末系列コード(Issue #58) 2026-10-10 20:17:18 +09:00
scripts feat: 同期v2 集約ストアとpush/pull(Issue #54) 2026-10-10 05:48:03 +09:00
src/o2 feat: 同期v2 識別子(UUIDv4/v7受け入れ)と端末系列コード(Issue #58) 2026-10-10 20:17:18 +09:00
tests feat: 同期v2 識別子(UUIDv4/v7受け入れ)と端末系列コード(Issue #58) 2026-10-10 20:17:18 +09:00
.gitignore chore: attachments/ と tmp/ を .gitignore に追加 2026-09-23 21:01:40 +09:00
AGENTS.md docs: 汎用伝票・弥生風フォーム・内税/表示モード・事業所切替・API制御を記録 2026-09-27 22:26:10 +09:00
alembic.ini feat: Alembic 導入 — DBマイグレーション基盤 2026-09-13 11:55:46 +09:00
demo.py demo: 実動作デモスクリプト追加 2026-09-03 14:15:15 +09:00
HANDOFF_F7_F11.md docs: reorganize README and add F7-F11 handoff 2026-09-13 10:56:53 +09:00
o2.service chore: o2の既定待受ポートを9000へ変更 2026-09-27 09:21:04 +09:00
pyproject.toml feat: e-TaxのXMLDSig正式署名とPKCS#12証明書読込 2026-09-23 04:16:33 +09:00
README.md docs: 汎用伝票・弥生風フォーム・内税/表示モード・事業所切替・API制御を記録 2026-09-27 22:26:10 +09:00
start.sh chore: o2の既定待受ポートを9000へ変更 2026-09-27 09:21:04 +09:00
uv.lock feat(web-ui): yayoi theme foundation (css/fonts/layout/vendor) 2026-09-17 13:07:42 +09:00

お局様(o2) — 統合会計+販売管理システム

DD簿記(Debit-Debit)コア基盤を Python で実装した統合会計・販売管理システム。 FastAPI REST API と MCP(JSON-RPC)サーバーの両方を提供し、AI アシスタントやフロントエンドからの連携が可能です。

概要

本プロジェクトは h1-c2 の母艦として機能する独立した会計・販売管理システムで、弥生会計・販売との同等以上を目標に開発中です。 コア会計・購買・販売・在庫・給与・税務・セキュリティの主要バックエンド機能は API 露出・テストまで実装済みです。v24 マイルストーンで Alembic マイグレーション基盤・給与仕訳自動生成・購買整合性・引当金自動計算・伝票番号一意性・棚番/ロット別評価・プラットフォーム管理者ロール・セキュリティ強化・e-Tax 強化・Zengin 対応が完了しました。続く Phase 0(販売帳票PDF・値引・納品書・端数統一・入金消込)と Phase 1(h1⇔o2 同期・監査・修正承認・集約)を実装しました。

注意: 本プロジェクトは開発途中です。機能の「実装済み / 制限 / 未実装」は本 README の各節で明示しています。誇張を避けるため、「API が存在する」= 「実装済み」とは判定していません。詳細な検証記録は .planning/GAP_ANALYSIS_B.md と HANDOFF_E1_E4.md / HANDOFF_F7_F11.md を参照してください。

本番運用前に、外部連携の本番接続検証(e-Tax 電子証明書・銀行 API・eLTAX 等)が必要です。

ドキュメント

実装済み機能

カテゴリ別の概要です。各機能の実装範囲と制限は「実装済み機能の詳細」を参照してください。

会計コア

  • 勘定科目管理(5 カテゴリ)・勘定科目階層(parent/children)
  • 仕訳・DD 検証(貸借均衡・副次方程式 5 方式)・総勘定元帳・試算表
  • 損益計算書・貸借対照表・キャッシュフロー計算書(間接法)
  • 補助元帳(現金出納帳・預金台帳・売掛金元帳・買掛金元帳・経費元帳)
  • 部門・プロジェクト別集計、取引先統合(Counterparty)
  • 予算管理、自動仕訳ルール、仕訳テンプレート、証憑管理
  • 会計期間管理・月次/年次決算・期間ロック
  • 年次決算の損益振替・繰越利益剰余金振替、任意の決算整理仕訳

販売管理

  • 商品・顧客・仕入先管理、倉庫・在庫管理、出庫伝票
  • 見積 → 受注 → 納品 → 請求 → 入金 → 完了のフルサイクル
  • 請求グループ・まとめ請求・入金記録・入金締・未収入金・期限超過管理
  • 価格表(標準価格・顧客別価格・数量割引・有効期間・仕入価格)
  • 適格請求書(インボイス制度)発行・登録番号検証・PDF 出力
  • 帳票PDF: 見積書・納品書・請求書(通常)・適格請求書(発行者情報・振込先に対応)
  • 値引・端数調整(明細額/率・伝票額/率・端数調整 1/10/100/1000円)を見積〜受注〜請求〜適格請求書へ一貫反映
  • 納品書の一覧・画面・受注 deliver からの自動生成(二重計上防止)
  • 入金消込(1回の入金を未収の複数請求へ期日順に自動割当、仕訳は1本)
  • 消費税端数処理の統一(税率グループ1回丸め、InvoiceSetting.rounding_method 準拠)
  • 棚番(ロケーション)管理(階層構造・倉庫別・在庫数量照会)

購買管理

  • 発注 → 受入 → 請求 → 支払 → 完了のフルサイクル
  • 部分受入・部分支払、受入時の在庫連動
  • 仕入先請求書+3-way matching(発注・受入・請求書、請求書単位)
  • 仕入返品(逆仕訳)、差異調整仕訳、発注一覧・取消
  • 消費税端数丸めの統一(合計単位丸め・floor・軽減税率8%対応)
  • 仕入先請求書と買掛金元帳の連携(supplier_invoice_id・支払期日)
  • 請求計上のトランザクション原子性(単一トランザクション化)

在庫・生産

  • 商品別・倉庫別在庫、入出庫履歴、倉庫間移動、在庫調整、在庫カード
  • 棚卸記録・確認・在庫自動調整・棚卸損益仕訳
  • 棚卸資産評価(平均法・FIFO・LIFO・低価法)、売上原価計算
  • セット商品・BOM・生産指示 → 着工 → 完成(部分完成・原価計算)
  • ロット番号・有効期限管理(ロット別残高・期限切れアラート)
  • シリアル番号(個体管理、入出庫連動の状態遷移)
  • ロット別・シリアル別在庫評価(平均/FIFO/LIFO/個別法・テナントスコープ)
  • 在庫移動 API の lot_id/serial_id/unit_cost 対応

税務・固定資産

  • 経費記帳(仕訳自動作成)、固定資産管理・減価償却(定額法/定率法/一括償却)
  • 消費税申告書(税率別集計・仕入税額控除・課税売上割合・還付/納付)
  • 消費税簡易課税・中間申告、固定資産税計算・償却資産申告データ
  • 源泉徴収計算、法人税等計算、雑所得・一時所得計算
  • 青色申告決算書・収支内訳書・消費税申告書 PDF 生成
  • e-Tax 提出準備(XML 生成・検証・提出準備状態管理)
  • 引当金自動計算(貸倒引当金・賞与引当金・退職給付引当金・決算整理仕訳自動計上)
  • 税務調整後課税所得の自動計算(交際費不算入・中小法人800万円特例)
  • e-Tax 申告書の DB 永続化(TaxReturn・ステータス管理・テナント分離)
  • XML 検証強化(申告書種別ごとの金額整合性チェック)
  • 法人税 e-Tax 提出準備 API(3種類すべて対応)
  • 税務申告書管理 API(一覧・詳細・ステータス更新)
  • e-Tax 電子署名(RSA-2048/SHA-256・署名鍵は環境変数 O2_ETAX_PRIVATE_KEY_PATH/O2_ETAX_PRIVATE_KEY で供給。鍵未設定時は送信せずフェイルクローズ)

給与・人事

  • 給与計算(社会保険・雇用保険・所得税・手取り、標準報酬月額全 50 等級)
  • 賞与・退職金・年末調整の計算
  • 社員マスタ(Employee)、給与明細の月次バッチ永続化
  • 賞与・退職金・年末調整の永続化
  • 給与・賞与・退職金・年末調整の仕訳自動生成(日本会計基準準拠の勘定構成・冪等)
  • 源泉徴収票・給与支払報告書の集計データ API と法定様式 PDF(reportlab・v37-01/v38-01)
  • 賞与支給明細・退職所得の源泉徴収票の集計データ API と PDF(v38-01)
  • 退職金計算 API(/api/payroll/retirement/calculate・/summary・一括/分割/障害退職・v41-01)
  • 退職金分割支給の追加税計算(additional_tax = averaged_tax・5年超分割で非0・v40-01)
  • 社会保険料率の都道府県別設定(SocialInsuranceRateConfig・テナント別・v38-03)
  • 月次源泉徴収の税額表ベース計算(MonthlyTaxTable・課税支給額×扶養親族数の2Dルックアップ・v39-03)

多通貨

  • 通貨マスタ、為替レート(テナント固有優先 → グローバルフォールバック)
  • 外貨建て仕訳・為替差損益・外貨決済
  • 通貨別財務諸表・IFRS 財務諸表・通貨換算の API

認証・セキュリティ・運用

  • ユーザー認証、ロールベース権限管理(プラットフォーム管理者/テナント管理者/会計/閲覧者)
  • 監査ログ、監査フック(request_context 経由の actor 伝播)
  • RFC 6238 準拠 MFA+2 段階ログイン+リカバリーコード+otpauth URI
  • ログイン試行レート制限(IP+username 別・ロックアウト)
  • IP ホワイトリスト(IPv4/IPv6・CIDR 対応)、アクセスログ、セキュリティ管理 API(/api/security)
  • マルチテナント(テナント管理・テナントスコープ・データ分離・プラットフォーム管理者ロール)

AI・外部連携

  • AI 仕訳生成、ローカル LLM(Ollama / llama.cpp)、h1-c2 SDK
  • EC 連携(Shopify/Amazon 等の接続設定・受注取込・在庫同期・売上計上)
  • POS 取込(CSV/JSON)・在庫移動(売上減)・売上伝票(SalesOrder)連携(商品ID・数量を含む場合・v40-03)・レシート生成・ESC/POS 出力
  • POS 勘定科目コードのテナント別外部化(PosConfig・GET/PUT /api/pos/config・v35-03)
  • IoT デバイス管理・自動記帳・履歴
  • IoT SensorDataConverter のテナント別設定外部化(IotConversionConfig・GET/PUT /api/iot/config・v37-02)
  • SaaS 管理画面(テナント別請求書・利用量監視・月次レポート)
  • CSV 取込/出力(勘定科目・取引先・仕訳)

銀行・自動化・電帳法

  • 銀行照合(明細と預金台帳の突合・未照合検出)
  • 銀行明細パーサー(CSV / OFX / MT940 / Zengin 全銀)+ファイル取込 API
  • OFX 複数口座・期首/期末残高対応(LEDGERBAL→AVAILBAL→BALAMT・v39-01)
  • MT940 funds code 付き :61:・:86: 構造化サブフィールド対応(v37-03)
  • Zengin 可変長フォーマット・振込結果返還ファイル取込(v38-02)
  • 銀行取込重複判定の摘要正規化強化(NFKC・全角スペース→半角・連続空白統一・v41-03)
  • Zengin 総合振込データ生成(全銀協標準・固定長120バイト)
  • Open Banking 接続・差分取込(v31-02)・自動取込スケジューリング(OpenBankingSyncSchedule・run_scheduled_sync・v36-02)
  • 定期仕訳の実行(月末補正・実行履歴による冪等化・変動金額ソース・実行ごとの金額オーバーライド・部分失敗レポート)
  • プロセス内スケジューラ(SchedulerService・threading ベース・init_scheduler で定期仕訳・Open Banking 同期をデフォルト登録・v39-02/v40-02)
  • 電帳法対応(SHA-256 ハッシュチェーン・Merkle ルート・決算封印)
  • 自動経理・自立AI会計士(v52): 未仕訳経費から検証済みの仕訳下書きを生成し、承認制で計上(/api/auto-accounting/*・任意の定期生成 O2_AUTO_ACCOUNTING_SCHEDULE)

汎用伝票・弥生風フォーム・事業所切替(追補)

  • 汎用伝票層: h1 の DocumentModel を包含する Document/DocumentItem+DocType12種(見積/注文/納品/請求/領収/売上伝票/仕入伝票/入金/支払/受領請求/受領領収/作業報告)。h1 の全項目(件名/案件/作業報告/明細のメーカー・型番・測定値・備考/content_hash/version/is_locked 等)を保持。CRUD/プレビュー/PDF(値引表示モード・内税・作業報告対応)/複写・赤伝・ロック
  • h1 伝票の取込: 同期 push 時にミラー伝票を汎用伝票層へ射影((tenant_id, uuid) で冪等、delete は取消)
  • 弥生風フォーム: 全入力フォームを .doc-* レイアウト+o2.openRefModal+o2.pageShortcuts(F2=新規/クリア, F8=参照, F12=登録)で統一(見積/受注/請求/納品/発注/仕入請求/汎用伝票/マスタ/在庫/棚卸/ロット/シリアル/経費/給与)
  • 内税(include_tax): 計算・プレビュー・フォーム・PDF に反映(税率グループ round(incl*rate/(1+rate)))
  • 値引表示モード: gross_only / net_amount / gross_with_note を伝票・見積・請求のPDF/画面に反映
  • 事業所(テナント)切替: GET /api/auth/tenants / POST /api/auth/switch-tenant、メニューバーの切替(PLATFORM_ADMIN は任意、一般は自事業所)
  • API制御: 更新は exclude_unset(送信フィールドを設定、null で解除、省略は変更なし)。参照先(Project 顧客 / 経費の部門・取引先・PJ / 銀行口座の勘定科目 / 商品の仕入先・カテゴリ等)を API で操作可能

h1-c2 連携・同期・監査(Phase 1)

  • 端末登録・端末別トークン(o2_dev_、SHA-256 保存)・汎用ミラー層(SyncRecord)・双方向 push/pull(Tailscale IP、冪等・LWW)
  • 共有計算スペック(docs/specs/sales-calculation.md)+ゴールデン fixture。o2 が再計算して監査(AuditFinding)
  • 修正承認フロー(SyncCorrection 配信 → h1 承認キュー → ack)と code 名寄せ集約
  • 帳票発行の一元化: DocumentIssuance(発行者・端末・チャネル・方法・状態を記録、担当者 h1 へ SyncOutbox 通知)と /issuance 発行履歴画面
  • Google 汎用 OAuth 基盤(認可 URL・state 検証・コード交換・refresh、purpose 別スコープ、トークン Fernet 暗号化)+ Gmail 帳票送信(/api/issuance/send)/Drive 帳票保管(/api/issuance/archive)/Sheets エクスポート(/api/export/sheets/h1-documents)/設定画面 /google-settings
  • API: /api/sync/peers, /api/sync/push, /api/sync/pull, /api/sync/corrections(/ack), /api/sync/aggregate/{customers,products}, /api/audit/findings, /api/audit/run, /api/issuance, /api/issuance/send, /api/google/{authorize,callback,status,disconnect}
  • 設計: docs/adr/0001-sync-audit-mode-issuance.md / docs/superpowers/specs/2026-09-20-phase1-sync-audit-design.md
  • 実通信: h1 ⇄ o2 の同期成功を実地で確認(2026-09-21)。h1 側は別リポジトリで実装(端末登録/push/pull/承認キュー/発行報告)
  • 射影・会計統合(Phase 1e): マスタ射影(Product/Counterparty)/統合伝票ビュー(/api/h1-documents・/h1-documents、読み取り専用)/会計射影(h1 salesSlip→売掛金/売上、paymentReceipt→現金/売掛金、H1JournalLink で冪等)/監督ダッシュボード(/api/sync/supervision/*・/h1-supervision、端末間重複検出)。設計: docs/superpowers/specs/2026-09-21-phase1e-projection-design.md
  • 競合修正の自動配信(SyncOutbox 自動生成): POST /api/sync/corrections/dispatch(集約の端末間競合を LWW 勝者に揃える)
  • 未実装(後続): Google API の実接続検証(クレデンシャル未設定。検証は scripts/verify_google_connection.py)

DB マイグレーション・データ基盤

  • Alembic マイグレーション基盤(差分マイグレーション・ロールバック検証済み)
  • デフォルトテナント(DEFAULT_TENANT_ID=1)・tenant_id バックフィール
  • 伝票番号の複合 UNIQUE 制約((tenant_id, number)・5テーブル)+採番リトライ
  • Inventory のテナント包含 UNIQUE 制約

実装済み機能の詳細

以下は「旧・既知の制限事項」に列挙していた項目を実装状況つきで整理したものです。 「実装済み」は API 露出・テスト済みを意味し、「制限」は既知の注意点です。

会計コア

機能 実装済み 制限
DD 検証 借方=貸方、金額上限・同一科目借貸・科目存在・未来日付検証、DD 副次方程式 5 方式(借貸均衡・B/S・試算表・P/L・財務諸表間整合性) —
試算表・財務諸表 期間指定(date_from/date_to)・部門別集計 —
キャッシュフロー計算書 間接法(営業・投資・財務活動の 3 区分) —
補助元帳 現金出納帳・預金台帳・売掛金元帳・買掛金元帳・経費元帳。仕訳登録時に勘定科目の ledger_type に基づき自動更新。tenant_scope_clause でテナント分離 —
部門・プロジェクト集計 両モデル・仕訳行への紐付け・部門別集計 —
勘定科目階層 parentId/children による階層構造 —
取引先統合 Counterparty(顧客・仕入先統合)。legacy Customer の create/update は同一 Tx で Counterparty へ同期し、既存 Customer は migration b1a2c3d4e5f6 でバックフィル 逆方向同期・完全統合は未対応。仕入先は Supplier との二重管理が残
自動仕訳ルール パターンマッチ(contains/exact/regex) —
仕訳テンプレート テンプレートからの仕訳作成 —
証憑管理 領収証・支払証・明細行 —
予算管理 予算登録・実績比較 —
財務比率分析 流動比率・自己資本比率・ROA・ROE・売上総利益率・在庫回転率等 —
前年比較・月次推移 YoY・MoM・複数年比較 —
部門別損益計算 全部門一覧・部門間比較・部門別詳細 —
与信管理 与信限度額(DB 永続化)・残高監視・超過アラート・回収予測 —
現金流量予測 入金予定・出金予定・日別予測・資金ショート予警報 —
経営分析 API 上記分析機能の REST エンドポイント —

販売管理

機能 実装済み 制限
見積管理 作成・送付・受諾・拒否・失効・受注変換 —
受注管理 受注 → 確定 → 納品 → 請求 → 入金 → 完了。各ステップで仕訳自動生成。納品時にセット商品は構成商品在庫を、通常商品は在庫管理対象(在庫行あり)なら自商品在庫を自動消費。納品済みの取消は納品書取消+売上逆仕訳で帳簿を整合 在庫管理フラグが無く「在庫行の有無」で在庫管理対象を判定。INVOICED の Invoice 無効化は未対応
請求管理 請求グループ・複数受注のまとめ発行・入金記録・入金締・未収入金一覧・期限超過管理 —
価格表 標準価格・顧客別価格・数量割引・有効期間・仕入価格管理。設定/取得/無効化をテナントスコープ化 deactivate は非テナントスコープ(None)で任意レコードを許容
インボイス制度対応 適格請求書発行・8%/10% 税率区分・登録番号検証・発行履歴・PDF 出力 —
売上分析 顧客別・商品別・クロス分析・上位ランキング —
AR エイジング 売掛金を取引先別・経過期間別(5 区分)に集計。テナント分離済み —

購買管理

機能 実装済み 制限
仕入管理 仕入 → 発注 → 着荷 → 請求 → 支払 → 完了。各ステップで仕訳自動生成 消費税端数は税率グループ1回丸めに統一済み(InvoiceSetting.rounding_method 準拠)
部分受入・部分支払 明細 received_quantity、発注 received_amount、支払 paid_amount/balance、PARTIALLY_RECEIVED/PARTIALLY_PAID 返品/受入の複数行処理の原子性は未担保
受入時の在庫連動 受入で在庫を増加(従来は在庫が増えなかった不具合を修正) —
仕入先請求書+3-way matching SupplierInvoice/SupplierInvoiceLine、PurchaseMatchingService。発注・受入・請求書を請求書単位で照合。返品控除した純受入(received − returned)を基準 PayableLedger.invoice_id は既存 Invoice を指し、SupplierInvoice との元帳連携は未実装
仕入返品 return_purchase・returned_quantity/returned_amount・MovementType.PURCHASE_RETURN・逆仕訳 —
差異調整仕訳 adjust_supplier_invoice・ADJUSTED ステータス 返品を跨ぐ数量差異のみの請求書の扱いは未定義
発注一覧・取消 /api/purchase-orders 一覧・/{id}/cancel 取引先は Counterparty(Supplier と未統合)
仕入分析 仕入先別・商品別・クロス分析・上位ランキング —
AP エイジング 買掛金を取引先別・経過期間別(5 区分)に集計。テナント分離済み —

在庫・生産

機能 実装済み 制限
在庫移動履歴 入出庫記録・倉庫間移動・在庫調整・在庫カード —
棚卸管理 棚卸記録・確認・在庫自動調整・棚卸損益仕訳 —
棚卸資産評価 平均法・FIFO・LIFO・売上原価計算。低価法(切放・洗替) ロット/シリアル別の評価按分は未対応
セット商品・生産管理 BOM 定義・生産指示 → 着工 → 完成(在庫移動)・部分完成・原価計算・SetProduct 全階層のテナント継承 —
ロット番号・有効期限 Lot CRUD・ロット別残高・有効期限アラート・StockMovement.lot_id(nullable) 棚番(ロケーション)管理は未実装。ロット別評価は未実装。在庫移動 API への lot_id 受け渡しは未追加
シリアル番号 SerialNumber CRUD・StockMovement.serial_id・入出庫の状態遷移(IN_STOCK/SOLD/RETURNED/VOID)・/api/serials 棚番管理・シリアル別原価評価は未実装。`/api/inventory/add

税務・固定資産

機能 実装済み 制限
経費記帳 経費科目と連動した仕訳自動作成 —
固定資産管理 登録・減価償却(定額法/定率法)・減価償却仕訳自動生成 —
減価償却(拡張) 一括償却・月次/年次償却仕訳・売却損益・資産サマリー —
消費税申告書 月次集計・年次申告書・税率別集計・仕入税額控除・課税売上割合・納付/還付 課税売上割合の細目・インボイス経過措置は要検証
消費税簡易課税 みなし仕入率・事業区分別計算・複数事業区分 —
消費税中間申告 予定申告・実績申告・年 1/3/11 回/月次・過不足額 —
固定資産税 1.4% 計算・償却資産申告書データ・種類別集計 —
源泉徴収 報酬・料金 10.21%・外交員報酬 5%・給与所得・復興特別所得税 月次源泉徴収は公式税額表ではなく簡易近似
法人税等 法人税・地方法人税・住民税・事業税・中小軽減税率・特別控除・試験研究費控除 —
棚卸資産低価法 原価と時価の低い方評価・切放/洗替 —
確定申告書類 PDF 青色申告決算書・収支内訳書・消費税申告書(reportlab) —
国税庁様式参考 PDF 公式様式の構造を参考にした PDF 2 種(Table-based・独自座標レイアウト) 座標配置版は公式座標の再現ではなく独自レイアウト
e-Tax 提出準備 青色申告決算書・消費税申告書の提出用 XML 生成・検証・準備状態管理 XML は国税庁公式スキーマ未検証。付表 5・6 は XbrlAppendix で構造化データ+XBRL XML 出力(v41-02/v42-01・簡易独自スキーマ・公式タクソノミは将来課題)。実際の本番提出はダミー URL のため不可
月別売上集計 / 税務 API 仕訳から月別売上・仕入を集計。月別集計・公式様式 PDF・e-Tax 提出準備の REST API —
雑所得・一時所得 公的年金等・副収入・年齢別控除、特別控除 50 万円・1/2 課税 —

給与・人事

機能 実装済み 制限
給与計算 社会保険料・雇用保険料・所得税源泉徴収・手取り・標準報酬月額全 50 等級。社会保険料率は SocialInsuranceRateConfig でテナント別・都道府県別設定可(v38-03・未設定時は全国平均フォールバック)。月次源泉徴収は MonthlyTaxTable で公式税額表ベース計算(v39-03・未設定時は年換算フォールバック) —
社員マスタ Employee(tenant 内 code 一意)・EmployeeService・/api/employees(CRUD + deactivate、テナント分離) 給与画面あり(Web UI)
給与明細の月次バッチ永続化 Payslip(tenant×employee×year×month 一意)・DRAFT 再計算 / CONFIRMED スキップ・confirm 冪等・/api/payroll/run —
賞与・退職金・年末調整の永続化 BonusPayRecord/RetirementPayRecord/YearEndAdjustmentRecord・一覧/詳細/confirm 冪等・inputs_json 保持。退職金分割支給の additional_tax = averaged_tax(v40-01・5年超分割で非0) —
源泉徴収票 / 給与支払報告書 WithholdingSlipService が Payslip・年末調整レコードを集計。source・注意書き note 付き。CSV 出力。法定様式 PDF(PdfReportService・v37-01)。賞与支給明細・退職所得の源泉徴収票(v38-01) eLTAX/光ディスク等の電子申告は未実装。年末調整レコードが無い場合は概算(source=payslips_only)
退職金計算 API GET /api/payroll/retirement/calculate・/summary(一括/分割/障害退職・v41-01) —

決算

機能 実装済み 制限
期間管理・決算 期間作成・閉鎖・DD 副次方程式検証・スナップショット・月次/年次決算・期間ロック —
年次決算(F-8 Phase 1) YearEndClosingService で損益振替・繰越利益剰余金振替を自動計上。摘要による冪等化。/api/accounting/closing-entries/{year} 会計年度は暦年固定。決算取消・再計算は未実装
決算整理仕訳(F-8 Phase 2) post_adjustment_entries で利用者指定の整理仕訳(貸倒引当金繰入等)を貸借一致・テナント検証つきで計上。batch_key 冪等化。/api/accounting/closing-adjustments/{year} 引当率の自動計算・税額の自動判定・引当金の自動計上は未実装(会計方針は利用者指定)。同一 batch_key の再送は上書き・取消不可

多通貨

機能 実装済み 制限
通貨マスタ Currency(共有マスタ)・/api/currencies(POST/GET、/base、/{code}) base_currency_code と基準通貨マスタ(is_base)の整合は未整理
為替レート DB 永続化・テナント固有優先 → グローバルフォールバック・upsert・/api/exchange-rates(/rate、/convert) —
外貨建て仕訳 /api/multi-currency/journals。勘定科目をテナント検証 —
為替差損益・外貨決済 /gain-loss・/settlements。決済時の勘定科目をテナントスコープ化 —
通貨別・IFRS 財務諸表 /transactions・/balances(account_id 無視バグ修正)・`/statements/income balance-sheet

銀行・自動化・電帳法

機能 実装済み 制限
銀行照合 銀行明細と預金台帳の突合・未照合明細検出・JSON 明細取込 —
銀行明細パーサー(F-4) CSV / OFX(1.x SGML・2.x XML)/ MT940 / Zengin(全銀・固定長120バイト+可変長・振込結果返還ファイル) を標準ライブラリで解析。/api/bank-reconciliation/parse(プレビュー)・/import-file。Zengin 総合振込データ生成(/zengin/transfer/export)。OFX 複数口座・期首/期末残高対応(v39-01)。MT940 funds code・:86: 構造化サブフィールド対応(v37-03) Open Banking 本番ライブ接続・電子決済等代行業者登録は外部依存。重複判定は external_id 優先+複合キー(日付・入出金区分・金額・正規化摘要・銀行提示残高)フォールバック(v41-03 で摘要正規化)。外部ID・残高・正規化摘要差異が全て無い同日同額の別明細はスキップされ得る
Open Banking(F-4) GMOあおぞらの実 API ホストへの接続実装(httpx)。sandbox 専用分岐は無く、本番接続は未検証。差分取込(v31-02)。自動取込スケジューリング(OpenBankingSyncSchedule・run_scheduled_sync・v36-02) 本番ライブ接続は外部依存
自動仕訳ルール パターンマッチによる自動仕訳。複数明細テンプレート連動(template_lines_json・amount_ratio 按分・v35-01/v36-03) —
定期仕訳(F-6) AutoJournalRule の定期フィールド・RecurringExecution(rule_id+executed_date で冪等)・月末補正・run_due/execute_recurring・金額ソース(fixed/last_entry 前回仕訳継承)・実行ごとの amount オーバーライド・実行履歴に転記金額を記録・run-due は部分失敗を errors に返し継続・実行履歴 API —
プロセス内スケジューラ(F-6) SchedulerService(threading ベース・start/stop/run_once/status・v39-02)。init_scheduler で定期仕訳・Open Banking 同期をデフォルト登録(v40-02)。API /api/scheduler/* 本番運用では外部 cron / systemd timer との併用を推奨
電帳法対応 DocumentChain/FiscalYearSeal(SHA-256 ハッシュチェーン・Merkle ルート・決算封印)。テナントスコープ化済み FiscalYearSeal の (tenant_id, year) 複合 unique への本番移行が必要(Alembic なし)

自動経理・自立AI会計士(v52)

機能 実装済み 制限
仕訳下書きの自動生成 未仕訳の経費(ExpenseEntry)から仕訳下書きを生成。POST /api/auto-accounting/drafts/generate(year/month/dry_run)。AutoJournalDraft は (tenant_id, source_type, source_id) で一意・冪等 —
ルールベース検証(自立AI会計士) 貸借・科目種別・金額・日付・期間閉鎖・重複・税区分・高額を検証し、指摘(findings)・深刻度(INFO/WARNING/BLOCK)・信頼度を付与 検証はベストエフォート。最終判定は承認時の JournalService(DD検証・期間チェック)
承認制の計上 POST /api/auto-accounting/drafts/{id}/approve。JournalService.create 経由(DD検証・補助簿更新)で計上し、生成元の経費へ journal_entry_id をリンク。verifier の BLOCK ゲートは force=true で通過できるが、JournalService の会計不変条件(DD均衡・科目存在・期間閉鎖・未来日付)は常に適用され上書き不可。貸方科目の上書き可 下書きは承認まで本帳簿に入らない
却下・再生成 POST /api/auto-accounting/drafts/{id}/reject。却下後に再生成すると同一ソースを PENDING に更新 —
サマリ(AI会計士レポート) GET /api/auto-accounting/summary?year=&month=。下書き件数(pending/approved/rejected)・blocked・指摘コード別集計・試算表の貸借一致を返す —
下書き一覧・詳細 GET /api/auto-accounting/drafts(status/期間/limit/offset)・GET /api/auto-accounting/drafts/{id} 読み取り/書き込みは require_read/require_write。tenant_id=None のプラットフォームアクセス(読取含む全6エンドポイント)は PLATFORM_ADMIN のみ(非該当は 403)
定期生成・テナント分離 スケジューラへ任意登録(O2_AUTO_ACCOUNTING_SCHEDULE=1、既定 OFF)。下書き・API はテナントスコープ化(resolve_write_tenant) 本番運用では外部 cron / systemd timer との併用を推奨
一本化 旧 final/ultimate/future_auto_accounting・experimental/fully_automated_*・experimental/fully_autonomous_*(重複する 13 サービス)を削除し本実装へ一本化 —

認証・セキュリティ

機能 実装済み 制限
ユーザー認証 登録・パスワードハッシュ化(salt + SHA-256)・ログイン・JWT 風トークン —
ロールベース権限 3 ロール(管理者/会計/閲覧者) —
MFA(F-10) RFC 6238 準拠 TOTP・User.mfa_secret 分離保存・2 段階ログイン(mfa_required + mfa_token 300 秒 → /api/auth/mfa)・JWT の purpose 用途分離 リカバリーコード・QR/otpauth URI 発行は実装済み。MFA 設定 UI は未実装
IP ホワイトリスト IPWhitelistMiddleware(O2_ENABLE_IP_WHITELIST 既定 ON)・/api/security/ip-whitelist CRUD IPv6/CIDR 非対応(完全一致のみ)。DB 例外時はフェイルオープン。認証前のグローバル設定でテナント分離対象外
アクセスログ AccessLogMiddleware(O2_ENABLE_ACCESS_LOG 既定 ON)・/api/security/access-logs user_id/tenant_id は JWT から best-effort
監査ログ・監査フック データ変更追跡・O2_ENABLE_AUDIT_HOOKS 既定 ON・request_context ContextVar で actor 伝播・/api/security/audit-logs AuditService.log_change を直接呼ぶ手動監査には actor が伝播しない。セキュリティ管理 API は全体管理リソースでテナント分離未適用
マルチテナント テナント管理・tenant_scope_clause/verify_tenant_ownership によるデータ分離。補助簿・エイジング・勘定科目参照・在庫/セット商品・電子帳簿封印・価格表を強化。期首残高は AccountOpeningBalance でテナント別管理(共有勘定は所有者値を漏洩しない) A 系残: Role.PLATFORM_ADMIN は実装済みで、テナント管理 API(/api/tenants)は require_platform_manage で保護される

AI・外部連携

機能 実装済み 制限
AI 仕訳生成 自然言語からキーワード分類・AI 分類による仕訳候補生成 —
ローカル LLM Qwen3.5:4b(Ollama / llama.cpp) —
h1-c2 SDK 仕訳提案・確定の統合 API —
EC 連携 Shopify/Amazon 等の接続設定・受注取込・在庫同期・売上計上 —
POS 連携(F-11) /api/pos/import(data/csv/json)。勘定科目コードは PosConfig でテナント別外部化(v35-03・未設定時は 1100/4100/2100 フォールバック)。商品ID・数量を含む場合は StockMovement(SALES_OUT)と SalesOrder+SalesOrderLine(DELIVERED)を生成(v40-03) 商品IDなしの場合は仕訳のみ(後方互換)。unit_cost は売上単価を流用(実際原価は未解決・v42-02 で改善予定)
IoT 連携(F-11) /api/iot(デバイス CRUD・自動記帳・履歴)。勘定解決・仕訳生成・履歴照会をテナントスコープ化。SensorDataConverter の変換ルールは IotConversionConfig でテナント別外部化(v37-02・未設定時はデフォルトフォールバック) device_type→energy_meter 固定マッピングは既存仕様
SaaS 管理画面 テナント別請求書・利用量監視・月次レポート —
CSV 取込/出力 勘定科目・取引先・仕訳の CSV 取込/出力 —

伝票番号(N-1)

PO/SO/QT/BILL/PRD の採番を日付別・テナント別のサフィックス最大値+1 に修正(tenant_scope_clause)。

  • 実装済み: 日付が変わると 0001 に戻る、途中削除でも重複しない、テナント別に独立
  • 実装済み: (tenant_id, number) 複合 UNIQUE 制約(5テーブル)+ IntegrityError 時の再採番リトライ
  • 制限: 旧 tenant_id IS NULL では UNIQUE 制約が効かない(標準SQL: NULL != NULL)。F-12 Phase 2 の non-null 化で解消済み。非数値サフィックスは無視

未実装・制限事項

以下は現時点で未実装または未検証です。実装済みと混同しないでください。

実装と名称の乖離の全体像は docs/AUDIT_HOLLOW_IMPLEMENTATIONS_2026-09-16.md を参照。

外部連携(本番接続が必要なもの)

  • e-Tax 本番提出 — XML 生成・検証・署名・申告書永続化までは実装済み。署名は証明書があれば XMLDSig(enveloped / rsa-sha256)、無ければ従来のコメント付加(legacy)。鍵/証明書は O2_ETAX_PRIVATE_KEY_PATH/O2_ETAX_PRIVATE_KEY(PEM)、O2_ETAX_PKCS12_PATH/O2_ETAX_PKCS12_PASSWORD(PKCS#12)、O2_ETAX_CERT_PATH で供給。鍵未設定時は送信せずフェイルクローズ。送信 endpoint は O2_ETAX_ENDPOINT(未設定はダミー)、公式 xsd は O2_ETAX_XSD_DIR/O2_ETAX_XSD_PATH を配置すれば検証。IC カード読取(PKCS#11)・国税庁 API 実接続・公式 xsd の入手・e-Tax 仕様への完全適合検証は外部依存(実提出は不可) — 到達点と不足の棚卸しは docs/superpowers/specs/2026-09-21-etax-status.md
  • 税務 XML の国税庁公式スキーマ準拠 — XML は生成するが公式スキーマ(xsd)未検証。付表 5・6 は枠組みのみ。XBRL 未対応
  • 公式様式 PDF / eLTAX — 源泉徴収票・給与支払報告書は集計データまで。公式様式 PDF レイアウト・eLTAX/光ディスク等の電子申告は未実装
  • Open Banking API 連携 — 各銀行の OAuth/Mutual TLS 認証・自動取込スケジューリング(定期ポーリングの本番接続)は外部依存。Zengin(全銀)固定長フォーマットの入出金明細取込・総合振込エクスポートは実装済み

本番 DB 移行・設計

  • tenant_id nullable → non-null 移行(F-12 Phase 2) — F-12 Phase 2 完了: モデルレベルで tenant_id を non-null 化(例外: ExchangeRate、User)。バックフィルマイグレーション適用済み
  • FiscalYearSeal の複合 UNIQUE — (tenant_id, year) 複合 unique への本番移行が必要

Web UI(弥生風)

  • 弥生風の事務担当者向け Web UI を実装(サーバ同梱: Jinja2 + Alpine.js + 手書きCSS、IPA Pゴシック同梱)
  • 画面: ダッシュボード / 仕訳帳 / 試算表 / 貸借対照表 / 損益計算書 / 経費 / 経営分析 / 給与 / 消費税 / 見積 / 受注 / 納品書 / 請求 / 入金消込 / 発注 / 仕入請求書 / 在庫 / 棚卸 / ロット / シリアル / 得意先 / 商品 / 勘定科目 / 仕入先 / 倉庫 / 部門 / プロジェクト / 銀行口座 / AI設定 / 発行者設定 / 発行履歴 / Google設定
  • 認証は既存(clerk Cookie / JWT)。ロール別に書き込みUIを出し分け(APIは require_write)。ダークモード・レスポンシブ対応
  • 設計: docs/superpowers/specs/2026-09-17-web-ui-yayoi-design.md
  • 残: メニューバー各項目の実機能、一部の詳細編集/印刷

実験的機能(src/o2/experimental/)

src/o2/experimental/ は本番コードから未接続の実験領域です(API/MCP/scheduler へ配線していません)。

  • 削除済み: 量子コンピュータ/量子AI・ブロックチェーン・Post-Quantum 暗号(実体が SHA-256/XOR/乱数)、旧「完全自動経理/自立AI会計士」の重複実装(正典へ一本化)
  • 残置(AI基盤): agent_* / autonomous_* / ai_financial_statement_* 等。AI接続方針のため温存(本番未接続)
  • 実運用の AI 経路: /api/ai(ai_classifier / hybrid_classifier / journal_entry_generator → ollama_client)。local_llm_inference / llamacpp_client(llama.cpp)は未接続

完全自動経理・自立AI会計士は承認制の実動機能として実装済み(後述の「自動経理・自立AI会計士」節参照)。

インストール

git clone <repository-url>
cd o2
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

初回は DB を最新スキーマへ適用します(初期管理者の作成を含む詳細は docs/OPERATIONS.md の「初回セットアップ」を参照):

export O2_DB_PATH=o2.db
.venv/bin/alembic upgrade head

起動は ./start.sh(http://<host>:9000/login)。create_app は環境変数 O2_DB_PATH を尊重します(未設定時はテスト用のインメモリ)。

使い方

REST API

FastAPI ベースの REST API を起動します:

uvicorn o2.api:create_app --factory --reload

主要エンドポイント(抜粋):

メソッド パス 説明
GET /api/accounts 勘定科目一覧
GET /api/accounts/{code} 勘定科目取得
POST /api/accounts 勘定科目作成
PUT /api/accounts/{id}/opening-balance 期首残高のテナント別設定(共有勘定はオーバーライド記録)
GET /api/journals 仕訳一覧
GET /api/journals/{id} 仕訳詳細(明細付き)
POST /api/journals 仕訳作成(DD 検証付き)
POST /api/products 商品作成
POST /api/delivery-notes 出庫伝票作成
GET /api/fixed-assets 固定資産一覧
POST /api/fixed-assets 固定資産登録
GET /api/trial-balance 試算表
GET /api/income-statement 損益計算書
GET /api/balance-sheet 貸借対照表
GET /api/schema/{table_name} DB スキーマ取得
GET /api/tenants テナント一覧(require_manage)
POST /api/tenants テナント作成(require_manage)
POST /api/auth/login ログイン(MFA 有効時は 2 段階)
POST /api/auth/mfa MFA コード検証・トークン取得
購買
POST /api/purchase-orders 発注作成
GET /api/purchase-orders 発注一覧
GET /api/purchase-orders/{id} 発注詳細
POST /api/purchase-orders/{id}/order 発注確定
POST /api/purchase-orders/{id}/receive 受入(在庫連動・部分受入)
POST /api/purchase-orders/{id}/invoice 請求計上
POST /api/purchase-orders/{id}/pay 支払(部分支払)
POST /api/purchase-orders/{id}/return 仕入返品(逆仕訳)
POST /api/purchase-orders/{id}/cancel 発注取消
POST /api/purchase-invoices 仕入先請求書登録
GET /api/purchase-invoices 仕入先請求書一覧
POST /api/purchase-invoices/{id}/match 3-way matching(請求書単位)
POST /api/purchase-invoices/{id}/adjust 差異調整仕訳
GET /api/purchase-matching/purchase-order/{order_id} 発注のマッチング状態
多通貨
POST / GET /api/currencies 通貨マスタ作成・一覧
GET /api/currencies/base 基準通貨取得
GET /api/currencies/{code} 通貨取得
POST / GET /api/exchange-rates 為替レート設定・一覧
GET /api/exchange-rates/rate レート取得(テナント優先)
POST /api/exchange-rates/convert 通貨換算
POST /api/multi-currency/journals 外貨建て仕訳
POST /api/multi-currency/gain-loss 為替差損益
POST /api/multi-currency/settlements 外貨決済
GET /api/multi-currency/balances 通貨別残高
GET /api/multi-currency/statements/income 通貨別損益計算書
GET /api/multi-currency/statements/balance-sheet 通貨別貸借対照表
GET /api/multi-currency/ifrs/income IFRS 損益計算書
GET /api/multi-currency/ifrs/balance-sheet IFRS 貸借対照表
給与
POST / GET /api/employees 社員マスタ作成・一覧
PUT /api/employees/{id} 社員更新
POST / GET /api/payroll/run 月次給与計算バッチ(永続化)
GET /api/payroll/payslips 給与明細一覧
POST /api/payroll/payslips/{id}/confirm 給与明細確定
POST / GET /api/payroll/bonus 賞与計算・永続化
POST / GET /api/payroll/retirements 退職金計算・永続化
POST / GET /api/payroll/year-end 年末調整計算・永続化
GET /api/payroll/withholding-slip/{employee_id}/{year} 源泉徴収票集計データ
GET /api/payroll/payment-report/{year} 給与支払報告書集計データ
在庫
POST / GET /api/lots ロット作成・一覧
GET /api/lots/expiring 有効期限アラート
GET /api/lots/{id}/balance ロット別残高
POST / GET /api/serials シリアル登録・一覧
POST /api/serials/{id}/status シリアル状態変更
決算
POST /api/accounting/closing-entries/{year} 損益振替・繰越利益剰余金振替
GET /api/accounting/closing-entries/{year} 年次決算仕訳一覧
POST /api/accounting/closing-adjustments/{year} 任意の決算整理仕訳
GET /api/accounting/closing-adjustments/{year} 決算整理仕訳一覧
自動化
POST / GET /api/automation/rules 自動仕訳ルール(定期フィールド付き)
POST /api/automation/rules/run-due 期限到来分の定期仕訳実行
POST /api/automation/rules/{id}/execute-recurring 定期仕訳実行
GET /api/automation/rules/{id}/executions 実行履歴
GET /api/automation/executions 全実行履歴
銀行
POST /api/bank-reconciliation/parse 明細パース(プレビュー・CSV/OFX/MT940/Zengin)
POST /api/bank-reconciliation/import-file 明細ファイル取込(CSV/OFX/MT940/Zengin)
POST /api/bank-reconciliation/reconcile 照合実行
POST /api/bank-reconciliation/zengin/transfer/export Zengin 総合振込データ生成
棚番(F-5)
POST / GET /api/locations 棚番作成・一覧
税務申告書(F-1/F-2)
POST /api/tax/etax/prepare/blue-return/{year} 青色申告 e-Tax 提出準備
POST /api/tax/etax/prepare/consumption-tax/{year} 消費税 e-Tax 提出準備
POST /api/tax/etax/prepare/corporate-tax/{year} 法人税 e-Tax 提出準備
GET /api/tax/tax-returns 申告書一覧
GET /api/tax/tax-returns/{id} 申告書詳細(include_xml)
POST /api/tax/tax-returns/{id}/status 申告書ステータス更新
引当金・税額(F-8)
POST /api/accounting/provisions/{year} 引当金計算・計上
GET /api/accounting/provisions/{year}/estimate 引当金プレビュー
GET /api/accounting/taxable-income/{year} 税務調整後課税所得
給与仕訳(F-3)
POST /api/payroll/{type}/{id}/journal 給与系レコードの仕訳自動生成
セキュリティ
GET / POST /api/security/ip-whitelist IP ホワイトリスト一覧・追加
DELETE /api/security/ip-whitelist/{ip_address} IP 削除
GET /api/security/access-logs アクセスログ
GET /api/security/audit-logs 監査ログ
POST /api/security/users/{id}/mfa/enable MFA 有効化
POST /api/security/users/{id}/mfa/disable MFA 無効化
POST /api/security/users/{id}/mfa/verify MFA 検証
POS / IoT
POST /api/pos/import POS 売上取込(CSV/JSON)
POST / GET /api/iot/devices IoT デバイス作成・一覧
POST /api/iot/devices/{id}/auto-journal IoT 自動記帳
POST /api/iot/auto-journal/batch 自動記帳バッチ
GET /api/iot/devices/{id}/history IoT 記帳履歴
EC / AI
POST /api/ec/connections EC 接続作成
POST /api/ec/import EC 受注取込
POST /api/ai/suggest AI 仕訳候補生成
POST /api/ai/confirm AI 仕訳確定・登録

MCP サーバー

JSON-RPC ベースの MCP サーバーを起動します:

python -m o2.mcp

HTTP エンドポイント(FastAPI 内蔵): POST /mcp

利用可能なツール:

ツール名 説明
list_accounts 勘定科目の一覧を取得
create_journal 仕訳を作成(DD 検証付き)
get_trial_balance 試算表を取得
get_income_statement 損益計算書を取得
get_balance_sheet 貸借対照表を取得
create_product 商品を作成
create_delivery_note 出庫伝票を作成
complete_delivery_note 出庫伝票を完了(在庫減算・売上計上)

リクエスト/レスポンス例

勘定科目作成

curl -X POST http://localhost:9000/api/accounts \
  -H "Content-Type: application/json" \
  -d '{"code": "1100", "name": "現金", "type": "asset"}'

仕訳作成(DD 検証付き)

curl -X POST http://localhost:9000/api/journals \
  -H "Content-Type: application/json" \
  -d '{
    "date": "2026-09-01",
    "description": "文房具購入",
    "lines": [
      {"account_code": "5200", "side": "debit", "amount": "1000"},
      {"account_code": "1100", "side": "credit", "amount": "1000"}
    ]
  }'

試算表取得

curl http://localhost:9000/api/trial-balance

テスト

# コアスイート(全テスト)
.venv/bin/python -m pytest tests/ -q

# 実験的機能テストのみ
.venv/bin/python -m pytest tests/experimental/ -q

# テナント分離テスト
.venv/bin/python -m pytest tests/test_tenant_data_isolation.py -q

現在のテスト数: 6345 passed(コアスイート)。

既知の警告: StarletteDeprecationWarning: Using httpx with starlette.testclient is deprecated(httpx2 移行は別タスク)。

マイグレーション(Alembic)

スキーマ変更は Alembic で管理します。テストは create_all(インメモリDB)を継続し、本番は alembic upgrade head で構築します。

# 新規DB構築・未適用分の適用
.venv/bin/alembic upgrade head

# 1つ前へロールバック
.venv/bin/alembic downgrade -1

# モデル変更後の差分マイグレーション生成
.venv/bin/alembic revision --autogenerate -m "description"

# 現在の状態確認
.venv/bin/alembic current

# マイグレーション履歴
.venv/bin/alembic history

DBパスは環境変数 O2_DB_PATH(既定 o2.db)で上書き可能。

技術スタック

  • Python 3.11+
  • SQLModel + SQLite — ORM・DB
  • FastAPI — REST API
  • Pydantic — データバリデーション
  • Alembic — DBマイグレーション
  • cryptography — RSA 電子署名・PKCS#12(e-Tax 用)
  • signxml / lxml — e-Tax XMLDSig(enveloped)署名・xsd 検証
  • httpx — 外部 API クライアント(Open Banking / Google)
  • ruff — リンティング・フォーマット
  • PyJWT-free JWT — hashlib + hmac による JWT 風トークン

プロジェクト構造

src/o2/
├── core/           # DB接続・監査フック・リクエストコンテキスト
├── models/         # SQLModel ORM(コアモデル)
├── services/       # ビジネスロジック(コアサービス)
├── api/            # FastAPI REST エンドポイント
├── mcp/            # JSON-RPC MCP サーバー
└── experimental/   # 実験的機能(自律AI等)
    ├── services/
    └── models/
migrations/         # Alembic マイグレーション

ライセンス

MIT