131 lines
6.1 KiB
Markdown
131 lines
6.1 KiB
Markdown
|
|
---
|
|||
|
|
name: ツールアプリ差別化実装計画
|
|||
|
|
description: Posimai ツールカテゴリ各アプリへのエコシステム連携・差別化機能の実装計画(優先順位付き)
|
|||
|
|
type: project
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 背景・目的
|
|||
|
|
|
|||
|
|
ツールカテゴリ(digest/clean/timer/lens/diff/roadmap)は現状「汎用ツール + Posimaiデザイン」止まりで、
|
|||
|
|
エコシステムとの連携がゼロ。Posimaiらしさを出すために以下の実装を優先順位順に進める。
|
|||
|
|
|
|||
|
|
**Why:** 各ツールが Pulse/Brain/Journal/Maps 等の他アプリと連携することで、
|
|||
|
|
「使って終わり」から「記録・蓄積・振り返り」のループが完成する。
|
|||
|
|
|
|||
|
|
**How to apply:** 実装前に必ず現在のアプリコードを全文読んでから着手する。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 実装優先順位と内容
|
|||
|
|
|
|||
|
|
### 1位: posimai-timer — Pulse連携 + セッションログ
|
|||
|
|
|
|||
|
|
**実装内容:**
|
|||
|
|
- タイマー終了時(カウントダウン)に「集中セッション終了モーダル」を表示
|
|||
|
|
- 何をやったか(テキストメモ、任意)
|
|||
|
|
- エネルギーレベル(1-5 スライダー or タップ選択)
|
|||
|
|
- 気分(1-5)
|
|||
|
|
→ これを Pulse と同じ localStorage スキーマで保存する
|
|||
|
|
- セッション履歴ビューを追加(サイドバーに「履歴」ナビ追加)
|
|||
|
|
- 日付ごとのセッション一覧(時刻・時間・メモ・エネルギー)
|
|||
|
|
- 今週の合計集中時間を冒頭に表示
|
|||
|
|
- Habit と同じ週ヒートマップで可視化(日別集中時間)
|
|||
|
|
|
|||
|
|
**Pulse との連携方式:**
|
|||
|
|
- Pulse の localStorage キー: `posimai-pulse-entries`(data-app-id="posimai-pulse" 配下)
|
|||
|
|
- Timer が直接同じキーに書き込むのではなく、Timer 独自キー `posimai-timer-sessions` に保存
|
|||
|
|
→ Pulse アプリ側で Timer セッション連携を将来追加する方が正しい設計
|
|||
|
|
→ 今回は Timer 内にセッション記録・閲覧機能を完結させる
|
|||
|
|
|
|||
|
|
**UI ルール:**
|
|||
|
|
- 終了モーダルは既存のデザインシステム(--surface, --border, --accent)を使う
|
|||
|
|
- モーダルはシンプル。テキスト入力 + エネルギー選択(5段階)のみ。送信 or スキップ
|
|||
|
|
- ヒートマップは Habit アプリと同じロジックで実装(7列 × N行グリッド、今週ハイライト)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 2位: posimai-diff — 履歴保存 + Journalへ送信
|
|||
|
|
|
|||
|
|
**実装内容:**
|
|||
|
|
- 比較履歴の永続化
|
|||
|
|
- 「保存」ボタンでタイトル付き保存(localStorage: `posimai-diff-history`)
|
|||
|
|
- 履歴ビュー(サイドバー「履歴」)で過去の比較を再読み込み
|
|||
|
|
- 最大20件保存(古いものから削除)
|
|||
|
|
- Journalへ送信ボタン
|
|||
|
|
- 差分結果エリアの右上に「Journal へ送る」ボタン
|
|||
|
|
- クリックで Posimai Journal(`https://posimai-journal.vercel.app`)を
|
|||
|
|
`?body=` パラメータ付きで別タブで開く
|
|||
|
|
(差分テキスト + 比較元タイトルを body に含める)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 3位: posimai-lens — Maps連携ボタン
|
|||
|
|
|
|||
|
|
**実装内容:**
|
|||
|
|
- EXIF に GPS 座標が含まれる場合、「Mapsで開く」ボタンを表示
|
|||
|
|
- クリックで `https://posimai-maps.vercel.app/?lat=XX&lng=YY&label=ファイル名` を別タブで開く
|
|||
|
|
- Maps 側が `?lat=&lng=&label=` を受け取ってピン表示できるか事前確認が必要
|
|||
|
|
(Maps の現コードを読んで対応の有無を確認してから実装する)
|
|||
|
|
- 撮影設定メモのお気に入り登録
|
|||
|
|
- 「この設定をお気に入りに追加」ボタン(localStorage: `posimai-lens-favorites`)
|
|||
|
|
- お気に入りビューで設定名 + F値/SS/ISO 一覧
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 4位: posimai-digest — Brainへ保存
|
|||
|
|
|
|||
|
|
**実装内容:**
|
|||
|
|
- 要約結果エリアの右下に「Brain に保存」ボタン
|
|||
|
|
- クリックで Synology Brain API に POST
|
|||
|
|
- エンドポイント: `POST /brain/api/articles`
|
|||
|
|
- body: `{ title: (元URLのタイトルor先頭40文字), content: 要約テキスト, url: 元URL, source: "digest" }`
|
|||
|
|
- API キーは既存の `posimai_api_key` を使用(localStorage から取得)
|
|||
|
|
- 保存成功時はトースト表示「Brain に保存しました」
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### 5位: posimai-clean — 現状維持
|
|||
|
|
|
|||
|
|
現時点では追加機能の優先度が低いため対応しない。
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 実装前に必ず確認すること(CLAUDE.md ルール抜粋・特に重要なもの)
|
|||
|
|
|
|||
|
|
1. **絵文字は一切使わない**(コード・HTML・コメント・トースト文言すべて)
|
|||
|
|
2. **lucide@latest を使わない** → `@0.344.0` 固定
|
|||
|
|
3. **アクセントカラーは `var(--accent)` を使う**。`#6EE7B7` のハードコード禁止
|
|||
|
|
4. **SW でクロスオリジン GET をキャッシュしない**(Brain API 等の外部 API は必ずネットワーク経由)
|
|||
|
|
5. **底面固定要素には `env(safe-area-inset-bottom)` を付ける**
|
|||
|
|
6. **外部リンクには `rel="noopener"` を付ける**(`target="_blank"` とセット)
|
|||
|
|
7. **デプロイは `npm run deploy`**(= `git push gitea main && git push github main`)
|
|||
|
|
`vercel --prod` は直接実行しない
|
|||
|
|
8. **デプロイ後は Dashboard Timeline に追記して Dashboard もデプロイする**(規模問わず必須)
|
|||
|
|
9. **`lucide.createIcons()` は早期 return の後に呼ばない**(アイコンが空になるバグ防止)
|
|||
|
|
|
|||
|
|
## デプロイ手順(毎回)
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
cd posimai-[app]
|
|||
|
|
git add .
|
|||
|
|
git commit -m "feat: ..."
|
|||
|
|
npm run deploy # git push gitea main && git push github main
|
|||
|
|
|
|||
|
|
# その後必ず Dashboard Timeline 更新
|
|||
|
|
cd ../posimai-dashboard
|
|||
|
|
# src/app/timeline/page.tsx の EVENTS 配列に追記
|
|||
|
|
git add src/app/timeline/page.tsx
|
|||
|
|
git commit -m "chore: update timeline"
|
|||
|
|
npm run deploy
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 各アプリの現状(2026-03-23 確認)
|
|||
|
|
|
|||
|
|
| アプリ | 現状 | Pulse/Brain API連携 |
|
|||
|
|
|--------|------|---------------------|
|
|||
|
|
| posimai-timer | ストップウォッチ + カウントダウン。履歴なし | なし |
|
|||
|
|
| posimai-diff | テキスト差分のみ。保存機能なし | なし |
|
|||
|
|
| posimai-lens | EXIF読み取り + 履歴。GPS表示あり(テキスト)| なし |
|
|||
|
|
| posimai-digest | Gemini API 要約 + 履歴。APIキー設定あり | なし |
|
|||
|
|
| posimai-clean | URLクリーン + 履歴 | なし |
|