0bc7ee02dc
小程序端从零建起来了,并在微信开发者工具里真机模拟跑通: 扫 scene=t1-k17 → 显示「示范职业学校 / 2026年9月机电专业认定材料收集 / 尚未发布」。 交付: · frontend-mp/(uni-app,官方 uni-preset-vue#vite-ts 模板),appid 已填 · src/pages/index/index.vue 扫码落地页:读 scene → 调后端 → 显示 「哪个学校 / 填什么 / 现在能不能填」 · GET /api/v1/mp/scene-context(匿名):登录前的落地页查询 · 主题色与 PC 管理端同一套(腾讯云 TDesign 色板),两端视觉一致 为什么落地页必然是匿名接口: 学生扫开的第一屏要回答"这是哪个学校、要填什么、能不能填", 而这发生在绑定身份之前。它与契约里的 POST /mp/login(code+scene 换 session) 不是一回事 —— 那个要换 openid,属 M3。 ⚠️ 一个必踩的坑(撞上并绕开了): FillTenantLineHandler.getTenantId() 在**匿名请求下直接抛 40101**, 所以不能用 taskMapper.selectById()。正确写法是专用 Mapper + 每条查询 @InterceptorIgnore(tenantLine="true") 并显式带 tenant_id(项目注释称此为 一次代码审查点)。见 module/mp/mapper/MpSceneMapper.java —— 把这几条集中在 一个文件里,正是为了让"关掉框架保护后由人保证隔离"这件事有地方审。 ⚠️ scene 可穷举(t1-k1、t1-k2…),所以匿名接口: ① 只返回落地页必须的最少信息,不往里加"顺带能查出来"的东西; ② 按 IP 限流(20 次/分钟,Redis INCR,复用项目的 GATE_RATE_LIMITED 40071)。 E2E 专门验了"前 20 次通过、第 21 次起被限、清掉计数器立刻恢复"。 状态文案分五种而不是合并成"当前不可填报":学生的下一步动作完全不同 —— 「已截止」要找班主任、「已暂停」要等通知、「尚未发布」是根本不该现在扫。 顺带记两个环境坑(写进交接摘要): · 微信开发者工具的「服务端口」默认关闭,HBuilderX 运行时报 `IDE service port disabled` 然后退出,**调不起开发者工具**。 解法:开发者工具 → 设置 → 安全设置 → 服务端口 → 开启; 或直接「导入项目」dist/dev/mp-weixin 绕过。 · HBuilderX 把这个项目当 CLI 型项目,产物在 dist/dev/mp-weixin, **不是** unpackage/。模拟扫码要在「编译模式」里设 进入场景=扫描二维码、 启动参数 scene=t1-k17。 · <style lang="scss"> 需要装 sass(模板没带),已 pnpm add -D sass。 ⚠️ 对上线计划最重要的一条结论(已写进交接摘要): 开发版(develop)只有开发者能扫、且会过期;体验版(trial)只有体验成员能扫; **只有正式版(release)学生才能扫**,而它需要提交审核,涉及小程序类目与资质。 所以 C1「小程序资质法务确认」不是"以后再说",它直接决定学生能不能开始填报。 已知缺口: · 填报主流程(/mp/login 门禁核验 表单填写)属 M3; 现在点「开始填报」给的是明确的"开发中"提示,不是静默无反应。 · frontend-mp 还没套项目既有的 ESLint/Stylelint 规范。 验收:e2e-m1-scene.py 31/31;八条 E2E 合计 389 项断言全通过; 微信开发者工具里人工确认页面渲染与 scene 传递正确。
73 lines
2.9 KiB
JSON
73 lines
2.9 KiB
JSON
{
|
|
"name": "uni-preset-vue",
|
|
"version": "0.0.0",
|
|
"scripts": {
|
|
"dev:custom": "uni -p",
|
|
"dev:h5": "uni",
|
|
"dev:h5:ssr": "uni --ssr",
|
|
"dev:mp-alipay": "uni -p mp-alipay",
|
|
"dev:mp-baidu": "uni -p mp-baidu",
|
|
"dev:mp-jd": "uni -p mp-jd",
|
|
"dev:mp-kuaishou": "uni -p mp-kuaishou",
|
|
"dev:mp-lark": "uni -p mp-lark",
|
|
"dev:mp-qq": "uni -p mp-qq",
|
|
"dev:mp-toutiao": "uni -p mp-toutiao",
|
|
"dev:mp-harmony": "uni -p mp-harmony",
|
|
"dev:mp-weixin": "uni -p mp-weixin",
|
|
"dev:mp-xhs": "uni -p mp-xhs",
|
|
"dev:quickapp-webview": "uni -p quickapp-webview",
|
|
"dev:quickapp-webview-huawei": "uni -p quickapp-webview-huawei",
|
|
"dev:quickapp-webview-union": "uni -p quickapp-webview-union",
|
|
"build:custom": "uni build -p",
|
|
"build:h5": "uni build",
|
|
"build:h5:ssr": "uni build --ssr",
|
|
"build:mp-alipay": "uni build -p mp-alipay",
|
|
"build:mp-baidu": "uni build -p mp-baidu",
|
|
"build:mp-jd": "uni build -p mp-jd",
|
|
"build:mp-kuaishou": "uni build -p mp-kuaishou",
|
|
"build:mp-lark": "uni build -p mp-lark",
|
|
"build:mp-qq": "uni build -p mp-qq",
|
|
"build:mp-toutiao": "uni build -p mp-toutiao",
|
|
"build:mp-harmony": "uni build -p mp-harmony",
|
|
"build:mp-weixin": "uni build -p mp-weixin",
|
|
"build:mp-xhs": "uni build -p mp-xhs",
|
|
"build:quickapp-webview": "uni build -p quickapp-webview",
|
|
"build:quickapp-webview-huawei": "uni build -p quickapp-webview-huawei",
|
|
"build:quickapp-webview-union": "uni build -p quickapp-webview-union",
|
|
"type-check": "vue-tsc --noEmit"
|
|
},
|
|
"dependencies": {
|
|
"@dcloudio/uni-app": "3.0.0-5020420260813003",
|
|
"@dcloudio/uni-app-harmony": "3.0.0-5020420260813003",
|
|
"@dcloudio/uni-app-plus": "3.0.0-5020420260813003",
|
|
"@dcloudio/uni-components": "3.0.0-5020420260813003",
|
|
"@dcloudio/uni-h5": "3.0.0-5020420260813003",
|
|
"@dcloudio/uni-mp-alipay": "3.0.0-5020420260813003",
|
|
"@dcloudio/uni-mp-baidu": "3.0.0-5020420260813003",
|
|
"@dcloudio/uni-mp-harmony": "3.0.0-5020420260813003",
|
|
"@dcloudio/uni-mp-jd": "3.0.0-5020420260813003",
|
|
"@dcloudio/uni-mp-kuaishou": "3.0.0-5020420260813003",
|
|
"@dcloudio/uni-mp-lark": "3.0.0-5020420260813003",
|
|
"@dcloudio/uni-mp-qq": "3.0.0-5020420260813003",
|
|
"@dcloudio/uni-mp-toutiao": "3.0.0-5020420260813003",
|
|
"@dcloudio/uni-mp-weixin": "3.0.0-5020420260813003",
|
|
"@dcloudio/uni-mp-xhs": "3.0.0-5020420260813003",
|
|
"@dcloudio/uni-quickapp-webview": "3.0.0-5020420260813003",
|
|
"vue": "^3.4.21",
|
|
"vue-i18n": "^9.1.9"
|
|
},
|
|
"devDependencies": {
|
|
"@dcloudio/types": "^3.4.8",
|
|
"@dcloudio/uni-automator": "3.0.0-5020420260813003",
|
|
"@dcloudio/uni-cli-shared": "3.0.0-5020420260813003",
|
|
"@dcloudio/uni-stacktracey": "3.0.0-5020420260813003",
|
|
"@dcloudio/vite-plugin-uni": "3.0.0-5020420260813003",
|
|
"@vue/runtime-core": "^3.4.21",
|
|
"@vue/tsconfig": "^0.1.3",
|
|
"sass": "^1.105.0",
|
|
"typescript": "^4.9.4",
|
|
"vite": "5.2.8",
|
|
"vue-tsc": "^1.0.24"
|
|
}
|
|
}
|