リクエスト詳細
✨ 既存アプリの改善
対応完了
対象アプリ: カスタムマッピング
ピンへのコメントスレッド(チーム掲示板)機能の追加
## 1. 目的
小規模チームが同一ピンに対して複数回コメントを投稿・閲覧できる「スレッド型コメント欄」を追加する。既存のレビュー(星評価)は1ピン1件の評価用途だが、本機能は「現地調査メモ」「進捗共有」「質問と返答」など複数人・複数回の会話を蓄積するためのもの。
---
## 2. 具体的な仕様
### 2-1. DBテーブル追加
```sql
CREATE TABLE pin_comments (
id INT AUTO_INCREMENT PRIMARY KEY,
pin_id INT NOT NULL,
author VARCHAR(100) NOT NULL, -- 投稿者名(自由入力)
body TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (pin_id) REFERENCES pins(id) ON DELETE CASCADE
);
```
### 2-2. 画面・UI
- **ピン詳細ポップアップ(既存)** に「コメント (N件)」タブを追加する(既存の「情報」「写真」「履歴」タブと並列)。
- コメントタブの内容:
- 過去コメント一覧(投稿者名・日時・本文を時系列順に表示)
- 最下部に投稿フォーム:投稿者名テキストボックス(空欄時は「匿名」)+本文テキストエリア+「送信」ボタン
- コメント件数が0件の場合はタブに「コメント」と表示、1件以上は「コメント (N)」と表示。
- スマホでは縦スクロール可能なモーダル内に収まるよう、コメント一覧エリアに `max-height: 200px; overflow-y: auto;` を適用。
### 2-3. API(PHP エンドポイント追加)
- `api/comments.php`
- `GET ?pin_id=XXX` → そのピンのコメント一覧をJSON返却
- `POST` body: `{pin_id, author, body}` → バリデーション後INSERT、新規コメントをJSON返却
- bodyは空文字・255文字超をサーバー側で拒否(400エラー)
- 既存の合言葉認証セッションが有効な場合のみPOSTを許可
### 2-4. フロントJS
- ポップアップ表示時に `GET api/comments.php?pin_id=XXX` を非同期取得してタブに描画。
- 送信ボタン押下時にfetch POSTし、成功後コメント一覧を再取得して再描画(ページリロードなし)。
- 投稿中はボタンを `disabled` にして二重送信防止。
### 2-5. 地図上の視覚的フィードバック
- コメントが1件以上あるピンには、既存のピンアイコン右上に小さな吹き出しバッジ(CSSで実装)を表示し、未読コメントの存在を示す。
---
## 3. 既存機能との整合
- 既存の「レビュー(星評価)」テーブル・UIはそのまま変更しない。コメントは別テーブル・別タブで完全に分離。
- ピン削除時は `ON DELETE CASCADE` により関連コメントも自動削除されるため、既存の削除フローを変更不要。
- CSV/JSONエクスポートへのコメント列追加は今回スコープ外とし、将来対応とする(既存エクスポートは無変更)。
- 既存の編集履歴(history)機能とは独立しており、コメント投稿は履歴に記録しない。
- 多言語対応:タブラベル・プレースホルダー・エラーメッセージを既存の `lang` オブジェクトに追記(日本語・英語)。
小規模チームが同一ピンに対して複数回コメントを投稿・閲覧できる「スレッド型コメント欄」を追加する。既存のレビュー(星評価)は1ピン1件の評価用途だが、本機能は「現地調査メモ」「進捗共有」「質問と返答」など複数人・複数回の会話を蓄積するためのもの。
---
## 2. 具体的な仕様
### 2-1. DBテーブル追加
```sql
CREATE TABLE pin_comments (
id INT AUTO_INCREMENT PRIMARY KEY,
pin_id INT NOT NULL,
author VARCHAR(100) NOT NULL, -- 投稿者名(自由入力)
body TEXT NOT NULL,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (pin_id) REFERENCES pins(id) ON DELETE CASCADE
);
```
### 2-2. 画面・UI
- **ピン詳細ポップアップ(既存)** に「コメント (N件)」タブを追加する(既存の「情報」「写真」「履歴」タブと並列)。
- コメントタブの内容:
- 過去コメント一覧(投稿者名・日時・本文を時系列順に表示)
- 最下部に投稿フォーム:投稿者名テキストボックス(空欄時は「匿名」)+本文テキストエリア+「送信」ボタン
- コメント件数が0件の場合はタブに「コメント」と表示、1件以上は「コメント (N)」と表示。
- スマホでは縦スクロール可能なモーダル内に収まるよう、コメント一覧エリアに `max-height: 200px; overflow-y: auto;` を適用。
### 2-3. API(PHP エンドポイント追加)
- `api/comments.php`
- `GET ?pin_id=XXX` → そのピンのコメント一覧をJSON返却
- `POST` body: `{pin_id, author, body}` → バリデーション後INSERT、新規コメントをJSON返却
- bodyは空文字・255文字超をサーバー側で拒否(400エラー)
- 既存の合言葉認証セッションが有効な場合のみPOSTを許可
### 2-4. フロントJS
- ポップアップ表示時に `GET api/comments.php?pin_id=XXX` を非同期取得してタブに描画。
- 送信ボタン押下時にfetch POSTし、成功後コメント一覧を再取得して再描画(ページリロードなし)。
- 投稿中はボタンを `disabled` にして二重送信防止。
### 2-5. 地図上の視覚的フィードバック
- コメントが1件以上あるピンには、既存のピンアイコン右上に小さな吹き出しバッジ(CSSで実装)を表示し、未読コメントの存在を示す。
---
## 3. 既存機能との整合
- 既存の「レビュー(星評価)」テーブル・UIはそのまま変更しない。コメントは別テーブル・別タブで完全に分離。
- ピン削除時は `ON DELETE CASCADE` により関連コメントも自動削除されるため、既存の削除フローを変更不要。
- CSV/JSONエクスポートへのコメント列追加は今回スコープ外とし、将来対応とする(既存エクスポートは無変更)。
- 既存の編集履歴(history)機能とは独立しており、コメント投稿は履歴に記録しない。
- 多言語対応:タブラベル・プレースホルダー・エラーメッセージを既存の `lang` オブジェクトに追記(日本語・英語)。
💬 返信 (3)
🛠 開発を開始しました (機能追加 (custom-mapping))
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
ご要望ありがとうございます。AI 開発ワーカーが実装を開始します。
通常 5〜30 分で Pull Request を作成し、レビュー後にリリースされます。
📝 開発が完了しました
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
ご要望いただいた内容の実装が完了し、最終チェック段階に入りました。
レビュー (自動) → リリース、の流れで進みます。
もう少々お待ちください。
✅ リリース完了のお知らせ
ご要望いただいた「カスタムマッピング」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=custom-mapping
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/custom-mapping/
ご利用ありがとうございます!
ご要望いただいた「カスタムマッピング」を実装し、リリースいたしました。
【ご利用方法】
ダッシュボード: https://www.aiapps.jp/?action=dashboard
アプリ詳細: https://www.aiapps.jp/apps/show.php?slug=custom-mapping
デモ環境は 1 時間以内に自動構築されます:
https://www.aiapps.jp/demo/custom-mapping/
ご利用ありがとうございます!
Echo
Iris