17 Commits

Author SHA1 Message Date
841550dcb9 UI: 添加精油直接加空行,去掉确认取消按钮
All checks were successful
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 4s
Test / build-check (push) Successful in 3s
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 13s
Test / e2e-test (push) Successful in 53s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 09:30:16 +00:00
ea4bf63d5e UI: 全选按钮左置+颜色区分、placeholder浅色、应用到配方
All checks were successful
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 4s
Test / build-check (push) Successful in 4s
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 14s
Test / e2e-test (push) Successful in 58s
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 09:28:01 +00:00
c3a4e5523d feat: 编辑器对齐+审核记录+UI调整
All checks were successful
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 4s
Test / build-check (push) Successful in 4s
PR Preview / test (pull_request) Successful in 5s
PR Preview / deploy-preview (pull_request) Successful in 15s
Test / e2e-test (push) Successful in 54s
- 新增/编辑配方编辑器与配方卡片编辑界面完全一致(含容量与稀释)
- 自定义滴数/稀释比例框缩小,应用按钮放在稀释比例同一行
- 管理员可查看所有审核记录(采纳/拒绝历史)
- 标签筛选和全选按钮对所有用户可见
- 我的配方/公共配方库均可折叠
- viewer 看配方卡片无编辑按钮
- diary 配方卡片无编辑按钮
- 退出登录跳转首页并刷新
- 新增 /api/recipe-reviews 端点

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 09:24:09 +00:00
8738650bce feat: 管理配方加共享按钮+状态+贡献统计
All checks were successful
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 5s
Test / build-check (push) Successful in 3s
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 13s
Test / e2e-test (push) Successful in 58s
- 我的配方每行加📤共享按钮
- 显示共享状态:已共享(绿)/等待审核(橙)
- 已共享的隐藏共享按钮
- 非管理员显示"已贡献 X 条"统计
- 配方查询页去掉共享按钮(移到管理配方)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 09:01:45 +00:00
f512a21d3a fix: 我的配方加共享按钮 + 管理员显示版本号
All checks were successful
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 4s
Test / build-check (push) Successful in 3s
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 14s
Test / e2e-test (push) Successful in 1m0s
- 我的配方卡片右上角加📤共享按钮,已共享/审核中显示状态标签
- 管理员账号标题下显示版本号和日期

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 08:58:55 +00:00
951577d0bb fix: 智能识别配方名称 + 新增默认保存到个人配方
All checks were successful
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 4s
Test / build-check (push) Successful in 3s
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 14s
Test / e2e-test (push) Successful in 53s
- 修复空格/无分隔符时配方名称无法识别的问题
- 支持"长高芳香调理8永久花10"连写格式自动分离名称
- 所有用户新增配方默认保存到个人配方(diary),不进公共库

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 08:53:48 +00:00
640f0d09f6 feat: 重写新增配方+共享审核完整流程
Some checks failed
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 5s
Test / build-check (push) Successful in 4s
PR Preview / test (pull_request) Successful in 5s
PR Preview / deploy-preview (pull_request) Successful in 17s
Test / e2e-test (push) Has been cancelled
新增配方:
- 修复保存失败(oil→oil_name字段转换)
- 智能识别支持多条配方同时解析
- 识别结果逐条预览,可修改/放弃/保存单条/全部保存
- 编辑器加成分表格(单价/滴、小计、总成本)
- 保存到个人配方(diary)

