仕様書(機能仕様書)
システム概要
・早期異変の発見
・受診判断の支援
・継続的な健康管理の実現
HTML / CSS / JavaScript
Thymeleaf テンプレート
Spring Boot
Controller → Service → Repository
H2 / MySQL / PostgreSQL
ユーザー・ペット・健康記録を管理
利用者はフロントエンド画面を操作し、バックエンドで業務処理を行い、永続データはデータベースに保存する構成です。
機能一覧
| No. | 機能名 | 概要 | 対応画面 | 優先度 |
|---|---|---|---|---|
| F-001 | ログイン認証 | 管理者・一般ユーザー認証と権限制御 | ログイン画面 | Must |
| F-002 | ダッシュボード表示 | KPI・予定・通知の集約表示と導線提供 | ダッシュボード画面 | Must |
| F-003 | ユーザー管理(CRUD) | ユーザー情報の登録/参照/更新/削除 | ユーザー管理画面 | Must |
| F-004 | ペット管理(CRUD) | ペット情報の登録/参照/更新/削除 | ペット管理画面 | Must |
| F-005 | 健康記録管理(CRUD) | 体重/食事/運動などの記録管理 | 健康記録管理画面 | Must |
| F-006 | 予約管理(CRUD) | 診療・相談予約の登録/変更/キャンセル | 予約管理画面 | Must |
| F-007 | 診療・相談履歴管理(CRUD) | 履歴の登録/参照/更新/削除 | 診療・相談履歴画面 | Must |
| F-008 | 入力バリデーション | 必須・形式・文字数・範囲などの検証 | 各登録/編集画面 | Must |
| F-009 | AI症状チェック | 症状解析と推奨対応提示 | 症状チェック画面 | Should |
| F-010 | 検索・ソート・ページネーション | 一覧表示の検索性/閲覧性向上 | 各一覧画面 | Should |
| F-011 | 通知・リマインド配信 | 通知作成、配信設定、履歴管理 | 通知配信管理画面 | Should |
| F-012 | PDF出力 | レポート/一覧のPDF出力 | レポート画面 / 各一覧画面 | Could |
| F-013 | ファイルアップロード | 添付ファイルの登録・管理 | 診療・相談履歴画面 | Could |
| F-014 | メール通知 | 予約・重要情報のメール配信 | 通知配信管理画面 | Could |
画面遷移図
ログイン認証後、ダッシュボード画面へ遷移し、ユーザー管理、ペット管理、健康記録管理、予約管理、診療・相談履歴、通知配信、レポート画面へ移動できる。
各管理画面では一覧、詳細、編集、登録画面を相互遷移し、保存後は対象一覧へ戻る。AI症状チェック結果からは予約管理画面への導線を持つ。
機能詳細仕様
F-001 ログイン認証
メールアドレス/パスワードで認証し、成功時にセッションを発行してダッシュボードへ遷移する。
メールアドレス入力、パスワード入力、ログインボタン、再設定リンクを配置。
1. 認証情報を入力する。
2. ログインボタン押下で認証処理を実行する。
3. 認証結果に応じて遷移またはエラー表示する。
認証成功でセッションを作成し、ダッシュボードへ遷移する。
バリデーション: 未入力・形式不正を項目下に表示。
システム: 認証処理失敗時に汎用エラーメッセージを表示。
ダッシュボード画面
パスワード再設定画面
| 項目名 | データ型 | 必須 | バリデーション | 備考 |
|---|---|---|---|---|
| メールアドレス | String | ○ | 必須チェック / メール形式 / 255文字以内 | ログインID |
| パスワード | String | ○ | 必須チェック / 8〜64文字 | マスク表示 |
F-002 ダッシュボード表示
KPI・通知・本日の予定を表示し、各管理画面への導線を提供する。
KPIカード、本日の予定、通知一覧、メニュー導線を配置。
1. 画面表示時にKPI・予定・通知を取得する。
2. 各ウィジェットへ表示する。
3. メニュー選択で対象画面へ遷移する。
最新データを表示し、各機能に遷移できる。
バリデーション: 期間条件不正を表示。
システム: 一部データ取得失敗時は該当領域のみエラー表示。
各管理画面
症状チェック画面
通知配信管理画面
レポート画面
| 項目名 | データ型 | 必須 | バリデーション | 備考 |
|---|---|---|---|---|
| 期間フィルタ(開始日) | Date | — | 日付形式 | 任意検索 |
| 期間フィルタ(終了日) | Date | — | 日付形式 / 開始日以降 | 任意検索 |
F-003 ユーザー管理(CRUD)
ユーザー情報の一覧表示、登録、詳細表示、編集、削除を行う。
一覧テーブル、検索欄、登録ボタン、詳細/編集/削除操作を配置。
1. 検索または対象ユーザーを選択する。
2. 登録/更新/削除を実行する。
3. 保存後に一覧を再表示する。
操作結果を保存し、一覧へ反映する。
バリデーション: 必須・形式・重複エラーを表示。
システム: 競合/保存失敗時に警告表示する。
ユーザー詳細画面
ユーザー編集画面
ユーザー管理画面(一覧)
| 項目名 | データ型 | 必須 | バリデーション | 備考 |
|---|---|---|---|---|
| 氏名 | String | ○ | 必須チェック / 1〜50文字 | 全角半角可 |
| メールアドレス | String | ○ | 必須チェック / メール形式 / 重複不可 | 一意制約 |
| 電話番号 | String | — | 数字・ハイフン / 10〜13桁 | 任意 |
F-004 ペット管理(CRUD)
ペット情報の登録、参照、更新、削除を行い、飼い主情報と紐付ける。
ペット一覧、飼い主紐付け項目、登録/編集フォームを配置。
1. 対象データを選択する。
2. 登録/更新/削除を実行する。
3. 保存後に一覧へ反映する。
ペット情報と飼い主紐付けを更新する。
バリデーション: 必須・日付不正を表示。
システム: 紐付け整合エラー時に保存中止。
ペット詳細画面
ペット編集画面
健康記録管理画面
| 項目名 | データ型 | 必須 | バリデーション | 備考 |
|---|---|---|---|---|
| ペット名 | String | ○ | 必須チェック / 1〜40文字 | |
| 種別 | Enum | ○ | 必須チェック | 犬 / 猫 など |
| 生年月日 | Date | — | 日付形式 / 未来日不可 | 任意 |
F-005 健康記録管理(CRUD)
体重・食事・運動などの健康記録を登録し、時系列で管理する。
記録一覧、期間フィルタ、記録フォームを配置。
1. 記録内容を入力する。
2. 入力値を検証する。
3. 保存後に履歴へ反映する。
時系列一覧と関連表示を更新する。
バリデーション: 数値範囲外・日付不正を表示。
システム: 保存失敗時に再試行案内を表示。
健康記録詳細画面
健康記録編集画面
ペット詳細画面
| 項目名 | データ型 | 必須 | バリデーション | 備考 |
|---|---|---|---|---|
| 記録日 | Date | ○ | 必須チェック / 日付形式 | |
| 体重 | Decimal | — | 数値 / 0.1〜200.0 | 任意 |
| 食事メモ | String | — | 300文字以内 | 任意 |
F-006 予約管理(CRUD)
診療・相談予約の登録、変更、キャンセルを管理し、空き枠チェックを行う。
予約一覧、日付フィルタ、予約フォーム、変更/キャンセル操作を配置。
1. 予約条件を入力する。
2. 空き枠と重複をチェックする。
3. 成功時に一覧へ反映する。
予約確定し最新状態を表示する。
バリデーション: 過去日時・必須漏れを表示。
システム: 競合時に警告表示する。
予約詳細画面
予約編集画面
通知配信管理画面
| 項目名 | データ型 | 必須 | バリデーション | 備考 |
|---|---|---|---|---|
| 予約日時 | DateTime | ○ | 必須チェック / 過去日時不可 | |
| 予約種別 | Enum | ○ | 必須チェック | 診療 / 相談 |
| 備考 | String | — | 500文字以内 | 任意 |
F-007 診療・相談履歴管理(CRUD)
診療・相談履歴の登録、検索、編集、削除と添付管理を行う。
履歴一覧、検索欄、履歴フォーム、添付欄を配置。
1. 履歴情報を入力する。
2. 入力値とファイルを検証する。
3. 保存後に一覧へ反映する。
履歴を対象データに紐付け保存する。
バリデーション: 文字数超過・形式不正を表示。
システム: 保存失敗時に通知表示する。
履歴詳細画面
履歴編集画面
ペット管理画面
| 項目名 | データ型 | 必須 | バリデーション | 備考 |
|---|---|---|---|---|
| 実施日 | Date | ○ | 必須チェック / 日付形式 | |
| 対応内容 | String | ○ | 必須チェック / 1000文字以内 | |
| 添付ファイル | File | — | 拡張子チェック / 5MB以内 | PDF・画像 |
F-008 入力バリデーション
全フォームの必須・形式・範囲・重複チェックを共通ルールで実行する。
各入力欄下にエラー表示領域を配置。
1. 送信時に共通検証を実行する。
2. エラー一覧を作成する。
3. 保存続行または差し戻しする。
検証通過時のみ保存処理へ進む。
バリデーション: 項目単位でエラーを表示。
システム: 検証処理失敗時に汎用エラー表示。
同一画面(エラー時)
対象遷移先(正常時)
| 項目名 | データ型 | 必須 | バリデーション | 備考 |
|---|---|---|---|---|
| 必須項目検証 | Boolean | ○ | 必須チェック | 共通処理 |
| 形式検証 | Boolean | ○ | メール/電話形式チェック | 共通処理 |
| 範囲検証 | Boolean | ○ | 文字数/数値範囲チェック | 共通処理 |
F-009 AI症状チェック
症状入力を解析し、重症度と推奨対応(経過観察/相談/受診)を提示する。
症状入力フォーム、実行ボタン、結果カードを配置。
1. 症状を入力する。
2. AI解析を実行する。
3. 判定結果を表示する。
重症度と推奨アクションを表示する。
バリデーション: 入力不足を表示。
システム: 解析失敗時に再試行案内を表示。
症状チェック結果画面
予約管理画面
| 項目名 | データ型 | 必須 | バリデーション | 備考 |
|---|---|---|---|---|
| 症状種別 | Enum | ○ | 必須チェック | 複数選択可 |
| 発症時期 | String | ○ | 必須チェック / 100文字以内 | |
| 補足メモ | String | — | 500文字以内 | 任意 |
F-010 検索・ソート・ページネーション
一覧画面で条件検索、並び替え、ページ分割表示を提供する。
検索欄、ソートヘッダー、ページャーを配置。
1. 条件を入力する。
2. 一覧を再取得する。
3. ページ情報を更新表示する。
条件一致データを指定順で表示する。
バリデーション: ページ番号不正を補正。
システム: 一覧取得失敗時にエラー表示。
同一一覧画面
| 項目名 | データ型 | 必須 | バリデーション | 備考 |
|---|---|---|---|---|
| キーワード | String | — | 100文字以内 | 任意 |
| ソートキー | Enum | — | 定義済み項目のみ | 任意 |
| ページ番号 | Integer | — | 1以上 | 任意 |
F-011 通知・リマインド配信
通知作成、配信対象設定、配信実行、配信履歴管理を行う。
通知フォーム、対象選択、配信履歴を配置。
1. 通知内容と対象を設定する。
2. 配信実行または予約登録する。
3. 配信結果を履歴記録する。
配信成功ステータスを保存する。
バリデーション: 件名/本文不備を表示。
システム: 配信失敗時に再送導線を表示。
通知詳細画面
ダッシュボード画面
| 項目名 | データ型 | 必須 | バリデーション | 備考 |
|---|---|---|---|---|
| 件名 | String | ○ | 必須チェック / 100文字以内 | |
| 本文 | String | ○ | 必須チェック / 2000文字以内 | |
| 配信日時 | DateTime | — | 日時形式 / 現在以降 | 予約配信 |
F-012 PDF出力
指定条件でレポートや一覧データをPDFとして生成・出力する。
条件フォーム、出力ボタン、出力履歴を配置。
1. 条件を指定する。
2. 帳票生成を実行する。
3. 完了後にダウンロードを表示する。
PDFを生成しダウンロード可能にする。
バリデーション: 期間不整合を表示。
システム: 生成失敗時に再試行案内。
レポート画面(同一画面)
| 項目名 | データ型 | 必須 | バリデーション | 備考 |
|---|---|---|---|---|
| 対象期間(開始日) | Date | ○ | 必須チェック / 日付形式 | |
| 対象期間(終了日) | Date | ○ | 必須チェック / 開始日以降 | |
| 出力種別 | Enum | ○ | 必須チェック | 月次 / 顧客別 |
F-013 ファイルアップロード
関連ファイルを検証後に保存し、対象データへ紐付けて管理する。
ファイル選択、実行ボタン、添付一覧を配置。
1. ファイルを選択する。
2. 形式/容量を検証する。
3. 保存して一覧更新する。
添付一覧に反映し参照可能とする。
バリデーション: 拡張子不正・容量超過表示。
システム: 保存失敗時に通知表示。
診療・相談履歴詳細画面(同一画面再表示)
| 項目名 | データ型 | 必須 | バリデーション | 備考 |
|---|---|---|---|---|
| 添付ファイル | File | — | 拡張子チェック / 10MB以内 | PDF・JPG・PNG |
| 説明 | String | — | 200文字以内 | 任意 |
F-014 メール通知
テンプレートに基づき即時/予約でメール送信し、送信結果を記録する。
テンプレート選択、送信先設定、送信履歴を配置。
1. 送信条件を設定する。
2. 即時/予約送信を実行する。
3. 送信結果を記録する。
送信成功件数を表示し履歴更新する。
バリデーション: 必須漏れ・形式不正を表示。
システム: 送信失敗時に再送対象として保持。
通知配信管理画面
予約管理画面
| 項目名 | データ型 | 必須 | バリデーション | 備考 |
|---|---|---|---|---|
| テンプレートID | Enum | ○ | 必須チェック | 登録済みテンプレート |
| 送信先メール | String | ○ | 必須チェック / メール形式 | |
| 送信タイミング | DateTime | — | 日時形式 | 即時/予約 |
非機能要件
- 認証方式(Spring Security): フォームログインを基本にSpring Securityで認証・認可を実装し、URL単位でアクセス制御する。
- パスワードの暗号化方式: BCryptPasswordEncoderでハッシュ化して保存し、平文保存は行わない。
- CSRF対策: Spring SecurityのCSRF保護を有効化し、フォーム送信時にCSRFトークンを検証する。
- XSS対策: 入力値バリデーションと出力時エスケープ(Thymeleaf自動エスケープ)を実施する。
- SQLインジェクション対策: JPA/Repositoryおよびバインド変数を使用し、SQL文字列連結を禁止する。
- セッション管理: ログイン時のセッションID再生成、セッションタイムアウト設定、ログアウト時のセッション破棄を実施する。
- 対応ブラウザ: Chrome(最新版)/ Firefox(最新版)/ Edge(最新版)
- 対応デバイス: PC / タブレット / スマートフォン