gitcat
1{{define "content"}}
2{{template "adminnav" (dict "Tab" "dash")}}
3<div class="pagehead">
4 <h1>管理后台</h1>
5 <p class="muted">用户、项目、AI 接入与站点设置都在这里管理。</p>
6</div>
7
8<div class="stat-cards">
9 <div class="card stat-card"><strong>{{num .Data.StatUsers}}</strong><span>位成员</span><a href="/admin/users">管理用户 →</a></div>
10 <div class="card stat-card"><strong>{{num .Data.StatRepos}}</strong><span>个项目</span><a href="/admin/repos">管理项目 →</a></div>
11 <div class="card stat-card"><strong>{{num .Data.StatPushes}}</strong><span>次推送留痕</span><a href="/admin/activity">查看动态 →</a></div>
12 <div class="card stat-card"><strong>{{.Data.StorageText}}</strong><span>仓库占用</span><span class="muted small">{{.Data.RepoRoot}}</span></div>
13</div>
14
15<div class="split">
16 <div class="col-main">
17 <div class="card">
18 <h3 class="card-title">最近推送</h3>
19 {{if .Data.RecentPushes}}
20 <ul class="activitylist">
21 {{range .Data.RecentPushes}}
22 <li>
23 {{template "avin" (dict "N" .ActorDisplay "S" 28)}}
24 <div>
25 <div><strong>{{.ActorDisplay}}</strong> <span class="muted">→</span> <a class="quiet" href="/{{.RepoName}}">{{.RepoName}}</a> <code class="ref">{{.Ref}}</code></div>
26 <div class="muted small">{{timeago .CreatedAt}}{{if .WhatsNew}} · {{oneline .WhatsNew}}{{end}}</div>
27 </div>
28 </li>
29 {{end}}
30 </ul>
31 {{else}}<p class="muted">还没有推送记录。</p>{{end}}
32 </div>
33
34 <div class="card">
35 <h3 class="card-title">最新成员</h3>
36 {{if .Data.RecentUsers}}
37 <ul class="activitylist">
38 {{range .Data.RecentUsers}}
39 <li>
40 {{template "av" (dict "U" . "S" 28)}}
41 <div>
42 <div><a class="quiet" href="/admin/users/{{.ID}}">{{.Display}}</a> <span class="muted">@{{.Username}}</span> {{if .IsAdmin}}<span class="tag tag-ok">管理员</span>{{end}}{{if .IsDisabled}}<span class="tag tag-warn">已停用</span>{{end}}</div>
43 <div class="muted small">{{date .CreatedAt}} 创建 · {{.PushCount}} 次推送</div>
44 </div>
45 </li>
46 {{end}}
47 </ul>
48 {{else}}<p class="muted">还没有用户。</p>{{end}}
49 <a class="btn btn-ghost" href="/admin/users">新建用户</a>
50 </div>
51 </div>
52
53 <aside class="col-side">
54 <div class="card about">
55 <h3>AI 接入状态</h3>
56 {{if .Data.AIReady}}
57 <p><span class="tag tag-ok">已就绪</span></p>
58 <p class="muted small">模型:<code class="csha">{{.Data.AIModel}}</code></p>
59 <p class="muted small">每次推送后会自动生成「What's New」更新说明。</p>
60 {{else}}
61 <p><span class="tag tag-warn">{{if .Data.AIEnabled}}配置不完整{{else}}未启用{{end}}</span></p>
62 <p class="muted small">配置 OpenAI 兼容接口后,推送会自动生成访客可读的更新说明。</p>
63 {{end}}
64 <a class="btn btn-ghost btn-block" href="/admin/ai">配置 AI 接入</a>
65 </div>
66 <div class="card about">
67 <h3>运行信息</h3>
68 <ul class="kv">
69 <li><span>运行环境</span><code class="csha">{{.Data.GoVersion}}</code></li>
70 <li><span>git 版本</span><code class="csha">{{.Data.GitVersion}}</code></li>
71 <li><span>数据目录</span><code class="csha">{{.Data.DataDir}}</code></li>
72 </ul>
73 </div>
74 </aside>
75</div>
76{{end}}