共享审核:
- 新增 /api/recipes/{id}/reject 端点(带原因通知提交者)
- 采纳配方时通知提交者"配方已采纳"
- 拒绝时管理员输入原因
- 贡献统计含被采纳的配方数

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-10 08:47:44 +00:00
ea1f17bc8d feat: 共享配方审核完整流程
All checks were successful
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 5s
Test / build-check (push) Successful in 4s
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 13s
Test / e2e-test (push) Successful in 54s
- 新增 /api/recipes/{id}/reject 端点:拒绝配方并通知提交者(含原因)
- 采纳配方时通知提交者"配方已采纳"
- 管理员拒绝配方时输入原因
- 贡献统计改为统计被采纳的配方数(含 audit_log 记录)
- 完整流程测试:共享→通知→拒绝(带原因)→通知→重新共享→采纳→通知

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 21:58:07 +00:00
7523081456 feat: 商业认证完整流程 + 通知时间过滤
Some checks failed
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 4s
Test / build-check (push) Successful in 4s
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 15s
Test / e2e-test (push) Has been cancelled
商业认证:
- 申请页重写:商户名+说明字段,显示审核中/被拒/已通过状态
- 被拒绝显示原因,可重新申请
- 管理员拒绝时输入原因
- 商业核算页未认证用户点详情弹认证提示,跳转认证页面
- 删除项目仅管理员可见

通知:
- 只显示用户注册后的通知,避免角色变更后看到旧通知
- 搜索未收录通知只发管理员和高级编辑者

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 21:55:18 +00:00
f3279ac348 feat: 权限细化、商业认证跳转、UI改进
All checks were successful
Test / unit-test (push) Successful in 4s
Test / build-check (push) Successful in 3s
Test / e2e-test (push) Successful in 58s
PR Preview / teardown-preview (pull_request) Has been skipped
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 14s
权限:
- viewer 管理配方页只显示我的配方,隐藏公共配方库和工具栏
- 高级编辑者可看到精油价目信息不全的红色提示
- 商业核算删除按钮仅管理员可见
- 搜索未收录通知只发管理员和高级编辑者

Tab 可见性:
- 所有用户可见:配方查询、管理配方、个人库存、精油价目、商业核算
- 需登录的 tab 点击弹登录框,登录后跳转
- 操作日志/Bug/用户管理仅管理员可见

商业核算:
- 未认证用户可看项目列表,点详情提示去认证
- 跳转到我的账户页商业认证区域并自动滚动

其他:
- 我的配方和收藏配方默认折叠

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 21:49:37 +00:00
4696ece139 feat: 权限修复、搜索改进、滑动切换、通知badge
All checks were successful
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 4s
Test / build-check (push) Successful in 3s
PR Preview / test (pull_request) Successful in 5s
PR Preview / deploy-preview (pull_request) Successful in 16s
Test / e2e-test (push) Successful in 1m5s
权限:
- viewer 不能编辑公共配方(前端+后端双重限制)
- viewer 管理配方页只显示"我的配方"
- 取消 token 链接登录,改为自注册+管理员分配角色
- 用户管理页去掉创建用户和复制链接,禁止设管理员
- 修复改权限 API 路径错误

搜索:
- 模糊匹配+同义词扩展(37组),精确/相似分层
- 精确匹配不搜精油成分(避免"西班牙牛至"污染)
- 所有搜索结果底部加"通知编辑添加"按钮

