Files
Web_PanelSelection_Vue_Prod/.github/copilot-instructions.md
2025-11-18 08:33:12 +08:00

3.8 KiB
Raw Blame History

快速上手(供 AI 助手)

此项目是一个基于 Vue 3 + Vite 的 Web 前端Element Plus UI。下面的说明帮助 AI 编码/补全助手快速理解项目结构、运行方式、常见约定和注意点,以便生成正确、可运行的改动。

  • 运行 / 构建

    • 安装依赖: npm install
    • 开发: npm run dev(本地 dev server 默认端口在 vite.config.js 中配置为 63615
    • 生产构建: npm run build
    • 预览产物: npm run preview
    • 修复 lint: npm run lint
  • 核心技术栈(来自 package.json

    • Vue 3, Vite, Vue Router 4, Vuex 4
    • Element Plus (UI)、axiosHTTP、vue-i18n
  • 关键文件/位置(示例引用)

    • src/main.js:应用入口。全局注入 $httpaxios 实例)和 config(来自 public/config.js),并挂载 ElementPlus 与 i18n。
    • src/router/index.js:路由定义与路由守卫。认证依赖 localStorage.token;有 Admin 特权判断username 为 Admin 或 MoMoWen。添加页面通常在 src/pages/* 中创建并在此处引入。
    • src/axios.js:导出默认 axios 实例与 createAxiosInstance(urlnum) 工厂函数。注意:
      • baseURL 来源:public/config.jsApiListindex 默认 0import.meta.env.VITE_API_BASE_URL
      • 请求拦截器会为非 Login/Login 请求附带 Authorization: Bearer <token>(从 localStorage 读取)。
      • 响应拦截器实现了简单的 401 处理与 refreshToken() 的自动尝试(依赖 rememberedUsername/rememberedPassword 存储)。
    • public/config.js:运行时 API 列表与资源地址(更新测试或新服务地址请在这里调整或通过 env 覆盖)。
  • 项目约定与注意事项(基于代码可观测行为)

    • 认证token 存在于 localStorage.token。路由守卫依赖该字段。如果生成与登录/认证相关的修改,请保持兼容性。
    • 自动刷新 Tokensrc/axios.js 会尝试在响应后刷新 token会读取 rememberedUsernamerememberedPassword)。不要移除这些本地键,除非同步修改登录逻辑。
    • Axios 用法:默认 export 是已配置实例(供现有代码使用 this.$httpapp.config.globalProperties.$http)。若需要对不同 API host 调用,请使用 createAxiosInstance(n)
    • 路由/页面:新页面放到 src/pages/<name>/index.vue 并在 src/router/index.js 中按现有模式引入与注册。
    • 全局注入:main.js 使用 app.provide('config', config),生成的自动补全可参考 config.ApiListconfig.Api 等字段。
  • 编辑/调试建议(对生成代码很重要)

    • 本地运行 dev 后打开 http://localhost:63615(或 Vite 提示的端口)。
    • 推荐编辑器/插件VSCode + Volar项目 README 推荐)。
  • 示例片段(如何安全地添加 API 调用)

    • 使用默认实例(与现有代码兼容):
      • 在组件中直接使用 this.$http.get('Some/Endpoint')(或 import axios from '@/axios' 然后 axios.get(...))。
    • 使用备用 base URL:
      • import { createAxiosInstance } from '@/axios' const api2 = createAxiosInstance(1) api2.get('Some/Endpoint')
  • 变更约束AI 应遵守以避免破坏现有行为)

    • 不要删除或重命名 localStorage 中的 key如: token, username, rememberedUsername, rememberedPassword, lastAutoLoginTime),除非同时更新登录与刷新流程。
    • 保持 Login/Login 在 axios 拦截器中作为例外路径(或同时更新拦截器逻辑)。

若你需要我把某部分扩展为示例代码补丁比如为某个新页面、API 或路由添加实现),告诉我目标文件与预期行为,我会生成并应用补丁;之后请告知额外运行/测试步骤或后端约束。