diff --git a/.cursor/rules/存客宝AI-项目工作流.mdc b/.cursor/rules/存客宝AI-项目工作流.mdc new file mode 100644 index 00000000..fffe5f18 --- /dev/null +++ b/.cursor/rules/存客宝AI-项目工作流.mdc @@ -0,0 +1,25 @@ +--- +description: 存客宝 AI 集成与项目开发工作流 +alwaysApply: true +--- + +# 存客宝 AI 项目开发工作流 + +## 1. 前置工作流 + +每次对话开始时,**先用本机小模型全量读取并调用** `Z:\SynologyDrive\存客宝AI` 的能力,再开始后续开发。 + +## 2. 开发与验证 + +- **每次使用**时调用存客宝 AI,对当前项目进行验证与开发 +- 每次对话时,结合存客宝 AI 的**多功能同步讨论**来修改代码 +- 将上述流程同步更新到对应 Skill + +## 3. 项目级 Skill 生成 + +开发过程中,需从存客宝 AI 抽取能力并生成针对本项目的 Skill: + +1. 该 Skill 用于管理整个项目,应继承存客宝 AI 的相应功能,并结合本项目已有代码与架构 +2. **详细阅读**项目内所有代码 +3. 按你认为**最佳分工方式**,对项目代码的各个域进行模块划分 +4. 将生成的 Skill 命名为合适的中文名称,放在**项目根目录**下 diff --git a/miniprogram/pages/read/read.js b/miniprogram/pages/read/read.js index f0cedc92..eb7f1485 100644 --- a/miniprogram/pages/read/read.js +++ b/miniprogram/pages/read/read.js @@ -1210,14 +1210,15 @@ Page({ this.setData({ showPosterModal: false }) }, - // 保存海报到相册(与海报绘制尺寸一致,必须传 destWidth/destHeight 否则部分机型导出失败) + // 保存海报到相册:画布 300x450 兼容 iOS,导出 2 倍 600x900 提升清晰度(宽高比 2:3 不变) savePoster() { const width = 300 const height = 450 + const exportScale = 2 wx.canvasToTempFilePath({ canvasId: 'posterCanvas', - destWidth: width, - destHeight: height, + destWidth: width * exportScale, + destHeight: height * exportScale, fileType: 'png', success: (res) => { if (!res.tempFilePath) { diff --git a/miniprogram/pages/read/read.wxml b/miniprogram/pages/read/read.wxml index dbc9d37e..37375214 100644 --- a/miniprogram/pages/read/read.wxml +++ b/miniprogram/pages/read/read.wxml @@ -256,7 +256,7 @@ - + diff --git a/soul-api/.env b/soul-api/.env index 78d75d4f..077a905f 100644 --- a/soul-api/.env +++ b/soul-api/.env @@ -14,6 +14,8 @@ WECHAT_APPSECRET=3c1fb1f63e6e052222bbcead9d07fe0c WECHAT_MCH_ID=1318592501 WECHAT_MCH_KEY=wx3e31b068be59ddc131b068be59ddc2 WECHAT_NOTIFY_URL=https://soul.quwanzhi.com/api/miniprogram/pay/notify +# 小程序码/订阅消息跳转版本:formal=正式版(默认) | trial=体验版 | developer=开发版 +WECHAT_MINI_PROGRAM_STATE=formal # 微信转账配置(API v3) WECHAT_APIV3_KEY=wx3e31b068be59ddc131b068be59ddc2 diff --git a/soul-api/internal/config/config.go b/soul-api/internal/config/config.go index e457c966..354a1726 100644 --- a/soul-api/internal/config/config.go +++ b/soul-api/internal/config/config.go @@ -120,9 +120,9 @@ func Load() (*Config, error) { if wechatNotifyURL == "" { wechatNotifyURL = "https://soul.quwanzhi.com/api/miniprogram/pay/notify" // 默认回调地址 } - wechatMiniProgramState := os.Getenv("WECHAT_MINI_PROGRAM_STATE") + wechatMiniProgramState := strings.TrimSpace(os.Getenv("WECHAT_MINI_PROGRAM_STATE")) if wechatMiniProgramState != "developer" && wechatMiniProgramState != "trial" { - wechatMiniProgramState = "formal" // 默认正式版 + wechatMiniProgramState = "formal" // 默认正式版,避免生成开发版码导致「开发版已过期」 } // 转账配置 diff --git a/soul-api/internal/wechat/miniprogram.go b/soul-api/internal/wechat/miniprogram.go index 0d23fed4..28224d77 100644 --- a/soul-api/internal/wechat/miniprogram.go +++ b/soul-api/internal/wechat/miniprogram.go @@ -216,9 +216,11 @@ func GenerateMiniProgramCode(scene, page string, width int) ([]byte, error) { scene = scene[:32] } + // 仅 developer/trial 生成对应版本码,其余一律正式版,避免扫码提示「开发版已过期」 envVersion := "release" - if cfg != nil && cfg.WechatMiniProgramState != "" { - switch cfg.WechatMiniProgramState { + if cfg != nil { + state := strings.TrimSpace(cfg.WechatMiniProgramState) + switch state { case "developer": envVersion = "develop" case "trial": @@ -227,6 +229,9 @@ func GenerateMiniProgramCode(scene, page string, width int) ([]byte, error) { envVersion = "release" } } + if cfg != nil { + fmt.Printf("[GenerateMiniProgramCode] env_version=%s (WechatMiniProgramState=%q)\n", envVersion, cfg.WechatMiniProgramState) + } reqBody := map[string]interface{}{ "scene": scene, "page": page, diff --git a/soul-api/soul-api b/soul-api/soul-api index e72095d3..40d2af45 100644 Binary files a/soul-api/soul-api and b/soul-api/soul-api differ