@model AiChatModel
@inject IConfiguration Configuration
@{
Layout = null;
}
<!DOCTYPE html>
<html lang="zh-CN" data-theme="light">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AI 助手 - 叫我阿胖</title>
<link rel="stylesheet" href="~/css/chat.css" asp-append-version="true"/>
<link href="@Configuration["CDNBaseAddress"]/css/version_2_0/markdown_version_2_0.css" rel="stylesheet"/>
<!-- Highlight.js 样式 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/styles/github.min.css"
id="highlight-light-theme">
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/styles/github-dark.min.css"
id="highlight-dark-theme" disabled>
<script src="@Configuration["CDNBaseAddress"]/lib/signalr/signalr.js?version=6.0.5"></script>
<!-- Markdown & 安全处理库 -->
<script src="https://cdn.jsdelivr.net/npm/marked@12.0.1/marked.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/dompurify@3.0.6/dist/purify.min.js"></script>
<!-- Highlight.js -->
<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.9.0/build/highlight.min.js"></script>
</head>
<body>
<!-- 模态框容器 -->
<div class="modal-overlay" id="modalOverlay">
<div class="modal-container">
<div class="modal-header">
<h3 class="modal-title" id="modalTitle">提示</h3>
<button type="button" class="modal-close" id="modalClose" title="关闭">×</button>
</div>
<div class="modal-body" id="modalBody">
<p id="modalMessage">这是一条消息</p>
</div>
<div class="modal-footer" id="modalFooter">
<button type="button" class="modal-btn modal-btn-cancel" id="modalCancel">取消</button>
<button type="button" class="modal-btn modal-btn-confirm" id="modalConfirm">确定</button>
</div>
</div>
</div>
<!-- 会话侧边栏遮罩层(仅移动端) -->
<div class="sidebar-overlay" id="sidebarOverlay"></div>
<div class="chat-container">
<!-- 左侧会话列表 -->
<div class="session-sidebar" id="sessionSidebar">
<div class="session-header">
<h2>💬 会话列表</h2>
<button class="btn-new-session" id="btnNewSession" title="新建会话">+</button>
</div>
<div class="session-list" id="sessionList">
@if (Model.Sessions.Count == 0)
{
<div class="session-item active" data-session-id="" data-is-new-session="true">
<div class="session-info">
<div class="session-name" title="新建会话">新建会话...</div>
<div class="session-meta">
<span class="session-time">@DateTime.Now.ToString("MM-dd HH:mm")</span>
<span class="session-count">0 条</span>
</div>
</div>
</div>
}
@foreach (var session in Model.Sessions)
{
<div class="session-item @(session.SessionId == Model.DefaultSessionId ? "active" : "")"
data-session-id="@session.SessionId">
<div class="session-info">
<div class="session-name" title="@session.SessionName">@session.SessionName</div>
<div class="session-meta">
<span class="session-time">@session.LastUpdateTime.ToString("MM-dd HH:mm")</span>
<span class="session-count">@session.MessageCount 条</span>
</div>
</div>
<button class="btn-delete-session" data-session-id="@session.SessionId" title="删除会话">🗑️</button>
</div>
}
</div>
</div>
<!-- 右侧聊天区域 -->
<div class="chat-main" id="chatMain">
@{
var chatMessageModel = new AiChatMessageModel(Model.DefaultSessionId, Model.ModelType, Model.DefaultRecords);
}
<partial name="_ChatMessages" model="chatMessageModel"/>
</div>
</div>
<script src="~/js/chat.js" asp-append-version="true"></script>
</body>
</html>