プロジェクト

全般

プロフィール

機能 #103 » realtime_chat_monitoring.html

Redmine Admin, 2025-05-15 03:02

 
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>リアルタイム会話監視 - 講師AI分身管理システム</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: 'Hiragino Sans', 'ヒラギノ角ゴシック', 'Yu Gothic UI', 'Meiryo', sans-serif;
background-color: #f8f9fb;
color: #2c3e50;
}
.header {
background: linear-gradient(135deg, #4A90B2 0%, #5B9BC4 100%);
color: white;
padding: 1rem 2rem;
display: flex;
justify-content: space-between;
align-items: center;
box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}
.logo-section h1 {
font-size: 1.5rem;
font-weight: 600;
}
.container {
display: flex;
min-height: calc(100vh - 70px);
}
.sidebar {
width: 250px;
background: white;
box-shadow: 2px 0 10px rgba(0,0,0,0.05);
padding: 1.5rem 0;
}
.nav-item {
display: flex;
align-items: center;
padding: 1rem 1.5rem;
color: #5a6c7d;
text-decoration: none;
transition: all 0.3s ease;
border-left: 3px solid transparent;
}
.nav-item:hover {
background-color: #f1f3f4;
color: #4A90B2;
border-left-color: #4A90B2;
}
.nav-item.active {
background-color: #e3f2fd;
color: #4A90B2;
border-left-color: #4A90B2;
font-weight: 600;
}
.nav-icon {
margin-right: 0.75rem;
font-size: 1.2rem;
}
.main-content {
flex: 1;
padding: 2rem;
overflow-y: auto;
}
.page-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 2rem;
}
.page-title {
font-size: 2rem;
color: #2c3e50;
}
.refresh-btn {
background: #27AE60;
color: white;
padding: 0.75rem 1.5rem;
border: none;
border-radius: 8px;
font-weight: 600;
cursor: pointer;
transition: all 0.3s ease;
display: flex;
align-items: center;
gap: 0.5rem;
}
.refresh-btn:hover {
background: #219A52;
}
.chat-layout {
display: grid;
grid-template-columns: 1fr 400px;
gap: 1.5rem;
height: calc(100vh - 200px);
}
.chat-list {
background: white;
border-radius: 12px;
box-shadow: 0 2px 15px rgba(0,0,0,0.08);
overflow: hidden;
}
.chat-list-header {
padding: 1.5rem;
border-bottom: 1px solid #eee;
display: flex;
justify-content: space-between;
align-items: center;
}
.chat-list-title {
font-size: 1.2rem;
font-weight: 600;
color: #2c3e50;
}
.live-indicator {
display: flex;
align-items: center;
gap: 0.5rem;
color: #27AE60;
font-size: 0.9rem;
}
.pulse {
width: 8px;
height: 8px;
background: #27AE60;
border-radius: 50%;
animation: pulse 2s infinite;
}
@keyframes pulse {
0% { opacity: 1; }
50% { opacity: 0.5; }
100% { opacity: 1; }
}
.chat-items {
max-height: calc(100vh - 300px);
overflow-y: auto;
}
.chat-item {
padding: 1rem 1.5rem;
border-bottom: 1px solid #f1f1f1;
cursor: pointer;
transition: all 0.3s ease;
}
.chat-item:hover {
background-color: #f8f9fa;
}
.chat-item.active {
background-color: #e3f2fd;
border-left: 4px solid #4A90B2;
}
.chat-item-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 0.5rem;
}
.user-name {
font-weight: 600;
color: #2c3e50;
}
.chat-time {
font-size: 0.8rem;
color: #95a5a6;
}
.chat-preview {
font-size: 0.9rem;
color: #5a6c7d;
line-height: 1.4;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
overflow: hidden;
}
.chat-status {
display: flex;
align-items: center;
gap: 0.5rem;
margin-top: 0.5rem;
}
.status-badge {
padding: 0.25rem 0.5rem;
border-radius: 12px;
font-size: 0.75rem;
font-weight: 600;
}
.status-badge.ongoing {
background: #e8f5e9;
color: #27AE60;
}
.status-badge.needs-attention {
background: #fff3e0;
color: #F39C12;
}
.chat-detail {
background: white;
border-radius: 12px;
box-shadow: 0 2px 15px rgba(0,0,0,0.08);
display: flex;
flex-direction: column;
}
.chat-detail-header {
padding: 1.5rem;
border-bottom: 1px solid #eee;
display: flex;
justify-content: space-between;
align-items: center;
}
.chat-detail-title {
font-size: 1.1rem;
font-weight: 600;
color: #2c3e50;
}
.intervention-btn {
background: #E67E22;
color: white;
padding: 0.5rem 1rem;
border: none;
border-radius: 6px;
font-size: 0.9rem;
font-weight: 600;
cursor: pointer;
transition: all 0.3s ease;
}
.intervention-btn:hover {
background: #D35400;
}
.chat-messages {
flex: 1;
padding: 1rem;
overflow-y: auto;
max-height: 400px;
}
.message {
margin-bottom: 1.5rem;
}
.message-header {
display: flex;
align-items: center;
margin-bottom: 0.5rem;
}
.message-author {
font-weight: 600;
margin-right: 1rem;
}
.message-author.user {
color: #4A90B2;
}
.message-author.ai {
color: #27AE60;
}
.message-time {
font-size: 0.8rem;
color: #95a5a6;
}
.message-content {
background: #f8f9fb;
padding: 1rem;
border-radius: 8px;
line-height: 1.6;
}
.message.user .message-content {
background: #e3f2fd;
}
.message.ai .message-content {
background: #e8f5e9;
}
.chat-actions {
padding: 1rem;
border-top: 1px solid #eee;
display: flex;
gap: 1rem;
}
.quality-rating {
display: flex;
align-items: center;
gap: 0.5rem;
}
.rating-stars {
color: #F39C12;
}
.rating-score {
font-weight: 600;
color: #2c3e50;
}
.stats-row {
display: grid;
grid-template-columns: repeat(4, 1fr);
gap: 1rem;
margin-bottom: 1.5rem;
}
.stat-mini {
background: white;
padding: 1rem;
border-radius: 8px;
text-align: center;
box-shadow: 0 2px 10px rgba(0,0,0,0.05);
}
.stat-mini-value {
font-size: 1.5rem;
font-weight: 700;
color: #4A90B2;
}
.stat-mini-label {
font-size: 0.85rem;
color: #7f8c8d;
margin-top: 0.25rem;
}
@media (max-width: 1024px) {
.chat-layout {
grid-template-columns: 1fr;
grid-template-rows: auto 1fr;
}
.container {
flex-direction: column;
}
.sidebar {
width: 100%;
order: 2;
}
}
</style>
</head>
<body>
<header class="header">
<div class="logo-section">
<h1>🎨 講師AI分身管理システム</h1>
</div>
<div class="user-info">
<span>山田 美和子先生</span>
</div>
</header>

