feat: 新增应用全局常量 APP,消除硬编码散落

- 新增 src/shared/app.ts,定义应用元信息(name、title、subtitle、description、version)
- 后端 3 处硬编码改为引用 APP.name
- 前端 3 处硬编码改为引用 APP.title/APP.description
- localStorage key 从 my-app.theme.preference 改为 theme.preference
- 构建脚本可执行文件名改为引用 APP.name
- 更新 README.md 和 DEVELOPMENT.md 文档
- 新增 openspec/specs/app-constants/spec.md 规范文档
This commit is contained in:
2026-05-20 15:54:15 +08:00
parent 4a38d4dac7
commit 5aed73523e
12 changed files with 112 additions and 26 deletions

View File

@@ -1,8 +1,10 @@
import { useQuery } from "@tanstack/react-query";
import { useEffect } from "react";
import { Layout, Menu, RadioGroup, Space } from "tdesign-react";
import type { HealthResponse } from "../shared/api";
import { APP } from "../shared/app";
import { type ThemePreference, useThemePreference } from "./hooks/use-theme-preference";
const { Content, Header } = Layout;
@@ -21,6 +23,11 @@ export function App() {
staleTime: 5000,
});
useEffect(() => {
document.title = APP.title;
document.querySelector('meta[name="description"]')?.setAttribute("content", APP.description);
}, []);
const handleThemeChange = (value: ThemePreference) => {
setThemePreference(value);
};
@@ -31,7 +38,7 @@ export function App() {
<Menu.HeadMenu
logo={
<span className="dashboard-brand">
<span className="dashboard-logo">my-app</span>
<span className="dashboard-logo">{APP.title}</span>
</span>
}
operations={
@@ -50,7 +57,7 @@ export function App() {
<Content>
<div className="dashboard-content">
<Space direction="vertical" size="large" style={{ width: "100%" }}>
<h2>使 my-app</h2>
<h2>使 {APP.title}</h2>
<p> /health API </p>
{health && <pre className="health-response">{JSON.stringify(health, null, 2)}</pre>}
</Space>