All checks were successful
Build and Deploy LTY / build-and-deploy (push) Successful in 8m38s
- qy-lty-admin/Dockerfile: build 阶段加 ARG/ENV,让该变量在 next build 时进客户端 JS 包 - .gitea/workflows/deploy.yaml: admin docker build 加 --build-arg https://${DOMAIN_API}/api;删除已失效的 sed 替换 - k8s/admin-deployment-prod.yaml: 删除运行时无效的 NEXT_PUBLIC_API_BASE_URL env,留注释说明 根因:Next.js NEXT_PUBLIC_* 变量在 next build 时被静态编译进客户端 JS。 原配置在容器运行时才设该变量,对已打包的 fallback 默认值无效, 导致线上前端实际打到 http://localhost:8000/api 触发 ERR_CONNECTION_REFUSED。 Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
4.6 KiB
4.6 KiB
管理后台前端代码修改记录
本文档记录每次对管理后台前端(qy-lty-admin,Next.js + React)代码的修改,方便追踪变更历史。
范围说明:本仓库与服务端 qy_lty 是独立项目,各自维护独立的修改记录。仅记录本仓库(管理后台前端)改动;跨项目联动改动需在 qy_lty/docs/修改记录.md 同期写一条相互引用的条目。
修改格式说明
每次修改按以下格式记录:
### [日期] 修改简述
- **文件路径**: 相对于项目根目录的文件路径
- **修改类型**: 新增 / 修改 / 删除 / 重构 / 修复Bug
- **修改内容**: 具体修改了什么
- **修改原因**: 为什么要做这个修改
修改历史
[2026-05-07] 修复 NEXT_PUBLIC_API_BASE_URL 注入时机错误(线上登录 Network Error)
- 文件路径:
qy-lty-admin/Dockerfile.gitea/workflows/deploy.yaml(仓库根目录,与本前端构建/部署链直接相关)k8s/admin-deployment-prod.yaml(仓库根目录,与本前端构建/部署链直接相关)
- 修改类型: 修复Bug
- 修改内容:
qy-lty-admin/Dockerfile:在COPY . .之后、RUN yarn build之前新增ARG NEXT_PUBLIC_API_BASE_URL与ENV NEXT_PUBLIC_API_BASE_URL=${NEXT_PUBLIC_API_BASE_URL},让该值在 build 期可被注入.gitea/workflows/deploy.yaml:在 admin 镜像docker build命令上加--build-arg NEXT_PUBLIC_API_BASE_URL=https://${DOMAIN_API}/api(test 环境拼成https://qy-lty.test.airlabs.art/api,prod 环境拼成https://qy-lty.airlabs.art/api);同时删除Replace domain placeholders by environment段中已失效的sed -i "s|https://qy-lty.airlabs.art|https://${DOMAIN_API}|g" k8s/admin-deployment-prod.yamlk8s/admin-deployment-prod.yaml:删除运行时无效的env: NEXT_PUBLIC_API_BASE_URL=https://qy-lty.airlabs.art,改为注释说明该变量必须在 docker build 时通过--build-arg注入
- 修改原因:
- 线上 https://qy-lty-admin.test.airlabs.art/login 点登录弹 "Network Error"。DevTools 抓到 Request URL 是
http://localhost:8000/api/v1/admin/login/,对应lib/api/client.ts中process.env.NEXT_PUBLIC_API_BASE_URL || "http://localhost:8000/api"的 fallback 值。 - 根因:Next.js 的
NEXT_PUBLIC_*变量在next build时被静态编译进客户端 JS 包,运行时再设置容器环境变量已经无效。原 Dockerfile 没有ARG/ENV,原 deploy.yaml 没有--build-arg,只有k8s/admin-deployment-prod.yaml在容器运行时设了变量——所以打包出的镜像里硬编码的是默认 fallbackhttp://localhost:8000/api,前端 HTTPS 页面去打本机的 8000 端口,浏览器报ERR_CONNECTION_REFUSED,axios 包装为 "Network Error"。 - 修复后构建期会把正确的
https://qy-lty.test.airlabs.art/api/https://qy-lty.airlabs.art/api编译进 JS 包,登录请求会正确打到后端。 - 备注:原
k8s/admin-deployment-prod.yaml写的是https://qy-lty.airlabs.art(缺少/api后缀),即便注入时机正确,路径也会拼错(/v1/admin/login/而非/api/v1/admin/login/),双重 bug。本次修复一并纠正。
- 线上 https://qy-lty-admin.test.airlabs.art/login 点登录弹 "Network Error"。DevTools 抓到 Request URL 是
- 服务端联动: 本次修复仅涉及前端构建链与部署配置,未改动
qy_lty后端代码,无需在服务端写联动条目。
[2026-04-30] 初始化 CLAUDE.md 与 docs/修改记录.md 骨架
- 文件路径:
CLAUDE.md、docs/修改记录.md - 修改类型: 新增
- 修改内容:
- 新建
CLAUDE.md:写明项目身份(Next.js 15 App Router + React 19 后台)、技术栈、路由分组、鉴权与权限模型、与qy_lty后端的依赖关系,并嵌入"项目修改记录规则(重要 — 自动执行)"段落 - 新建本文件
docs/修改记录.md:以qy_lty/docs/修改记录.md同名文件为骨架,划清"仅记录管理后台前端改动"的边界
- 新建
- 修改原因:
- 此前本仓库无 CLAUDE.md 和修改记录文档,新会话进入工作时缺乏上下文锚点;与服务端
qy_lty项目的改动追踪互不可见 - 配套服务端
qy_lty/CLAUDE.md同日新增的"项目修改记录规则"段落,要求两端各自独立维护修改记录、跨项目联动改动相互引用,从源头避免漏记和混记 - 服务端同期条目:qy_lty/docs/修改记录.md 2026-04-30 "CLAUDE.md 新增项目修改记录规则段落"
- 此前本仓库无 CLAUDE.md 和修改记录文档,新会话进入工作时缺乏上下文锚点;与服务端