<div class="container">
<aside class="sidebar">
<nav>
<a href="#" class="nav-item">
<span class="nav-icon">📊</span>
ダッシュボード
</a>
<a href="#" class="nav-item active">
<span class="nav-icon">💬</span>
リアルタイム会話
</a>
<a href="#" class="nav-item">
<span class="nav-icon">📈</span>
分析・レポート
</a>
<a href="#" class="nav-item">
<span class="nav-icon">⚙️</span>
AI設定
</a>
<a href="#" class="nav-item">
<span class="nav-icon">📚</span>
知識ベース管理
</a>
<a href="#" class="nav-item">
<span class="nav-icon">👥</span>
受講者管理
</a>
<a href="#" class="nav-item">
<span class="nav-icon"></span>
FAQ管理
</a>
<a href="#" class="nav-item">
<span class="nav-icon">🔔</span>
通知・アラート
</a>
<a href="#" class="nav-item">
<span class="nav-icon">🔧</span>
システム設定
</a>
</nav>
</aside>

<main class="main-content">
<div class="page-header">
<h1 class="page-title">リアルタイム会話監視</h1>
<button class="refresh-btn">
<span>🔄</span>
自動更新中
</button>
</div>

<div class="stats-row">
<div class="stat-mini">
<div class="stat-mini-value">15</div>
<div class="stat-mini-label">アクティブユーザー</div>
</div>
<div class="stat-mini">
<div class="stat-mini-value">127</div>
<div class="stat-mini-label">今日の総質問数</div>
</div>
<div class="stat-mini">
<div class="stat-mini-value">4.8</div>
<div class="stat-mini-label">平均評価</div>
</div>
<div class="stat-mini">
<div class="stat-mini-value">1.2秒</div>
<div class="stat-mini-label">平均回答時間</div>
</div>
</div>

<div class="chat-layout">
<div class="chat-list">
<div class="chat-list-header">
<div class="chat-list-title">進行中の会話</div>
<div class="live-indicator">
<div class="pulse"></div>
<span>リアルタイム更新中</span>
</div>
</div>
<div class="chat-items">
<div class="chat-item active">
<div class="chat-item-header">
<div class="user-name">田中 由香里</div>
<div class="chat-time">3分前</div>
</div>
<div class="chat-preview">
リビングの照明配置について相談があります。天井照明だけだと暗い感じがして...
</div>
<div class="chat-status">
<div class="status-badge ongoing">進行中</div>
<div class="quality-rating">
<span class="rating-stars">⭐⭐⭐⭐⭐</span>
<span class="rating-score">5.0</span>
</div>
</div>
</div>

