# Promo Project Tracker

プロモーション施策のプロジェクト管理ツール

## 概要

新商品のプロモーションを行う際のプロジェクトを管理するためのWebアプリケーションです。

**Note**: This application supports both SQLite (for quick start) and MySQL (for production with advanced features).
- **SQLite version**: `server.js` - Quick start, no setup required
- **MySQL version**: `server-mysql.js` - Production-ready with hierarchical projects/tasks and Gantt chart

See `MYSQL_SETUP.md` for MySQL configuration and migration instructions.

### 主な機能

- **プロジェクト管理**: プロモーション施策をプロジェクトとして管理
- **階層構造**: プロジェクトが子プロジェクトを保持、タスクがサブタスクを保持 (MySQL版)
- **フェーズ管理**: 4つのフェーズ（戦略・準備、クリエイティブ制作、実施・運用、振り返り）でタスクを整理
- **下書き機能**: プロジェクト開始前に下書きとして保存可能
- **施策テンプレート**: 施策ごとにデフォルトのタスクと予算を設定
- **予算管理**: 予算執行状況をリアルタイムで確認
- **計測データ統合**: GA4などの計測ツールの結果を記録
- **振り返り機能**: KPT形式での振り返りを記録
- **ガントチャート**: プロジェクト進行を視覚的に確認 (MySQL版)
- **AI資料作成**: Gemini APIを使用した資料作成とバッチ処理による自動ファイル生成
- **AI自動記事生成**: 隠し機能。以下のパスに直接アクセスするとテーマを設定可能。サイトURLなどはDB設定
```
/projects/{プロジェクトID}/article-themes
insert into article_wordpress_sites (id, project_id, site_name, site_url, api_url, username, application_password) values (UUID(),'your-project-id','site-name','your-site-url','/wp-json/wp/v2','your-user-id','user-password')
 

## セットアップ

### 必要な環境

- Node.js 16以上
- npm

### インストール

1. リポジトリをクローン
```bash
git clone [repository-url]
cd promo-project-tracker
```

2. サーバー側のセットアップ
```bash
cd server
npm install
```

3. クライアント側のセットアップ
```bash
cd ../client
npm install
```

### 起動方法

#### Option 1: SQLite Version (Quick Start)

1. サーバーを起動（別のターミナルで）
```bash
cd server
npm run dev
```

2. クライアントを起動
```bash
cd client
npm run dev
```

3. ブラウザで `http://localhost:5173` にアクセス

#### Option 2: MySQL Version (Production with Advanced Features)

1. MySQLをセットアップ (詳細は `MYSQL_SETUP.md` を参照)
```bash
cd server
# Edit .env file with your MySQL credentials
npm run migrate
```

2. MySQLサーバーを起動
```bash
cd server
node server-mysql.js
```

3. クライアントを起動
```bash
cd client
npm run dev
```

4. ブラウザで `http://localhost:5173` にアクセス

### バッチ処理について

AI資料作成機能では、Gemini APIで生成したスライドデータをMAJIN APIでファイル化するバッチ処理が自動的に実行されます。

#### 設定方法

**1. マイグレーションの実行**

バッチ処理を使用するには、まずデータベースのマイグレーションを実行する必要があります。

```bash
cd server
npm run migrate
```

このマイグレーションにより、`ai_document_files`テーブルに以下のカラムが追加されます：
- `gemini_response_json`: Gemini APIのレスポンスJSONを保存
- `file_creation_status`: ファイル作成ステータス（pending/in_progress/completed/failed）
- `majin_response`: MAJIN APIのレスポンス
- `settings`: スライド設定
- `error_message`: エラーメッセージ

**2. 環境変数の設定**

`server/.env`ファイルに以下の環境変数を追加してください：

```env
# AI資料作成に必要なAPIキー
GEMINI_API_KEY=your_gemini_api_key_here

# MAJIN APIのエンドポイントURL（バッチ処理で使用）
MAJIN_URL=https://your-majin-api-endpoint.com/api/create

**3. サーバーの再起動**

環境変数を設定した後、サーバーを再起動してください。
サーバー起動時に以下のメッセージが表示されれば、バッチ処理が正常に開始されています：
```
Batch processing started (runs every 5 minutes)
```

#### 動作仕様

- サーバー起動時に自動的にバッチ処理が開始されます
- 5分ごとに未実施のファイル作成リクエストを処理します
- サーバー起動後10秒後に初回実行されます

#### バッチ処理の動作フロー

1. `file_creation_status = 'pending'`のレコードを取得（最大10件まで）
2. 各レコードについて：
   - ステータスを`in_progress`に更新
   - `gemini_response_json`と`settings`を使用してMAJIN APIを呼び出し
   - レスポンスからGoogle DocsのURLを抽出
   - `file_url`をDBに保存し、ステータスを`completed`に更新
   - エラーが発生した場合は、ステータスを`failed`に更新し、`error_message`を記録

#### 注意事項

- バッチ処理はサーバーが起動している間のみ動作します
- `MAJIN_URL`が設定されていない場合、バッチ処理はスキップされます（エラーにはなりません）
- `GEMINI_API_KEY`はAI資料作成ページでスライドデータを生成する際に必要です
- サーバーのログでバッチ処理の実行状況を確認できます
  - 正常な場合: `Processing X pending file creation(s)...`
  - 完了時: `File creation completed for [file_id]: [file_url]`
  - エラー時: `Error processing file [file_id]: [error_message]`

## 使い方

### プロジェクトの作成

1. 「新規プロジェクト」ボタンをクリック
2. 施策テンプレートを選択
3. プロジェクト情報を入力（KGI、KPI、ターゲット等）
4. 「下書き保存」または「プロジェクト開始」を選択

### タスク管理

1. プロジェクトを開く
2. 「タスク管理」タブで各フェーズのタスクを確認
3. タスクをクリックしてステータスを変更
4. 編集ボタンで詳細情報を入力（予算、実績、担当者等）

### 計測データの記録

1. プロジェクト詳細画面で「計測データ」タブを開く
2. 「データ追加」ボタンをクリック
3. GA4などのツールからのデータを入力

### 振り返り

1. プロジェクト詳細画面で「振り返り」タブを開く
2. KPT形式（Keep/Problem/Try）で振り返りを記入
3. 保存して次回のプロジェクトに活用

## 技術スタック

### フロントエンド
- React 18
- React Router
- Lucide React (アイコン)
- Vite (ビルドツール)

### バックエンド
- Node.js
- Express
- SQLite3 (Quick start version)
- MySQL2 (Production version)
- CORS

## ライセンス

ITBC Inc.