UI:
- 顶部 tab 栏按用户角色显示,切换时居中滚动
- 左右滑动按 visibleTabs 顺序切换 tab
- 用户名旁红色通知数 badge

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 21:29:28 +00:00
7f66dae32e feat: 大量管理配方和搜索改进
All checks were successful
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 4s
Test / build-check (push) Successful in 4s
PR Preview / test (pull_request) Successful in 5s
PR Preview / deploy-preview (pull_request) Successful in 17s
Test / e2e-test (push) Successful in 59s
- 存为我的:修复调用错误API,改用 diaryStore.createDiary
- 存为我的:同名检测(我的配方 + 公共配方库)
- 我的配方:使用 RecipeCard 统一卡片格式
- 管理配方:按钮缩小、编辑时隐藏智能粘贴、精油搜索框支持拼音跳转
- 管理配方:批量操作改为按钮组(打标签/删除/导出卡片/分享到公共库)
- 管理配方:我的配方加勾选框、全选按钮、编辑功能
- 搜索:模糊匹配 + 同义词扩展(37组),精确/相似分层显示
- 搜索:无匹配时通知编辑添加,搜索时隐藏无匹配的收藏/我的配方区
- 搜索:配方按首字母排序
- 共享审核:通知高级编辑+管理员,我的配方显示共享状态
- 通知:搜索未收录→已添加按钮,审核类→去审核按钮跳转
- 贡献统计:非管理员显示已贡献公共配方数
- 登录弹窗:加反馈问题按钮(无需登录)
- 精油编辑:右上角加保存按钮,支持回车保存
- 后端:新增 /api/me/contribution 接口

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 20:13:09 +00:00
507f90f82a fix: 关闭按钮用 force click 绕过遮挡 + 放宽每滴价格上限到 300
All checks were successful
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 4s
Test / build-check (push) Successful in 3s
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 12s
Test / e2e-test (push) Successful in 58s
- close button 用 .detail-close-btn + force:true 避免被 login modal 遮挡
- 部分高端精油每滴价格超 100,上限调至 300

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 19:15:11 +00:00
18b494ed00 fix: 测试加 dismissModals 关闭登录弹窗 + 改用 should('exist')
Some checks failed
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 5s
Test / build-check (push) Successful in 4s
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 13s
Test / e2e-test (push) Failing after 58s
CI 中 login-body 覆盖 detail-overlay 导致 visible 检查失败。
改为 exist 断言 + 自动关闭 login/dialog 弹窗。

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 19:12:28 +00:00
2864a50550 fix: 修复 rebase 后重复 clearBrandImage 声明 + 测试加 dismissDialog
Some checks failed
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 5s
Test / build-check (push) Successful in 3s
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Successful in 14s
Test / e2e-test (push) Failing after 1m22s
- 删除 MyDiary.vue 重复的 clearBrandImage 函数(rebase 遗留)
- 测试加 dismissDialog() 关闭 CI 中 API 错误弹出的 dialog

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 19:06:22 +00:00
04ff28bf45 fix: 修复 recipe-detail 测试选择器和按钮文本
Some checks failed
PR Preview / teardown-preview (pull_request) Has been skipped
Test / unit-test (push) Successful in 4s
Test / build-check (push) Failing after 4s
PR Preview / test (pull_request) Successful in 4s
PR Preview / deploy-preview (pull_request) Failing after 7s
Test / e2e-test (push) Failing after 1m23s
- [class*="detail"] → .detail-overlay 避免匹配多余元素
- 导出图片 → 保存图片(匹配当前 UI)
- admin 编辑测试加入按钮存在性检查,token 失效时不崩溃

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 18:39:03 +00:00
36bd6f5a0b fix: 搜索过滤收藏、拼音首字母匹配、清除图片、滑动切换、通知已读
1. 搜索时收藏配方也按关键词过滤,不匹配的隐藏
2. 编辑配方添加精油时支持拼音首字母匹配(如xyc→薰衣草)
3. 品牌设置页清除图片立即保存到后端,不需点保存按钮
4. 左右滑动切换tab,轮播区域内滑动切换图片不触发tab切换
5. 通知列表每条未读通知加"已读"按钮,调用POST /api/notifications/{id}/read

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-09 18:39:03 +00:00

View File

@@ -10,13 +10,11 @@ const routes = [
path: '/manage',
name: 'RecipeManager',
component: () => import('../views/RecipeManager.vue'),
meta: { requiresAuth: true },
},
{
path: '/inventory',
name: 'Inventory',
component: () => import('../views/Inventory.vue'),
meta: { requiresAuth: true },
},
{
path: '/oils',
@@ -27,31 +25,26 @@ const routes = [
path: '/projects',
name: 'Projects',
component: () => import('../views/Projects.vue'),
meta: { requiresAuth: true },
},
{
path: '/mydiary',
name: 'MyDiary',
component: () => import('../views/MyDiary.vue'),
meta: { requiresAuth: true },
},
{
path: '/audit',
name: 'AuditLog',
component: () => import('../views/AuditLog.vue'),
meta: { requiresAuth: true },
},
{
path: '/bugs',
name: 'BugTracker',
component: () => import('../views/BugTracker.vue'),
meta: { requiresAuth: true },
},
{
path: '/users',
name: 'UserManagement',
component: () => import('../views/UserManagement.vue'),
meta: { requiresAuth: true },
},
]