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.com → admin@datapo.com - Celery app name: prop_data_guard → data_pointer - Layout logo, login title, page title all updated
This commit is contained in:
@@ -3,7 +3,7 @@ from typing import List
|
||||
|
||||
|
||||
class Settings(BaseSettings):
|
||||
PROJECT_NAME: str = "PropDataGuard"
|
||||
PROJECT_NAME: str = "DataPointer"
|
||||
VERSION: str = "0.1.0"
|
||||
DESCRIPTION: str = "财产保险行业数据分级分类管理平台"
|
||||
|
||||
@@ -25,7 +25,7 @@ class Settings(BaseSettings):
|
||||
|
||||
FIRST_SUPERUSER_USERNAME: str = "admin"
|
||||
FIRST_SUPERUSER_PASSWORD: str = "admin123"
|
||||
FIRST_SUPERUSER_EMAIL: str = "admin@propdataguard.com"
|
||||
FIRST_SUPERUSER_EMAIL: str = "admin@datapo.com"
|
||||
|
||||
class Config:
|
||||
env_file = ".env"
|
||||
|
||||
@@ -2,7 +2,7 @@ from celery import Celery
|
||||
from app.core.config import settings
|
||||
|
||||
celery_app = Celery(
|
||||
"prop_data_guard",
|
||||
"data_pointer",
|
||||
broker=settings.REDIS_URL,
|
||||
backend=settings.REDIS_URL,
|
||||
include=["app.tasks.classification_tasks"],
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
"""
|
||||
Generate test data for PropDataGuard system.
|
||||
Generate test data for DataPointer system.
|
||||
Targets: 10000+ records across all tables.
|
||||
"""
|
||||
import sys
|
||||
@@ -110,7 +110,7 @@ for i in range(80):
|
||||
username = f"user{i+2:03d}"
|
||||
user = User(
|
||||
username=username,
|
||||
email=f"{username}@propdataguard.com",
|
||||
email=f"{username}@datapo.com",
|
||||
hashed_password=get_password_hash("password123"),
|
||||
real_name=real,
|
||||
phone=random_phone(),
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
<meta charset="UTF-8" />
|
||||
<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" />
|
||||
<title>PropDataGuard - 财险数据分级分类平台</title>
|
||||
<title>DataPointer - 数据分类分级管理平台</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
||||
Generated
+2
-2
@@ -1,11 +1,11 @@
|
||||
{
|
||||
"name": "prop-data-guard-frontend",
|
||||
"name": "data-pointer-frontend",
|
||||
"version": "0.1.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "prop-data-guard-frontend",
|
||||
"name": "data-pointer-frontend",
|
||||
"version": "0.1.0",
|
||||
"dependencies": {
|
||||
"@element-plus/icons-vue": "^2.3.1",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"name": "prop-data-guard-frontend",
|
||||
"name": "data-pointer-frontend",
|
||||
"private": true,
|
||||
"version": "0.1.0",
|
||||
"type": "module",
|
||||
|
||||
@@ -17,7 +17,7 @@ export function getReportStats() {
|
||||
}
|
||||
|
||||
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 a = document.createElement('a')
|
||||
a.href = url
|
||||
|
||||
@@ -8,7 +8,7 @@ const request = axios.create({
|
||||
|
||||
request.interceptors.request.use(
|
||||
(config: InternalAxiosRequestConfig) => {
|
||||
const token = localStorage.getItem('pdg_token')
|
||||
const token = localStorage.getItem('dp_token')
|
||||
if (token && config.headers) {
|
||||
config.headers.Authorization = `Bearer ${token}`
|
||||
}
|
||||
@@ -32,8 +32,8 @@ request.interceptors.response.use(
|
||||
const status = error.response?.status
|
||||
if (status === 401) {
|
||||
ElMessage.error('登录已过期,请重新登录')
|
||||
localStorage.removeItem('pdg_token')
|
||||
localStorage.removeItem('pdg_refresh')
|
||||
localStorage.removeItem('dp_token')
|
||||
localStorage.removeItem('dp_refresh')
|
||||
window.location.href = '/login'
|
||||
} else {
|
||||
ElMessage.error((error.response?.data as any)?.message || '网络错误')
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
>
|
||||
<div class="logo">
|
||||
<el-icon size="28" color="#fff"><Collection /></el-icon>
|
||||
<span class="logo-text">PropDataGuard</span>
|
||||
<span class="logo-text">DataPointer</span>
|
||||
</div>
|
||||
<el-menu
|
||||
:default-active="activeRoute"
|
||||
@@ -77,7 +77,7 @@
|
||||
>
|
||||
<div class="logo">
|
||||
<el-icon size="28" color="#fff"><Collection /></el-icon>
|
||||
<span class="logo-text">PropDataGuard</span>
|
||||
<span class="logo-text">DataPointer</span>
|
||||
</div>
|
||||
<el-menu
|
||||
:default-active="activeRoute"
|
||||
@@ -118,7 +118,7 @@ const windowWidth = ref(window.innerWidth)
|
||||
|
||||
const isMobile = computed(() => windowWidth.value < 768)
|
||||
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 layout = router.getRoutes().find((r) => r.name === 'Layout')
|
||||
|
||||
@@ -4,15 +4,15 @@ import { login as apiLogin, getMe } from '@/api/auth'
|
||||
import type { UserInfo } from '@/api/auth'
|
||||
|
||||
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 isLoggedIn = computed(() => !!token.value)
|
||||
|
||||
async function login(username: string, password: string) {
|
||||
const res = await apiLogin(username, password)
|
||||
token.value = res.access_token
|
||||
localStorage.setItem('pdg_token', res.access_token)
|
||||
localStorage.setItem('pdg_refresh', res.refresh_token)
|
||||
localStorage.setItem('dp_token', res.access_token)
|
||||
localStorage.setItem('dp_refresh', res.refresh_token)
|
||||
await fetchUserInfo()
|
||||
return res
|
||||
}
|
||||
@@ -31,8 +31,8 @@ export const useUserStore = defineStore('user', () => {
|
||||
function logout() {
|
||||
token.value = null
|
||||
userInfo.value = null
|
||||
localStorage.removeItem('pdg_token')
|
||||
localStorage.removeItem('pdg_refresh')
|
||||
localStorage.removeItem('dp_token')
|
||||
localStorage.removeItem('dp_refresh')
|
||||
}
|
||||
|
||||
return {
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<div class="login-box card-shadow">
|
||||
<div class="login-header">
|
||||
<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>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -61,7 +61,7 @@ async function fetchUsers() {
|
||||
userLoading.value = true
|
||||
try {
|
||||
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()
|
||||
userList.value = data.data || []
|
||||
|
||||
Reference in New Issue
Block a user