Compare commits

...

2 Commits

Author SHA1 Message Date
xiaoxia 08179d1369 fix(ci): strip ANSI codes before grep in vitest_incremental.sh
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 47s
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 54s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 53s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 56s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 1m2s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Successful in 1m8s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 2m11s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m22s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m6s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 4m0s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 5m5s
AI Code Review / AI Code Review (pull_request) Successful in 5m11s
CI/CD Pipeline / Integration Tests (pull_request) Successful in 1m50s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 5m47s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 6m22s
ACR Cleanup / ACR Image Cleanup (pull_request_target) Successful in 12s
Preview Cleanup / Cleanup Preview Environment (pull_request) Successful in 41s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 1057h28m6s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 1057h28m10s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 1057h28m12s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 1057h28m14s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1057h29m14s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 1057h29m16s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 1057h29m18s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 1057h30m7s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 1057h30m9s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 1057h30m11s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 1058h1m23s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 1058h1m31s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 1058h2m31s
vitest outputs ANSI color codes that interfere with grep matching.
'No test files found' skip logic was not triggered, causing CI failure.
Added sed to strip ANSI codes before grep check.

Closes #1221
2026-08-03 13:57:10 +08:00
SaaS Frontend 7594caaf02 fix(auth): 401拦截器排除auth端点 + login默认跳转/app/dashboard
CI/CD Pipeline / Check if frontend-only change (pull_request) Successful in 32s
CI/CD Pipeline / Validate - Type Check (mypy) (pull_request) Successful in 50s
CI/CD Pipeline / Validate - Migration (alembic) (pull_request) Successful in 48s
CI/CD Pipeline / Frontend Lint (pull_request) Successful in 55s
PR Automation / Auto Approve on CI Green (pull_request) Successful in 1m28s
CI/CD Pipeline / PR Build Web Image (pull_request) Successful in 2m10s
CI/CD Pipeline / Frontend Unit Tests (pull_request) Failing after 56s
CI/CD Pipeline / Validate - Code Quality (pull_request) Successful in 4m0s
AI Code Review / AI Code Review (pull_request) Successful in 4m14s
CI/CD Pipeline / PR Build API Image (pull_request) Successful in 5m37s
Preview Deploy / Deploy Preview Environment (pull_request) Failing after 6m36s
CI/CD Pipeline / PR Build Worker Image (pull_request) Successful in 11m1s
CI/CD Pipeline / Staging API Integration Tests (pull_request) Failing after 14m42s
PR Automation / Auto Merge on CI Green + Approved (pull_request) Successful in 47m48s
CI/CD Pipeline / Canary Release to Production (pull_request) Failing after 1058h26m55s
CI/CD Pipeline / Production Browser E2E (pull_request) Failing after 1058h41m33s
CI/CD Pipeline / Staging E2E Tests (pull_request) Failing after 1058h41m38s
CI/CD Pipeline / Integration Tests (pull_request) Failing after 1058h41m34s
CI/CD Pipeline / Deploy Production (pull_request) Failing after 1058h41m40s
CI/CD Pipeline / Deploy Staging (Watchtower auto-deploy) (pull_request) Failing after 1058h41m50s
CI/CD Pipeline / Build Production API Image (pull_request) Failing after 1058h41m54s
CI/CD Pipeline / Build Production Worker Image (pull_request) Failing after 1058h41m51s
CI/CD Pipeline / Unit Tests (pull_request) Failing after 1058h42m38s
CI/CD Pipeline / Build Staging API Image (pull_request) Failing after 1058h44m41s
CI/CD Pipeline / Build Staging Worker Image (pull_request) Failing after 1058h44m39s
CI/CD Pipeline / ACR Image Cleanup (pull_request) Failing after 1059h14m51s
CI/CD Pipeline / Build Production Web Image (pull_request) Failing after 1059h15m7s
CI/CD Pipeline / Build Staging Web Image (pull_request) Failing after 1059h17m55s
- client.ts: 401响应拦截器增加isAuthEndpoint判断,排除/auth/login、
  /auth/register、/auth/forgot-password、/auth/reset-password,
  避免登录密码错误时触发clearAuth+硬跳转,让401正常走错误提示逻辑
- useAuth.ts: login()默认跳转路径从'/'改为'/app/dashboard',
  与Login.tsx onFinish保持一致,消除双重navigate竞态

Closes #1221
2026-08-03 12:40:39 +08:00
3 changed files with 28 additions and 4 deletions
Regular → Executable
+15 -1
View File
@@ -57,7 +57,21 @@ apiClient.interceptors.response.use(
}
// 401 → 尝试刷新 Token
if (error.response?.status === 401 && originalRequest && !originalRequest._retry) {
// 排除 auth 端点:登录/注册/找回密码的 401 是正常业务响应(如密码错误),
// 不应触发 token 刷新或登出跳转,走后面的错误提示逻辑即可
const requestUrl = originalRequest?.url || ""
const isAuthEndpoint =
requestUrl.includes("/auth/login") ||
requestUrl.includes("/auth/register") ||
requestUrl.includes("/auth/forgot-password") ||
requestUrl.includes("/auth/reset-password")
if (
error.response?.status === 401 &&
originalRequest &&
!originalRequest._retry &&
!isAuthEndpoint
) {
const refreshToken = useAuthStore.getState().refreshToken
// 无 refresh_token → 直接登出
Regular → Executable
+2 -2
View File
@@ -31,8 +31,8 @@ export const useLogin = () => {
const user = await authApi.getCurrentUser()
setAuth(user, data.access_token, refreshToken)
// 跳转到登录前页面或首页
const redirect = localStorage.getItem("login_redirect") || "/"
// 跳转到登录前页面或仪表盘(与 Login.tsx onFinish 保持一致)
const redirect = localStorage.getItem("login_redirect") || "/app/dashboard"
localStorage.removeItem("login_redirect")
navigate(redirect, { replace: true })
return data
+11 -1
View File
@@ -55,9 +55,19 @@ echo ""
# 在Docker Node容器中执行增量测试
set +e
bash scripts/ci/step_frontend_run.sh "npx vitest run related $CHANGED_FILES"
VITEST_OUTPUT=$(bash scripts/ci/step_frontend_run.sh "npx vitest run related $CHANGED_FILES" 2>&1)
VITEST_EXIT=$?
set -e
echo "$VITEST_OUTPUT"
# 如果没有找到测试文件,视为通过(改动的文件没有对应测试)
# 先用 sed 去掉 ANSI 转义码,避免干扰 grep 匹配
CLEAN_OUTPUT=$(echo "$VITEST_OUTPUT" | sed 's/\x1b\[[0-9;]*m//g')
if echo "$CLEAN_OUTPUT" | grep -q "No test files found"; then
echo ""
echo "⚠️ 未找到相关测试文件,跳过(非失败)"
exit 0
fi
if [ "$VITEST_EXIT" -eq 0 ]; then
echo ""