Commit Graph

7 Commits

Author SHA1 Message Date
浅念 3c54ad69c1 fix(admin): useTable 请求竞态守卫(旧请求不清 loading/不写错误态)
- fetchData 加请求序号令牌 fetchSeq:请求被新请求取代后,旧响应不再
  改动任何状态——修复两类竞态:旧请求取消分支把 loading 提前清成 idle、
  旧请求失败分支把新请求在途数据清空并置 error
- 与 dashboard reqSeq 修法同口径(id===seq 才写数据/清 loading),
  供访客列表等分页筛选页复用

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-15 19:58:14 +08:00
浅念 5b3297337e fix: 总览筛选竞态守卫 + 时间戳统一上海时间序列化
- dashboard loadOverview 加请求令牌:快速切换站点时丢弃过期响应,
  防旧数据覆盖与旧 finally 提前清 loading
- 后端序列化统一 timezone.localtime:sites.created_at 与 visitors 的
  first/last_seen_at、会话 started/ended_at、时间线事件 time——
  USE_TZ 下 isoformat() 是 UTC,与上海自然日口径同屏矛盾(差 8 小时)
- 站点弹窗域名加轻量主机名正则校验与实时提示(拦含空格等垃圾输入)

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-15 18:57:41 +08:00
浅念 78ed08d217 feat(admin): 站点管理与总览页
- 站点管理:useTable+ArtTable 列表(名称/Site ID 复制/域名白名单标签/状态/创建时间),
  新建/编辑复用弹窗(域名按行归一预览,与后端 _norm_domains 同口径),
  停用二次确认(软删语义,文案用停用)/启用切换
- 数据总览:今日五指标卡(PV/UV/会话/新访客/在线)、近30天趋势折线、
  来源构成环图、热门页面表格;站点筛选下拉(哨兵值全部站点)联动刷新
- 图表用模板 useChartComponent 管理实例(自动销毁/空态/主题色)

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-15 18:32:25 +08:00
浅念 0a80b43804 fix(admin): getVisitors 参数类型收紧(哨兵字符串防假筛选)
online/is_new/show_bot 后端按字符串哨兵 =="1" 解析(visitors.py _page_visitors),
boolean true 会被 axios 序列化成 "true" 而被静默忽略——看起来生效实则未生效。
新增 VisitorListParams 接口把三个开关锁死为字面量 "1",其余筛选字段一并收型。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-15 17:59:23 +08:00
浅念 a2ec4510a7 feat(admin): tracker api 模块与路由
- api/tracker/{visitors,dashboard,sites}.ts:类型逐字段对齐 server/tracker/api 序列化输出
  (stay 一律 stay_ms,不引用已移除的 duration_ms;last_ip/时间线孤立会话组的
  started_at 按后端可为 null;TrendPoint 含 new_visitors)
- 路由模块 tracker:数据总览/访客管理/站点管理三项菜单,访客详情 isHide 不进菜单
  (query: visitor_id,activePath 回指访客管理),zh/en 语言包补 menus.tracker
- 4 个占位视图(Task 19-21 填充真实内容),vue-tsc 构建通过

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-15 17:50:36 +08:00
浅念 f11abbff43 fix(admin): 微收口(注释/角色防御/dev 约定文档/husky 移除)
- routesAlias.ts 修复 clean:dev 打坏的块注释
- system-manage.ts menus/simple 标注死代码(backend 模式前置条件)
- /me 映射非 staff roles 兜底 R_USER,防空数组跳过菜单角色过滤
- 新增 README-dev.md:config-object 签名/URL 无 /api 前缀/Bearer 归映射层/v-html 红线
- package.json 删 husky prepare(防 pnpm install 改写 core.hooksPath)

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-15 17:39:50 +08:00
浅念 ab4f40ba5d feat(admin): 模板精简+请求层适配 Django JWT
- 克隆 art-design-pro v3.0.2(GitHub depth1),rm .git,pnpm clean:dev 精简演示页(92 文件)
- .env.development/.env.production 均设 VITE_API_URL=/api,代理目标 127.0.0.1:8000(移除 Apifox Mock)
- http 封装信封适配:code===200 解包 data;msg/message 字段兼容(拦截器/error/类型)
- /api/admin/auth/token 登录适配(access->Bearer token, refresh->refreshToken);/api/admin/auth/me 映射 UserInfo(userName/roles/is_admin)
- 登录页演示账号替换为真实 admin;logOut 按路由名判登录页修复 redirect 嵌套
- 根 .gitignore 补 !admin/.env(模板公共 env 非密钥,需入库)
- 验证:Playwright 全链路(错误密码 401 留登页/正确登录进工作台/登出/受保护路由重定向/redirect 回跳)+ pnpm build(vue-tsc 通过,产物无 mock 域名)

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-15 17:17:38 +08:00