This commit is contained in:
loveuer
2025-07-27 22:45:52 +08:00
commit c01b2bc327
16 changed files with 6303 additions and 0 deletions

8
.gitignore vendored Normal file
View File

@ -0,0 +1,8 @@
node_modules
.DS_Store
dist
*.local
.vite-inspect
.remote-assets
components.d.ts
.idea

3
.npmrc Normal file
View File

@ -0,0 +1,3 @@
# for pnpm
shamefully-hoist=true
auto-install-peers=true

11
README.md Normal file
View File

@ -0,0 +1,11 @@
# Welcome to [Slidev](https://github.com/slidevjs/slidev)!
To start the slide show:
- `pnpm install`
- `pnpm dev`
- visit <http://localhost:3030>
Edit the [slides.md](./slides.md) to see the changes.
Learn more about Slidev at the [documentation](https://sli.dev/).

37
components/Counter.vue Normal file
View File

@ -0,0 +1,37 @@
<script setup lang="ts">
import { ref } from 'vue'
const props = defineProps({
count: {
default: 0,
},
})
const counter = ref(props.count)
</script>
<template>
<div flex="~" w="min" border="~ main rounded-md">
<button
border="r main"
p="2"
font="mono"
outline="!none"
hover:bg="gray-400 opacity-20"
@click="counter -= 1"
>
-
</button>
<span m="auto" p="2">{{ counter }}</span>
<button
border="l main"
p="2"
font="mono"
outline="!none"
hover:bg="gray-400 opacity-20"
@click="counter += 1"
>
+
</button>
</div>
</template>

16
netlify.toml Normal file
View File

@ -0,0 +1,16 @@
[build]
publish = "dist"
command = "npm run build"
[build.environment]
NODE_VERSION = "20"
[[redirects]]
from = "/.well-known/*"
to = "/.well-known/:splat"
status = 200
[[redirects]]
from = "/*"
to = "/index.html"
status = 200

16
package.json Normal file
View File

@ -0,0 +1,16 @@
{
"name": "structure-and-design",
"type": "module",
"private": true,
"scripts": {
"build": "slidev build",
"dev": "slidev --open",
"export": "slidev export"
},
"dependencies": {
"@slidev/cli": "^52.1.0",
"@slidev/theme-default": "latest",
"@slidev/theme-seriph": "latest",
"vue": "^3.5.18"
}
}

5874
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

331
slides.md Normal file
View File

@ -0,0 +1,331 @@
---
# You can also start simply with 'default'
theme: seriph
# random image from a curated Unsplash collection by Anthony
# like them? see https://unsplash.com/collections/94734566/slidev
background: https://cover.sli.dev
# some information about your slides (markdown enabled)
title: Welcome to Slidev
info: |
## Slidev Starter Template
Presentation slides for developers.
Learn more at [Sli.dev](https://sli.dev)
# apply unocss classes to the current slide
class: text-center
# https://sli.dev/features/drawing
drawings:
persist: false
# slide transition: https://sli.dev/guide/animations.html#slide-transitions
transition: slide-left
# enable MDC Syntax: https://sli.dev/features/mdc
mdc: true
# open graph
seoMeta:
# By default, Slidev will use ./og-image.png if it exists,
# or generate one from the first slide if not found.
ogImage: auto
# ogImage: https://cover.sli.dev
---
## Hybirdscope V3 数据结构和后端设计
<div @click="$slidev.nav.next" class="mt-12 py-1" hover:bg="white op-10">Start<carbon:arrow-right />
</div>
---
transition: slide-left
---
## 斗胆抛砖引玉
<br>
<v-click>
各位都是各个方面的大神, 我也是斗胆在这里给大家讲一下后续后端重构的设计思路和数据结构设计思路
<br>
后续在数据对接上大家更加方便, 效率也更高!
<br>
如果有不太对的地方也希望大家帮我指证出来, 改进和共同进步!!!
</v-click>
<v-click>
<h4 style="margin-top: 1rem">📝 数据结构需要结合业务来设计 </h4>
</v-click>
<v-click>
<h4>🎨 那么我们的主要业务是啥呢? 安全域!!!</h4>
</v-click>
<v-click>
<h4>🧑‍💻 既然有了安全域, 安全域为谁服务呢? 用户!!!</h4>
</v-click>
<v-click>
<h4>🤹 安全域为用户服务什么呢? 资源(配置)!!!</h4>
</v-click>
<v-click>
<h4>🎥 其实到这里就已经显而易见了, 我们的数据模型就 3 点</h4>
</v-click>
<v-click>
<h4>📤 资源(配置) <-> 安全域 <-> 用户</h4>
</v-click>
<style>
h1 {
background-color: #2B90B6;
background-image: linear-gradient(45deg, #4EC5D4 10%, #146b8c 20%);
background-size: 100%;
-webkit-background-clip: text;
-moz-background-clip: text;
-webkit-text-fill-color: transparent;
-moz-text-fill-color: transparent;
}
</style>
---
transition: slide-left
level: 2
---
# 它们之间的关系
<div style="display: flex;justify-content: center;align-items: center; height: 100%;margin-top: -4rem; flex-direction: column;">
```mermaid {theme: 'neutral', scale: 1}
flowchart LR
资源配置 <--> 安全域 <--> 用户
```
<br>
<v-click>
真要这么简单, 我也不用专门让大家来一起过一下这个事情
</v-click>
<br>
<v-click>
我们先来看看安全域和用户之间的关系
</v-click>
</div>
---
transition: slide-left
level: 2
---
<style>
div {
display: flex;
justify-content: center;align-items: center;
flex-direction: column;
}
h1 {
background-color: #2B90B6;
background-size: 100%;
-webkit-background-clip: text;
-moz-background-clip: text;
-webkit-text-fill-color: transparent;
-moz-text-fill-color: transparent;
}
img {
height: 70%;
}
h3 {
color: #2B90B6;
}
</style>
# 安全域 <-> 用户
<div>
<img height="500" src="./static/01.png">
<v-click>
### 这里其实很清晰, 用户关联安全域, 但是不是关联 x用户, y部门到安全域A
### 而是关联 用户x, 部门y 到安全域A 的用户组 a
</v-click>
</div>
---
transition: slide-left
level: 2
---
<style>
div {
display: flex;
justify-content: center;align-items: center;
flex-direction: column;
}
h1 {
background-color: #2B90B6;
background-size: 100%;
-webkit-background-clip: text;
-moz-background-clip: text;
-webkit-text-fill-color: transparent;
-moz-text-fill-color: transparent;
}
img {
height: 80%;
}
h3 {
color: #2B90B6;
}
</style>
<br>
# 资源/配置 <-> 安全域
<div v-click>
<img height="500" src="./static/02.png">
</div>
---
transition: slide-left
level: 2
---
<style>
h1 {
background-color: #2B90B6;
background-size: 100%;
-webkit-background-clip: text;
-moz-background-clip: text;
-webkit-text-fill-color: transparent;
-moz-text-fill-color: transparent;
}
.img03 {
height: 80%;
}
.img03 img {
width: auto;
}
</style>
<br>
# 资源/配置 <-> 安全域 <-> 用户
<div v-click class="img03">
<img src="./static/03.png">
</div>
---
transition: slide-left
level: 2
---
<style>
h1 {
background-color: #2B90B6;
background-size: 100%;
-webkit-background-clip: text;
-moz-background-clip: text;
-webkit-text-fill-color: transparent;
-moz-text-fill-color: transparent;
}
.img04 {
height: 100%;
width: 100%;
scale: 1.5;
}
</style>
# 资源/配置 <-> 安全域 <-> 用户
<div v-click class="img04">
<img src="./static/04.png">
</div>
---
transition: slide-left
level: 2
---
<style>
h1 {
background-color: #2B90B6;
background-size: 100%;
-webkit-background-clip: text;
-moz-background-clip: text;
-webkit-text-fill-color: transparent;
-moz-text-fill-color: transparent;
}
.img05 {
height: 100%;
width: 100%;
scale: 1.3;
display: flex;
flex-direction: row;
}
.img06 {
height: 100%;
}
</style>
# 关联表设计
<div class="img05">
<img src="./static/05.png">
<div v-click class="img06">
<img src="./static/06.png">
</div>
</div>
---
transition: slide-left
level: 2
---
<style>
div {
display: flex;
justify-content: center;align-items: center;
flex-direction: column;
}
h1 {
background-color: #2B90B6;
background-size: 100%;
-webkit-background-clip: text;
-moz-background-clip: text;
-webkit-text-fill-color: transparent;
-moz-text-fill-color: transparent;
}
</style>
# 资源表
<div>
<img height="500" src="./static/07.png">
<div v-click>
```json
{
"config-xx": 1753627188924,
"config-yy": 1753627188924,
"resource-a1": 1753627188924,
"resource-b1": 1753627188924,
"resource-c1": 1753627188924,
"resource-d1": 1753627188924
}
```
</div>
</div>
---
# 谢谢!!!

BIN
static/01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 241 KiB

BIN
static/02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 274 KiB

BIN
static/03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 453 KiB

BIN
static/04.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 473 KiB

BIN
static/05.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

BIN
static/06.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 KiB

BIN
static/07.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

7
vercel.json Normal file
View File

@ -0,0 +1,7 @@
{
"rewrites": [
{ "source": "/(.*)", "destination": "/index.html" }
],
"buildCommand": "npm run build",
"outputDirectory": "dist"
}