<div class="chat-item">
<div class="chat-item-header">
<div class="user-name">佐藤 健一</div>
<div class="chat-time">8分前</div>
</div>
<div class="chat-preview">
北欧風のインテリアにしたいのですが、予算が限られています。まず何から...
</div>
<div class="chat-status">
<div class="status-badge ongoing">進行中</div>
<div class="quality-rating">
<span class="rating-stars">⭐⭐⭐⭐</span>
<span class="rating-score">4.5</span>
</div>
</div>
</div>

<div class="chat-item">
<div class="chat-item-header">
<div class="user-name">鈴木 真理子</div>
<div class="chat-time">12分前</div>
</div>
<div class="chat-preview">
子供部屋の収納について相談したいです。おもちゃが散らかりがちで...
</div>
<div class="chat-status">
<div class="status-badge needs-attention">要確認</div>
<div class="quality-rating">
<span class="rating-stars">⭐⭐⭐</span>
<span class="rating-score">3.2</span>
</div>
</div>
</div>

<div class="chat-item">
<div class="chat-item-header">
<div class="user-name">山田 正明</div>
<div class="chat-time">25分前</div>
</div>
<div class="chat-preview">
キッチンのアイランド設置を検討中です。メリット・デメリットを教えて...
</div>
<div class="chat-status">
<div class="status-badge ongoing">進行中</div>
<div class="quality-rating">
<span class="rating-stars">⭐⭐⭐⭐⭐</span>
<span class="rating-score">4.9</span>
</div>
</div>
</div>
</div>
</div>

<div class="chat-detail">
<div class="chat-detail-header">
<div class="chat-detail-title">田中 由香里さんとの会話</div>
<button class="intervention-btn">介入する</button>
</div>
<div class="chat-messages">
<div class="message user">
<div class="message-header">
<div class="message-author user">田中 由香里</div>
<div class="message-time">15:34</div>
</div>
<div class="message-content">
リビングの照明配置について相談があります。天井照明だけだと暗い感じがして、読書をするときに困っています。どのように改善したらよいでしょうか?
</div>
</div>

<div class="message ai">
<div class="message-header">
<div class="message-author ai">AI講師(山田先生)</div>
<div class="message-time">15:34</div>
</div>
<div class="message-content">
田中さん、お疲れ様です!照明のお悩み、とてもよく分かります。リビングの照明は重要ですよね。<br><br>
読書をされるということでしたら、以下のポイントをお勧めします:<br><br>
1. <strong>層状照明</strong>を取り入れましょう<br>
- 全体照明(シーリングライト)+ 部分照明(スタンドライト)<br>
- 間接照明で温かみのある空間を演出<br><br>
2. <strong>読書専用の照明</strong>を設置<br>
- レッシングライトやテーブルランプ<br>
- 手元を明るく照らせる調光可能なもの<br><br>
具体的にどの場所で読書をされることが多いでしょうか?
</div>
</div>

<div class="message user">
<div class="message-header">
<div class="message-author user">田中 由香里</div>
<div class="message-time">15:37</div>
</div>
<div class="message-content">
ありがとうございます!主にソファで読書をします。ソファは壁際に置いてあります。
</div>
</div>

<div class="message ai">
<div class="message-header">
<div class="message-author ai">AI講師(山田先生)</div>
<div class="message-time">15:37</div>
</div>
<div class="message-content">
ソファでの読書でしたら、以下のようなアプローチがおすすめです:<br><br>
<strong>1. フロアスタンドライト</strong><br>
- ソファの後ろまたは横に配置<br>
- 高さ130-150cm程度で、光が肩越しに落ちるタイプ<br><br>
<strong>2. ウォールライト</strong><br>
- 壁に取り付けるタイプ<br>
- 可動式アームで角度調整可能なもの<br><br>
色温度は「昼白色」(5000K程度)が読書には適しています。目の疲れも軽減できますよ。<br><br>
ご予算の範囲はおありでしょうか?
</div>
</div>
</div>
<div class="chat-actions">
<div class="quality-rating">
<span>回答品質:</span>
<span class="rating-stars">⭐⭐⭐⭐⭐</span>
<span class="rating-score">5.0/5.0</span>
</div>
</div>
</div>
</div>
</main>
</div>
</body>
</html>
(2-2/6)