1. 29 Jul, 2026 2 commits
    • 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