1. 29 Jul, 2026 7 commits
    • feat(*): 重做 admin/web/site 配色,顶部栏改搜索+个人信息区并加多标签页 · 2aa802b3
      配色(三个包统一为品牌紫 #4f46e5 + 冷灰 slate):
      - admin: src/assets/styles/index.css 扩成完整设计变量(颜色/圆角/阴影/尺寸)
      - web: uno.config.ts 加 brand 色阶与 card、btn-primary shortcut,index.scss 同步变量
      - site: 新增 uno.config.ts 与 assets/css/main.css,并在 nuxt.config 注册
      - 登录页改深色渐变背景,tab 改 segmented 胶囊,输入框 focus 加品牌色 ring
      - 两个包 utils/toast.ts 里 JS 注入的配色一并替换
      
      顶部栏与标签页(admin / web 同构):
      - 去掉顶部导航链接,改为 品牌 + 搜索框(过滤菜单跳转)+ 个人信息区(操作菜单)
      - 新增 stores/tabs.ts 与 tabs-bar.vue,支持多标签页与关闭其他/关闭全部
      - 标签以 route.fullPath 为标识,文案取 route.meta.title,首页标签固定不可关闭
      - 登记标签的 watch 放在 basic-layout 而非 router.afterEach,登录页不产生标签
      - 浮层收起用全屏透明遮罩,不挂 document 事件监听
      
      site 全局 reset:
      - a 去掉下划线并继承颜色
      - button 去掉自带边框与底色(border-width: 0 保留 solid,避免以后 border 工具类失效;
        appearance: none 覆盖 antd reset 的 -webkit-appearance: button)
      
      同步根与 admin/web/site 的 CLAUDE.md
      
      Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
      chunhong.mu committed
    • feat(*): 为四个包搭建基础布局与示例页 · 0b5f754b
      - admin: 顶部导航 + 左侧双栏(一级 rail + 二级菜单),业务页改为 basic-layout 子路由
      - web: 顶部导航 + 左侧单栏,布局组件全部用 UnoCSS 工具类
      - mini: 新增三 tabBar(首页 / 消息 / 我的)与 message、mine 两个页面
      - site: 新增 layouts/default.vue 顶部导航布局,app.vue 改用 NuxtLayout
      - 各包补 api/demo.ts + services/demo-service.ts,示例页走完 pages→services→api 分层
      - 修 mini password 页用 navigateTo 跳 tabBar 页会静默失败的问题,改为 switchTab
      - 补 admin 缺失的 handleLogout
      - 同步根与四个子包 CLAUDE.md
      
      Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
      chunhong.mu committed
    • fix(*): skill 更新 · 8d5ae395
      chunhong.mu committed
    • docs(root): 为每个子包补充目录级 CLAUDE.md 并加作用域提醒 hook · 9c433a9f
      根 CLAUDE.md 一份大文件不够精准:改 site 时不需要 SDK 规则,改 mini 时
      需要的 pages.json/域名白名单等约定又放不进去。拆成 7 份目录级文件,
      各自只写该包独有且容易写错的内容,不重复根文件。
      
      新增:
      - packages/{admin,web,mini,site}/CLAUDE.md
      - common/{sdk,utils,vue-kit}/CLAUDE.md
      
      根 CLAUDE.md 加「动手前必读」索引表(路径 → 必读文件 → 覆盖要点),
      并在仓库结构树里标出这些文件。
      
      为保证实际生效(不只依赖文档里的一句约定),加 PreToolUse hook:
      scripts/claude-scope-hint.mjs 在 Edit/Write/MultiEdit 命中子包文件时,
      通过 hookSpecificOutput.additionalContext 注入「该包有独立 CLAUDE.md」
      与一句红线摘要。异常输入静默放行,不阻塞开发。
      
      eslint 忽略范围由 CLAUDE.md 扩为 **/CLAUDE.md:markdown 里的 ```ts
      片段会被当成真实模块校验(no-unused-expressions 等),与 ARCHITECTURE.md
      早先的处理方式一致。
      
      顺带修正根 CLAUDE.md 里 admin 的技术栈描述:antd 是声明未使用,
      不应写成技术栈的一部分。
      
      Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
      chunhong.mu committed
    • chore(root): 扩充 Claude 权限白名单并修正 defaultMode · 93364cbc
      减少改动本项目时的授权提示。三处问题:
      
      1. defaultMode 原为 "auto",不在 Claude Code 支持的取值内
         (default / acceptEdits / plan / bypassPermissions),实际未生效。
         改为 acceptEdits:文件编辑不再逐次询问(改动都在 git 里可回溯),
         Bash 仍按白名单控制。
      2. 部分条目缺尾部通配,带 `2>&1` 重定向就匹配不上,例如
         `pnpm -F * type-check` 匹配不了 `pnpm -F admin type-check 2>&1`。
         补齐 type-check*/lint*/build* 等形态与 --filter 长写法。
      3. 补充实际高频的只读命令:npx tsc --noEmit*、pnpm why/outdated、
         curl 对 localhost 的冒烟检查。
      
      未加入(有意):pnpm install(改 node_modules)、git add/commit(提交应人工确认)、
      rm/mv/cp/pkill(写操作)、npx vite|uni 与 node <file>(等价任意代码执行)、
      curl 任意 URL(可外传数据)。
      
      Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
      chunhong.mu committed
    • fix(*): 修正 mini 登录接口名并统一 SDK 错误提取 · b98979af
      mini 的验证码登录与密码登录均无法登录:接口名写错,后端返回
      HTTP 200 + rescode 9999 + "No signature of method"(不是 404),
      在 Network 面板里看起来是成功的,极易误判。
      
      问题来源:从 uniapp-mp-template 移植时带进来一份手写的
      packages/mini/src/api/auth.ts,接口名为 snake_case,后端没有这些方法。
      而 @common/sdk 里的 createLoginService/createVerifyService 才是正确实现
      (admin/web 一直在用)。login.vue 恰好横跨两者——图形验证码与发短信走
      SDK(正常),登录走手写实现(失败)。
      
      已用测试后端逐个验证:
      - loginWithPassword     返回"用户名或密码错误"(login_with_password  方法不存在)
      - loginWithVerifyCode   返回"验证码不正确"(login_with_mobile  方法不存在)
      - sendVerifyCode        返回"请输入正确的计算结果"(send_verifycode  方法不存在)
      - bind_phone            在 anonymous/system.wechat 下
      - 图形验证码不是接口,是同步拼 URL(get_image_code  方法不存在)
      
      改动:
      - mini 的 api/auth.ts 改为纯委托 @common/sdk 服务,删除手写实现;
        微信登录接 WechatLoginService,utils/sdk.ts 补 getWechatLoginService()
      - 新增 @common/sdk 的 resolveSdkError():SDK 业务错误 reject 的是纯字符串
        (拦截器 Promise.reject(errorMsg)),网络错误才是对象,原先各包写的
        err?.message || "失败" 会把后端真实原因吞成兜底文案。admin/web/mini
        三个包的 auth-service 全部换上
      - login.vue 不再直连 SDK:发短信走 services、验证码走 api,符合分层约定;
        图形验证码校验失败时自动换一张
      - CLAUDE.md 加两条硬规则,ARCHITECTURE.md 补「登录/验证码接口一律走 SDK
        服务」对照表与「SDK 错误 reject 是字符串」说明
      
      校验:pnpm lint 全绿,4 包 type-check 与 build:test 通过,
      mini 产物中确认为 camelCase 接口名
      
      Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
      chunhong.mu committed
    • perf(*): 优化模板 · 527c65d0
      chunhong.mu committed
  2. 28 Jul, 2026 1 commit
    • refactor(*): 改造为前端 Monorepo 模板工程 · 17eea8db
      包命名通用化,移植小程序模板与公共代码,补齐 Claude Code 配置。
      
      包结构:
      - qqqf-admin → admin(Vue3 SPA 后台)
      - official-site-web → site(Nuxt 3 官网)
      - qqqf-mp → mini(UniApp 小程序)
      - 新增 web(Vue3 SPA H5/客户端),删除空目录 qqqf-web
      
      公共代码:
      - @common/utils 补齐 common/date-time/mask/money/regex 纯工具函数
      - @common/vue-kit 新增平台无关的 useLoading
      - @common/sdk 去业务化:ClientId/Product 枚举改为 string 类型,移除硬编码的
        passport/wx-distributer 域名与监控上报地址凭证,改由 SdkConfig 与
        webMonitor.setupEndpoint() 注入;根入口不再导出小程序模块,
        避免 Web 项目引入 uni.* 类型
      
      mini 包以 uniapp-mp-template 为准重建,SDK 接 @common/sdk:新增
      stores/services/api-auth/composables/page-layout/utils-sdk(懒加载单例)
      
      去业务化:所有 .env.* 清空为占位符(原含真实域名与 client secret),
      config 中业务值改为 TODO 占位
      
      Claude Code 配置:
      - .claude/settings.json(权限白名单 + Figma MCP)
      - .claude/skills 移植 4 个 skill 并适配 monorepo,
        api-diff-sync 的文档根目录由硬编码改为可配置
      - 新增 CLAUDE.md,重写 ARCHITECTURE.md
      
      顺带修复:
      - 登录不持久化 Token:services/auth-service 补齐
        saveToken2Storage + sdk.core.loginByToken + store 三步
      - 跨端崩溃:token-manager/web-monitor 的 window 访问加 typeof 守卫
      - dev:project/build:project 对 Vue/Nuxt 项目忽略 --env,
        现按 dev:<env>/build:<env> 脚本执行
      - .env.* 中的 NODE_ENV=production 导致 dev server 报警告,已移除
      - unocss 0.58/0.64 与 Nuxt 3.21 的 Vite 7 不兼容,升级至 66.x
      - App.vue 的 @import 改为 @use(Dart Sass 3.0 将移除 @import)
      - 修复 pnpm-workspace.yaml 的 BOM 与 build-changed.ts 的 lint 报错
      
      校验:pnpm lint 全绿,4 个包 type-check 通过,
      4 个包 dev 与 build(含 build:project --env)全部通过
      
      Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
      chunhong.mu committed
  3. 25 Jun, 2026 2 commits
  4. 24 Jun, 2026 4 commits
  5. 23 Jun, 2026 9 commits
  6. 22 Jun, 2026 6 commits
  7. 18 Jun, 2026 5 commits