优化海报保存逻辑,提升导出清晰度,兼容 iOS 设备。更新相关注释以反映画布尺寸和导出分辨率的变化。同时,调整小程序环境变量处理逻辑,确保生成的版本码正确,避免开发版过期问题。
This commit is contained in:
25
.cursor/rules/存客宝AI-项目工作流.mdc
Normal file
25
.cursor/rules/存客宝AI-项目工作流.mdc
Normal file
@@ -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 命名为合适的中文名称,放在**项目根目录**下
|
||||
@@ -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) {
|
||||
|
||||
@@ -256,7 +256,7 @@
|
||||
<view class="modal-close" bindtap="closePosterModal">✕</view>
|
||||
</view>
|
||||
|
||||
<!-- 海报预览 -->
|
||||
<!-- 海报预览:画布 300x450 避免 iOS transform 裁切;保存时导出 2 倍分辨率 -->
|
||||
<view class="poster-preview">
|
||||
<canvas canvas-id="posterCanvas" class="poster-canvas" style="width: 300px; height: 450px;"></canvas>
|
||||
</view>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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" // 默认正式版,避免生成开发版码导致「开发版已过期」
|
||||
}
|
||||
|
||||
// 转账配置
|
||||
|
||||
@@ -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,
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user