操作
機能 #192
未完了AIアシスタント機能拡張 - URL文脈連携とRedmine全文検索統合
開始日:
2025-06-04
期日:
進捗率:
0%
予定工数:
説明
機能拡張要望¶
対象機能: AIアシスタント(吹き出しマーク)
現在の状況: 基本的なClaude AI会話機能のみ
要望内容: コンテキスト情報連携とRedmine全文検索機能の統合
拡張要望詳細¶
1. URL文脈情報の自動引き継ぎ¶
動作仕様:
- AIアシスタント呼び出し時に現在のページURL情報を取得
- ページコンテンツを文脈情報として Claude に送信
- ページ固有の質問に対して適切な回答を提供
実装例:
// AIアシスタント呼び出し時
const contextData = {
currentUrl: window.location.href,
pageTitle: document.title,
pageContent: extractPageContent(), // ページの主要コンテンツ抽出
redmineData: getCurrentRedmineData() // Redmine固有データ
};
// Claude APIに送信
const systemPrompt = `
現在のページ情報:
URL: ${contextData.currentUrl}
タイトル: ${contextData.pageTitle}
コンテンツ: ${contextData.pageContent}
このページに関する質問に答えてください。
`;
2. Redmine全文検索統合¶
検索対象:
- ✅ チケット: 件名、説明、コメント
- ✅ プロジェクト: 名前、説明
- ✅ ドキュメント: タイトル、内容、添付ファイル
- ✅ ニュース: タイトル、内容、概要
- ✅ Wiki: ページ内容(存在する場合)
- ✅ ユーザー: 名前、メール(権限に応じて)
API実装仕様:
# 統合検索API
GET /api/search.json?q={query}&scope=all
GET /api/search.json?q={query}&scope=issues
GET /api/search.json?q={query}&scope=documents
GET /api/search.json?q={query}&scope=news
3. AIアシスタント統合UI¶
フロー設計:
1. ユーザーがAIアシスタント呼び出し
↓
2. 現在ページの文脈情報を自動収集
↓
3. ユーザーの質問を受信
↓
4. 関連するRedmineデータを全文検索
↓
5. 文脈 + 検索結果 + 質問をClaudeに送信
↓
6. Redmine情報に基づいた回答を表示
UI改善案:
const AIAssistant = () => {
return (
<div className="ai-assistant-panel">
{/* 文脈情報表示 */}
<div className="context-info">
<span>📍 現在のページ: {currentPageTitle}</span>
<span>🔍 Redmine検索: 有効</span>
</div>
{/* 会話エリア */}
<div className="chat-area">
{messages.map(message => (
<div key={message.id} className="message">
{message.content}
{/* 検索結果の表示 */}
{message.searchResults && (
<SearchResultsPreview results={message.searchResults} />
)}
</div>
))}
</div>
{/* 入力エリア */}
<div className="input-area">
<input placeholder="Redmineについて質問してください..." />
<button>送信</button>
</div>
</div>
);
};
具体的な使用例¶
ケース1: チケット詳細ページでの質問¶
ページ: /redmine-ui/tickets/184
ユーザー: "このチケットの関連チケットを教えて"
AI: "チケット#184に関連して、以下のチケットが見つかりました:
- #185: 同じnginx設定に関する課題
- #186: 関連するAPI問題
現在のチケットは502エラーの修正で、これらと技術的に関連しています。"
ケース2: プロジェクト一覧での質問¶
ページ: /redmine-ui/projects
ユーザー: "VPSセキュリティプロジェクトの進捗状況は?"
AI: "VPSセキュリティプロジェクトの状況:
- オープンチケット: 3件
- 最新の活動: チケット#180 (DNS MXレコード問題)
- 担当者: Redmine Admin
主な課題はnews.sharelab.jpのメール送信問題の解決です。"
ケース3: 全般的な検索質問¶
ユーザー: "nginx設定に関する問題を教えて"
AI: "nginx設定に関する以下の情報が見つかりました:
[チケット検索結果]
- #184: task.call2arm.com nginx設定修正
- #185: プロキシ設定の問題
[ドキュメント検索結果]
- nginx設定マニュアル
[ニュース検索結果]
- サーバー設定変更のお知らせ"
技術実装要件¶
1. バックエンドAPI¶
// 統合検索エンドポイント
app.get('/api/ai/search', async (req, res) => {
const { query, context } = req.query;
const searchResults = await Promise.all([
searchIssues(query),
searchDocuments(query),
searchNews(query),
searchProjects(query)
]);
res.json({
context,
searchResults: mergeAndRankResults(searchResults)
});
});
2. フロントエンド実装¶
// ページ文脈の取得
const getPageContext = () => {
const url = window.location.href;
const title = document.title;
// Redmine特有のデータ抽出
if (url.includes('/tickets/')) {
return extractTicketContext();
} else if (url.includes('/projects/')) {
return extractProjectContext();
}
// ... 他のページタイプ
};
// AI質問時の処理
const askAI = async (question) => {
const context = getPageContext();
const searchResults = await searchRedmine(question);
const response = await claudeAPI({
context,
searchResults,
question
});
return response;
};
期待効果¶
- 生産性向上: Redmine情報への素早いアクセス
- 知識共有: 過去のチケット・ドキュメントの活用
- 意思決定支援: 関連情報に基づいた判断
- 学習効率: 新メンバーのRedmine理解促進
優先度¶
- 緊急度: 中(機能拡張・UX向上)
- 重要度: 高(AI統合による業務効率化)
関連チケット¶
表示するデータがありません
操作