配布資料の目次 › 再現環境 Keihi
配布資料 61Keihi 要件定義 — 概要
status: active / 再現用ミニPJ(企業内でよく構築される経費精算システム)の要件。
実運用の製品ではなく、題材プロジェクトの設計パターンを安全に再現するための最小の題材として書いてあります。 読むときは「AI がそのまま実装に使える要件文書とはどういうものか」の見本として見てもらえると嬉しいです。
1. 目的とスコープ
社員が経費を申請し、上長が承認し、経理が支払処理する社内システムです。教材が目的なので、実運用の製品ではなく「題材プロジェクトの設計パターンを安全に再現する最小の題材」として設計しています。
- 初期スコープは承認1段階とする。これは意図的な設計であり、第2部 の大規模仕様変更演習で「事後承認の2段階制 + 代理申請」を追加する余白として機能する(→
chronicle/02演習A) - 決済事業者・銀行連携は扱わない(支払処理はステータス変更 + 支払予定日の記録まで)
2. ロール(3アクター)
| ロール | 主な操作 | API プレフィックス |
|---|---|---|
| 社員(申請者) | 申請の作成・提出・取下げ・差戻し後の修正 | /api/staff/ |
| 承認者(上長) | 承認待ち一覧・承認・差戻し(理由必須) | /api/approval/ |
| 経理 | 承認済みの支払処理・月次締め集計 | /api/finance/ |
アクター別プレフィックスと JWT の分離は題材プロジェクト規約の移植(→ catalog/02_rules.md backend)。
3. 経費申請(Expense)の構造
- ヘッダ: 申請ID・申請者・件名・申請日・状態・合計金額(明細から導出。直接編集不可)
- 明細行(1..n): 利用日・費目・金額・摘要・領収書有無
- 費目マスタ: 交通費 / 会議費 / 消耗品費 / 出張費 / 通信費(上限ルールは
02_要件_金額計算.md)
4. 状態遷移(初期スコープ)
stateDiagram-v2
[*] --> 下書き
下書き --> 提出: 申請
下書き --> 取下げ済み: 取下げ
提出 --> 承認済み: 承認者が承認
提出 --> 差戻し: 承認者が差戻し(理由必須)
差戻し --> 提出: 修正して再申請
差戻し --> 取下げ済み: 取下げ
承認済み --> 支払済み: 経理が支払処理
- 提出後の編集は不可(差戻しを経由する)
- 承認済み・支払済みは取下げ不可
- 全状態遷移に操作者・日時の履歴を記録する(監査証跡)
5. 非機能規約(題材プロジェクトから移植する規約)
- 主キーは ULID(UUID 禁止)
- 物理削除禁止。deleteFlag による論理削除・全クエリで除外
- 監査5フィールド(createdAt / updatedAt / createdBy / updatedBy / deleteFlag)全エンティティ必須
- 日時列は最初からタイムゾーン付き(timestamptz)を選ぶ——題材プロジェクトが naive timestamp で払った9時間ずれの授業料(→ 事例 #09)を、正しい初期選択で回避する見本
- スタック: NestJS + Next.js + Prisma + PostgreSQL + Docker(Redis なし)
この資料を出典にしている回