浅念
|
230eb2d86c
|
feat: 统计分析(卡片/漏斗/趋势/分布/推送健康,ECharts)
- admin 统计分析页(views/stats/overview): 指标卡四张(口径文案沿用
仪表盘)/ 漏斗横向条形(有序单色明度阶梯,标注 数量·占上一级%)/
按日趋势双线(窗口内无数据日期前端补零)/ 意向环形(分类三槽固定
指派,色随实体不随筛选)/ 来源·站点·国家 Top10 横向条形(名义类目
统一单色)/ 推送健康表(四状态计数 + duplicated 子集行)
- 筛选一行作用全部图表: 时间档(今天/近7天/近30天/自定义区间,自定义
不完整不发请求并提示)+ 租户切换(超管含"全部"合并选项,停用租户
标注;租户管理员固定自己)
- charts.ts 纯函数层(选项构建 + 双模式主题档),配色经
validate_palette.js 明暗双模式校验(分类/漏斗 ordinal 全过;
意向饼语义红绿组 CVD 硬伤弃用改分类槽)
- statsRange.ts 扩展自定义区间解析(既有仪表盘导出不动);
新增 charts/resolveStatsRange 单测 19 例(vitest 120→139)
- 修复 merge_stats distributions 尾随逗号 1 元组 bug(合并端点曾把
distributions 序列化成 JSON 数组,单租户路径不受累)+ 回归钉子;
后端 595 测试全过
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-13 22:33:55 +08:00 |
|
浅念
|
481243b958
|
feat: 配置中心-版本历史(列表/两版对比/回滚/组级重置出厂)
Task 7d——Phase 3 配置中心四连收尾:
- API(api/config.ts):fetchConfigVersions / fetchConfigVersionDetail /
rollbackConfig / resetConfigGroup 四函数补齐(骨架端点与类型已就位;
响应形态对照 config_routes 实测——列表无 config 本体、详情整份+掩码、
reset 响应与 PUT 分组保存同形)
- VersionsPane:版本 tab 实装(导航占位转正)——列表倒序(版本/时间/
作者/备注,当前版标记)+ 详情抽屉整份 JSON;勾两版(限两个,第三个
自动撤销最早勾选行)并排等宽 JSON 对比(spec §7.3 最低形态,范围
下拉可聚焦单组——wall 20KB+ 场景);回滚确认框明示「将产生新版本,
历史不变」→ 响应内新快照直接回写页头版本/快照/品牌表单,无需再 GET
- 组级重置出厂:六个已实装编辑卡(品牌/提示词/词表/邮件/推送/AI)头部
危险色小按钮 → reset.ts 共用确认入口(明示组名与「恢复出厂档案值」)
→ POST config/{group}/reset → 表单/密钥态/版本刷新(RESET_GROUP_
LABELS 九组镜像后端 CONFIG_GROUPS,含待实装的联系方式/引擎/杂项)
- 测试:vitest 120(+13——API 四函数调用形态 5 条 + model 辅助 8 条);
后端不动 595;冒烟 jiancai:v1-v10 列表 → v1/v10 并排对比(push 组
__SET__ 掩码可见)→ 回滚 v1 产 v11 且品牌回 v1 值 → 改占位存 v12 →
重置品牌产 v13 表单回档案值 → 回滚 v10 复原现场(v14)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-13 21:39:16 +08:00 |
|
浅念
|
bf923d9cf7
|
feat: 配置中心-凭据(邮件推送AI表单/掩码交互/SMTP测试/推送探测端点)
- 后端 POST /tenants/{slug}/email/test:resolve_email_settings 当前配置
真发测试邮件(主题 [all-kefu] SMTP 测试邮件+租户名+UTC+8 时间);
回退后 host/user 仍空 → 400;成败如实返回 {sent, error},密钥不进响应
- 后端 POST /tenants/{slug}/push/test:连通性探测——与 _do_post 同款
连接形态 POST 空 messages 批量(红线:绝不携带线索数据);不可达
reason 分类 dns/timeout/connect(Windows 裸 ConnectError 文案兜底),
auth_ok 三态(2xx 真 / 401·403 假 / 其余 null),单次无重试
- email_service 抽 _smtp_send 共用连接逻辑(_send 契约不变)+
send_test_email(成败+错误串如实返回,不走吞异常 bool)
- 前端 CredsPane:邮件/推送/AI 三组凭据表单(数值/邮箱前端预检 +
后端 400 双层);密钥哨兵交互(__SET__ 占位符/不动保存保持库值/
清除按钮显式清空可撤销);SMTP 测试与推送探测三态内联展示
- 测试:pytest 新增 18(email/test 7 + push/test 11),全量 595 通过;
vitest 新增 20(model 哨兵往返/预检边界 + API 调用形态),107 通过
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-13 20:55:40 +08:00 |
|
浅念
|
39d72c53aa
|
feat: 配置中心-提示词与词表(四件套编辑/结构化词表/试金石面板/保存前验证)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-13 20:05:42 +08:00 |
|
浅念
|
cac91e9e3e
|
feat: 配置中心-品牌(表单/本地预览/嵌入代码/头像上传)+ 站点覆盖层编辑入口
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-13 19:27:08 +08:00 |
|
浅念
|
6f22e51908
|
feat: 租户管理与站点管理(创建向导/停用/域名/门面覆盖)
- API 层实装(api/tenants.ts):创建/详情/PATCH 租户、建站/改站、
域名绑定解绑——400 撞车 detail(slug/域名归属/prefix 引导)经
showErrorMessage:false 关全局 toast、由向导与绑域名弹窗内联常驻展示
- 租户列表:slug/名称/状态/域名数/版本/管理员概要 + 状态筛选 +
行操作(详情/停用复启用/改名);停用确认框写明 503 服务暂停语义
- 创建向导(ElSteps 四步):名称+slug(^[a-z0-9-]+$ 与撞车内联拦截)
→ 域名多填 → 出厂档案(auto/jiancai 提示 prefix 全局唯一撞车引导
改 blank;blank 提示墙与提示词取建材出厂档案)→ 管理员账号;
201 后列表刷新并提示首登需改密
- 站点管理(详情抽屉):站点表/新建站(门面覆盖层表单——brand 组
子集字段留空=继承租户默认)/停用复启用(404 语义提示)/域名绑定
(撞车归属内联)与解绑(标签 × 确认)
- vitest +9(API 层 URL/方法/请求体契约);页面仅超管(菜单 roles 已挡)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-13 18:27:56 +08:00 |
|
浅念
|
ce668eaf2f
|
feat: 会话与线索(列表/筛选/租户切换/详情消息流/推送日志/删除)
- 会话列表页签:分页表格 + 筛选(意向三值/站点精确/日期区间 daterange,
筛选变化重置第一页)+ 行操作(详情抽屉/删除确认框,级联消息画像评估
推送日志,末页删空自动回退一页)
- 租户切换器:超管专用(fetchTenantList 下拉,默认第一个,切换联动双页签
并关抽屉);租户管理员固定登录态 tenant_slug,无切换器只有标签
- 详情抽屉:元数据(状态/来源/站点/IP 归国/session/设备)+ 画像 chips
(ElTag 键值)+ 评估块(意向/理由/联系方式/更正次数)+ 消息流气泡
(user 右 assistant 左,时间直显库内 naive UTC 不换算,与筛选同口径)
- 推送日志页签(列表平行):状态筛选(pending/success/failed/skipped)
+ 分页表格(类型/状态/尝试/outcome/HTTP/payload 大小/会话/错误)——
列表接口不回大 payload,仅服务端 payload_size
- api/conversations.ts 实装调用函数并按 data_routes.py 实际响应修正类型
(IntentLevel 三值/messages.time/详情扁平 evaluation+profile 块/
PushLogItem 全字段),新增枚举中文映射(intentLabel 等,未知值回退原样)
- vitest +9(conversations API 契约:URL/参数/白名单/映射),总 45;
后端不动(pytest 577 基线复核)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-13 17:31:12 +08:00 |
|
浅念
|
f640889f22
|
feat: 仪表盘(租户卡片墙/平台总览/时间切换)+ 顺手:409契约锁与死代码
- 仪表盘视图:超管=平台总览四指标卡(/api/platform/stats 合并视图)+
租户卡片墙(逐租户 ?tenant= 下钻,含停用租户);租户管理员=自己
指标卡(/tenants/{slug}/stats,slug 取登录态);口径文案照
stats.py docstring(线索=留资三选一/成功率分母0显—等)
- 时间范围快捷切换(今天/近7天/近30天)→ from/to 本地日期串;
utils/statsRange.ts 纯函数 + epoch 防快速切换过期响应竞写
- 空数据态:无租户 ElEmpty / 单租户零数据自然显 0 与 —
- api/stats.ts 补 fetchPlatformStats/fetchTenantStats;tenants.ts 补
fetchTenantList(卡片墙枚举,其余仍留 Task 6)
- vitest +11(statsRange 6 + stats API 5,总 36)
- 顺手1:test_auth must_change 409 测试补 detail 断言,锁死前后端
契约文案(client.ts MUST_CHANGE_DETAIL)
- 顺手2:删除 beforeEach.ts 的 isUnauthorizedError 死分支与 ApiStatus
import(模板 isHttpError 判自建 ApiError 恒 false,分支不可达)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-13 16:59:12 +08:00 |
|
浅念
|
3973abea8b
|
feat: API层与认证流(client拦截/守卫/登录改密实装/域API骨架/vitest)
- 自建轻量 axios client(src/api/client.ts):Bearer 注入、401 清会话跳登录
(login 请求除外)、409 精确匹配"必须先修改初始密码"跳强制改密(区别于并发
冲突 409)、429/网络错误统一 ElMessage、ApiError 标准化、showErrorMessage
可opt-out——模板 utils/http 的 {code,msg,data} 信封与后端裸 HTTP 语义不符故弃用
- Pinia auth store(src/store/modules/auth.ts):token/role/tenant_slug/
must_change 落地并持久化(all-kefu-auth key),login/logout/changePassword/
会话过期/强制改密跳转(动态 import 断循环)
- 路由守卫:token 事实源判定、must_change 全站门(除改密页)、UserInfo 由登录
快照派生(后端无用户信息端点);user store 残留自愈
- 登录页实装(去除角色调试开关)、强制改密页实装;用户菜单/锁屏对接真实 logout
- 域 API 骨架:tenants/config/conversations/stats/settings(类型+端点常量)
- mask 哨兵助手:__SET__ ↔ 已设置 表单语义
- vitest 25 例(client 11/store 8/mask 6);登录页拖拽验证 reset 空引用修复
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-13 16:28:11 +08:00 |
|
浅念
|
6afa31ec85
|
fix: 脚手架审查修复(dts入库保首跑/esnext注释/模板changelog清理)
- auto-imports.d.ts / components.d.ts 出 .gitignore 并入库(已重新生成):新克隆/CI 首跑 pnpm build 直接可用,Phase 4 部署依赖
- vite.config.ts build.target=esnext 补注释:Windows 本机 es2015 曾触发 esbuild 0xC0000409 原生崩溃,改后稳定;管理后台仅面向现代浏览器
- 删除模板自带 CHANGELOG.md / CHANGELOG.zh-CN.md(约 650 行 x2,与本项目无关)
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-13 15:03:30 +08:00 |
|
浅念
|
78ff060420
|
feat: art-design-pro 脚手架落地与品牌化(八页骨架/代理配置/权限菜单)
- 模板 art-design-pro(MIT)GitHub 直连克隆后裁剪落地 admin/:删除演示页面/示例数据/mock/未用组件,保留构建与依赖清单
- 品牌化:应用名/标题/侧栏与登录页 logo/浏览器 favicon 全部替换为 all-kefu 自有资源(static/kefu-small.png),中文界面
- 八页骨架:login / force-change-password / dashboard / tenants / conversations / config / stats / settings 占位页 + 6 组路由模块
- 权限菜单:meta.roles 前端过滤,super 全量,tenant 隐藏 租户管理/平台设置(角色值与后端一致)
- 开发代理:/api 直转 + /api/public 与 /static 携带租户 Host 改写(VITE_TENANT_PREVIEW_HOST),适配后端 TenantHostMiddleware
- 认证 API 为开发桩(角色调试开关),Task 3 对接真实登录
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
2026-10-13 14:51:24 +08:00 |
|