rebrand: PropDataGuard → DataPointer

- App name: PropDataGuard → DataPointer
- Frontend title: 财险数据分级分类平台 → 数据分类分级管理平台
- LocalStorage keys: pdg_token/pdg_refresh → dp_token/dp_refresh
- Package name: prop-data-guard-frontend → data-pointer-frontend
- Project config: admin@propdataguard.comadmin@datapo.com
- Celery app name: prop_data_guard → data_pointer
- Layout logo, login title, page title all updated
This commit is contained in:
hiderfong
2026-04-23 11:26:28 +08:00
parent dd49c9679d
commit 9d38180745
12 changed files with 23 additions and 23 deletions
+2 -2
View File
@@ -3,7 +3,7 @@ from typing import List
class Settings(BaseSettings): class Settings(BaseSettings):
PROJECT_NAME: str = "PropDataGuard" PROJECT_NAME: str = "DataPointer"
VERSION: str = "0.1.0" VERSION: str = "0.1.0"
DESCRIPTION: str = "财产保险行业数据分级分类管理平台" DESCRIPTION: str = "财产保险行业数据分级分类管理平台"
@@ -25,7 +25,7 @@ class Settings(BaseSettings):
FIRST_SUPERUSER_USERNAME: str = "admin" FIRST_SUPERUSER_USERNAME: str = "admin"
FIRST_SUPERUSER_PASSWORD: str = "admin123" FIRST_SUPERUSER_PASSWORD: str = "admin123"
FIRST_SUPERUSER_EMAIL: str = "admin@propdataguard.com" FIRST_SUPERUSER_EMAIL: str = "admin@datapo.com"
class Config: class Config:
env_file = ".env" env_file = ".env"
+1 -1
View File
@@ -2,7 +2,7 @@ from celery import Celery
from app.core.config import settings from app.core.config import settings
celery_app = Celery( celery_app = Celery(
"prop_data_guard", "data_pointer",
broker=settings.REDIS_URL, broker=settings.REDIS_URL,
backend=settings.REDIS_URL, backend=settings.REDIS_URL,
include=["app.tasks.classification_tasks"], include=["app.tasks.classification_tasks"],
+2 -2
View File
@@ -1,5 +1,5 @@
""" """
Generate test data for PropDataGuard system. Generate test data for DataPointer system.
Targets: 10000+ records across all tables. Targets: 10000+ records across all tables.
""" """
import sys import sys
@@ -110,7 +110,7 @@ for i in range(80):
username = f"user{i+2:03d}" username = f"user{i+2:03d}"
user = User( user = User(
username=username, username=username,
email=f"{username}@propdataguard.com", email=f"{username}@datapo.com",
hashed_password=get_password_hash("password123"), hashed_password=get_password_hash("password123"),
real_name=real, real_name=real,
phone=random_phone(), phone=random_phone(),
+1 -1
View File
@@ -4,7 +4,7 @@
<meta charset="UTF-8" /> <meta charset="UTF-8" />
<link rel="icon" type="image/svg+xml" href="/vite.svg" /> <link rel="icon" type="image/svg+xml" href="/vite.svg" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<title>PropDataGuard - 财险数据分级分类平台</title> <title>DataPointer - 数据分类分级管理平台</title>
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>
+2 -2
View File
@@ -1,11 +1,11 @@
{ {
"name": "prop-data-guard-frontend", "name": "data-pointer-frontend",
"version": "0.1.0", "version": "0.1.0",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "prop-data-guard-frontend", "name": "data-pointer-frontend",
"version": "0.1.0", "version": "0.1.0",
"dependencies": { "dependencies": {
"@element-plus/icons-vue": "^2.3.1", "@element-plus/icons-vue": "^2.3.1",
+1 -1
View File
@@ -1,5 +1,5 @@
{ {
"name": "prop-data-guard-frontend", "name": "data-pointer-frontend",
"private": true, "private": true,
"version": "0.1.0", "version": "0.1.0",
"type": "module", "type": "module",
+1 -1
View File
@@ -17,7 +17,7 @@ export function getReportStats() {
} }
export function downloadReport(projectId: number) { export function downloadReport(projectId: number) {
const token = localStorage.getItem('pdg_token') const token = localStorage.getItem('dp_token')
const url = `/api/v1/reports/projects/${projectId}/download` const url = `/api/v1/reports/projects/${projectId}/download`
const a = document.createElement('a') const a = document.createElement('a')
a.href = url a.href = url
+3 -3
View File
@@ -8,7 +8,7 @@ const request = axios.create({
request.interceptors.request.use( request.interceptors.request.use(
(config: InternalAxiosRequestConfig) => { (config: InternalAxiosRequestConfig) => {
const token = localStorage.getItem('pdg_token') const token = localStorage.getItem('dp_token')
if (token && config.headers) { if (token && config.headers) {
config.headers.Authorization = `Bearer ${token}` config.headers.Authorization = `Bearer ${token}`
} }
@@ -32,8 +32,8 @@ request.interceptors.response.use(
const status = error.response?.status const status = error.response?.status
if (status === 401) { if (status === 401) {
ElMessage.error('登录已过期,请重新登录') ElMessage.error('登录已过期,请重新登录')
localStorage.removeItem('pdg_token') localStorage.removeItem('dp_token')
localStorage.removeItem('pdg_refresh') localStorage.removeItem('dp_refresh')
window.location.href = '/login' window.location.href = '/login'
} else { } else {
ElMessage.error((error.response?.data as any)?.message || '网络错误') ElMessage.error((error.response?.data as any)?.message || '网络错误')
+3 -3
View File
@@ -8,7 +8,7 @@
> >
<div class="logo"> <div class="logo">
<el-icon size="28" color="#fff"><Collection /></el-icon> <el-icon size="28" color="#fff"><Collection /></el-icon>
<span class="logo-text">PropDataGuard</span> <span class="logo-text">DataPointer</span>
</div> </div>
<el-menu <el-menu
:default-active="activeRoute" :default-active="activeRoute"
@@ -77,7 +77,7 @@
> >
<div class="logo"> <div class="logo">
<el-icon size="28" color="#fff"><Collection /></el-icon> <el-icon size="28" color="#fff"><Collection /></el-icon>
<span class="logo-text">PropDataGuard</span> <span class="logo-text">DataPointer</span>
</div> </div>
<el-menu <el-menu
:default-active="activeRoute" :default-active="activeRoute"
@@ -118,7 +118,7 @@ const windowWidth = ref(window.innerWidth)
const isMobile = computed(() => windowWidth.value < 768) const isMobile = computed(() => windowWidth.value < 768)
const activeRoute = computed(() => route.path) const activeRoute = computed(() => route.path)
const pageTitle = computed(() => (route.meta?.title as string) || 'PropDataGuard') const pageTitle = computed(() => (route.meta?.title as string) || 'DataPointer')
const menuRoutes = computed(() => { const menuRoutes = computed(() => {
const layout = router.getRoutes().find((r) => r.name === 'Layout') const layout = router.getRoutes().find((r) => r.name === 'Layout')
+5 -5
View File
@@ -4,15 +4,15 @@ import { login as apiLogin, getMe } from '@/api/auth'
import type { UserInfo } from '@/api/auth' import type { UserInfo } from '@/api/auth'
export const useUserStore = defineStore('user', () => { export const useUserStore = defineStore('user', () => {
const token = ref<string | null>(localStorage.getItem('pdg_token') || null) const token = ref<string | null>(localStorage.getItem('dp_token') || null)
const userInfo = ref<UserInfo | null>(null) const userInfo = ref<UserInfo | null>(null)
const isLoggedIn = computed(() => !!token.value) const isLoggedIn = computed(() => !!token.value)
async function login(username: string, password: string) { async function login(username: string, password: string) {
const res = await apiLogin(username, password) const res = await apiLogin(username, password)
token.value = res.access_token token.value = res.access_token
localStorage.setItem('pdg_token', res.access_token) localStorage.setItem('dp_token', res.access_token)
localStorage.setItem('pdg_refresh', res.refresh_token) localStorage.setItem('dp_refresh', res.refresh_token)
await fetchUserInfo() await fetchUserInfo()
return res return res
} }
@@ -31,8 +31,8 @@ export const useUserStore = defineStore('user', () => {
function logout() { function logout() {
token.value = null token.value = null
userInfo.value = null userInfo.value = null
localStorage.removeItem('pdg_token') localStorage.removeItem('dp_token')
localStorage.removeItem('pdg_refresh') localStorage.removeItem('dp_refresh')
} }
return { return {
+1 -1
View File
@@ -3,7 +3,7 @@
<div class="login-box card-shadow"> <div class="login-box card-shadow">
<div class="login-header"> <div class="login-header">
<el-icon size="48" color="#1a2b4a"><Collection /></el-icon> <el-icon size="48" color="#1a2b4a"><Collection /></el-icon>
<h1 class="login-title">PropDataGuard</h1> <h1 class="login-title">DataPointer</h1>
<p class="login-subtitle">财险数据分级分类管理平台</p> <p class="login-subtitle">财险数据分级分类管理平台</p>
</div> </div>
+1 -1
View File
@@ -61,7 +61,7 @@ async function fetchUsers() {
userLoading.value = true userLoading.value = true
try { try {
const res = await fetch(`/api/v1/users?keyword=${encodeURIComponent(userKeyword.value)}`, { const res = await fetch(`/api/v1/users?keyword=${encodeURIComponent(userKeyword.value)}`, {
headers: { Authorization: `Bearer ${localStorage.getItem('pdg_token') || ''}` }, headers: { Authorization: `Bearer ${localStorage.getItem('dp_token') || ''}` },
}) })
const data = await res.json() const data = await res.json()
userList.value = data.data || [] userList.value = data.data || []