feat: M0-M2 骨架落地(服务端/前端/宿主/数据库/积分引擎)

- server: Go 单二进制骨架,embed 内嵌前端,配置/迁移/HTTP 路由
- store: system.db + event.db 两套迁移,业务表 + 种子数据
- domain: 积分引擎(并列三口径/计分通道/流水/排名/破纪录)+ 68 个测试
- web: Vite + Vue 三入口骨架 + shared 层(类型/API/WebSocket 客户端)
- console: Electron 宿主骨架(选屏/防熄屏/进程守护/托盘)
This commit is contained in:
AskaEth committed 2026-09-09 18:36:40 +08:00
1 parent a61d793d79
commit 7d5d94f815
76 files changed
+10131

No files matched your search

+69
View File
@@ -0,0 +1,69 @@
<script setup lang="ts">
const entries = [
{ path: '/display', title: '实时积分大屏', desc: '只读、无人值守;成绩发布后 1 秒内更新' },
{ path: '/admin', title: '管理面板', desc: '录入、发布成绩,控制大屏' },
]
</script>
<template>
<main class="nav">
<h1>赛事积分榜系统</h1>
<div class="cards">
<a v-for="e in entries" :key="e.path" class="card" :href="e.path">
<span class="title">{{ e.title }}</span>
<span class="desc">{{ e.desc }}</span>
<code>{{ e.path }}</code>
</a>
</div>
</main>
</template>
<style scoped>
.nav {
min-height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 40px;
padding: 48px;
}
h1 {
font-size: 32px;
letter-spacing: 2px;
}
.cards {
display: flex;
gap: 24px;
flex-wrap: wrap;
justify-content: center;
}
.card {
width: 320px;
padding: 28px 32px;
border-radius: 16px;
background: var(--panel);
border: 2px solid var(--panel-border);
display: flex;
flex-direction: column;
gap: 10px;
transition: border-color 0.2s ease;
}
.card:hover {
border-color: var(--cyan);
}
.title {
font-size: 22px;
font-weight: 700;
color: var(--gold);
}
.desc {
font-size: 14px;
color: var(--text-dim);
line-height: 1.6;
}
code {
font-size: 13px;
color: var(--cyan);
}
</style>
+5
View File
@@ -0,0 +1,5 @@
import { createApp } from 'vue'
import App from './App.vue'
import '@/shared/styles/base.css'
createApp(App).mount('#app')