Skip to content

实验帮 LabCalc · 微信小程序(前端)

懂实验设计的科研计算助手 —— 不只算配药,还提醒你怎么做对照。 面向细胞 / 动物 / 斑马鱼方向的湿实验科研人员。

完整产品设计见 产品设计方案.md。后端见同级 ../labcalc-server


一、技术栈

  • 微信小程序原生(WXML / WXSS / JS),无构建步骤,直接导入开发者工具
  • 纯前端计算离线可用;登录 / 云同步 / AI / 化合物搜索为联网增强(需后端)
  • LC50 剂量-反应曲线用原生 Canvas 2D(未引入 ECharts,控制包体)

二、目录结构

labcalc-miniprogram/
├── app.json                 全局配置(注册 43 页面 + tabBar + 全局组件 refs)
├── styles/icons.wxss         统一线性图标(脚本生成的 SVG data-URI,class="ic ic-<key>")
├── app.js / app.wxss        全局逻辑 + 设计令牌(#0f766e 主色)
├── project.config.json      ★ AppID 填这里
├── utils/
│   ├── calc.js              浓度/稀释/百分比/给药/离心 纯计算
│   ├── calc-bio.js          溶剂对照/斑马鱼/Tricaine/显微注射
│   ├── calc-tox.js          LC50/EC50(Probit + Reed-Muench)+ TI
│   ├── calc-animal.js       采血量 / 麻醉给药
│   ├── calc-cell.js         铺板 / 转染 / 血球计数
│   ├── api.js               ★ 后端 BASE_URL 填这里
│   ├── auth.js              登录态 / token
│   ├── ui.js                复制 / 本地历史 / toast
│   └── records-store.js     实验记录本本地存储
└── pages/                   24 个页面(见下)

页面清单(36 注册 + ai 暂下线保留)

分组页面联网?
Tabindex 工具首页、mine 我的否 / 登录
浓度molarity 摩尔浓度、dilution 稀释、serial 梯度稀释、percent 百分比、solvent 智能溶剂对照★
动物animal(hub)、hed 种间换算、random 随机分组(ARRIVE)、dosing 批量给药、anesthesia 麻醉、blood 采血、vehicle 体内配方
斑马鱼zebrafish(hub)、zf-dpf 日历、zf-water 工作液配制★、zf-tricaine 麻醉、zf-inject 注射、zf-lc50 LC50/EC50★、zf-anatomy 部位/表型图谱
细胞cell(hub)、cell-plating 铺板、cell-transfection 转染、cell-count 计数
浓度计算concentration(hub)、mw 分子量、molarity 摩尔浓度(四向求解)、dilution 稀释、serial 梯度稀释(含log)、percent 百分比、solvent 智能溶剂★
分子生物nucleic(hub)、nuc-conc 核酸浓度、nuc-tm 引物Tm、nuc-amount 量换算、nuc-ligation 连接反应、qpcr 相对定量★
蛋白protein(hub)、prot-gel SDS-PAGE配胶、prot-curve BCA/Bradford标曲、prot-antibody 抗体稀释
试剂buffer 缓冲液/试剂配方库
通用centrifuge 离心、od OD600 菌液浓度/倍增时间
我的mine 我的、history 计算历史、records 记录本否/登录
联网compound 化合物库需后端
暂下线ai AI助手(代码保留、未注册,后续按情况补充)

分享卡片utils/share.js 可把结果画成品牌图调起分享菜单;已接入 dilution / serial / buffer,其余页面按同一模板(隐藏 canvas + onShare)即可扩展。


三、🚀 上传前自检清单(Checklist)

按顺序逐项确认。纯计算功能不需要后端,可先上线;登录/AI/化合物搜索随后端接通。

A. 必改的两处

  • [ ] AppID —— 打开 project.config.json,把 "appid": "touristappid" 改成你的小程序真实 AppID (微信公众平台 → 开发 → 开发管理 → 开发者ID → AppID)
  • [ ] 后端地址 BASE_URL —— 打开 utils/api.js,把 const BASE_URL = ''; - 暂不上后端:保持空字符串(登录/AI/化合物会显示"待上线",其余照常) - 后端已部署:改成 const BASE_URL = 'https://labapi.你的备案域名';

B. 开发者工具设置

  • [ ] 用微信开发者工具打开本目录(labcalc-miniprogram)
  • [ ] 右上角「详情 → 本地设置」:
    • [ ] ES6 转 ES5:开启(项目已设 es6:true
    • [ ] 增强编译:开启
    • [ ] 上传代码时样式自动补全 / 压缩:可开
    • [ ] 不校验合法域名…: · 备案未完成、本地联调后端时 勾上(绕过域名校验,仅开发期有效) · 正式上传审核前取消勾选,确保走真实合法域名
  • [ ] 基础库版本 ≥ 3.6.0(project.config.json 已设 libVersion:"3.6.0"

C. 联网功能上线时(备案后端就绪后)

  • [ ] 微信公众平台 → 开发 → 开发管理 → 服务器域名request 合法域名添加:https://labapi.你的备案域名
  • [ ] utils/api.jsBASE_URL 已改为该域名(见 A)
  • [ ] 后端 .env 填入真实 WX_APPID + WX_APPSECRET (AppSecret:公众平台 → 开发管理 → 开发者ID → AppSecret,只存后端,绝不写进前端
  • [ ] 后端按 ../labcalc-server/deploy/README.md 部署完成,/healthz 返回 200

D. 功能自检(开发者工具模拟器逐页点)

  • [ ] 首页分区排版(浓度计算 / 实验领域[斑马鱼领衔] / 通用工具)10 项图标正常、可进入
  • [ ] 长按工具卡可收藏 → 首页「⭐收藏」置顶;复制后「我的→计算历史」有记录
  • [ ] 首次启动弹引导浮层(只一次)
  • [ ] 斑马鱼专区:简介卡 + 部位图谱(含侧视示意图+编号),图谱已前移到第 2 位
  • [ ] 斑马鱼水体给药 24 孔预设 = 1 mL
  • [ ] 斑马鱼水体给药:工作液配制模型(母液+E3水→总量+DMSO%+分装)
  • [ ] OD600:菌液浓度(菌种系数)+ 倍增时间两栏均出结果
  • [ ] 梯度稀释:填 C0/因子/点数/体积出各管浓度 + 转移/稀释剂方案
  • [ ] 配方库:选配方 + 改体积,各组分按比例缩放;「分享到群」能生成卡片图
  • [ ] 核酸计算 hub:浓度(A260)/引物Tm/量换算(ng↔pmol↔拷贝)/连接反应/qPCR 五子页均出结果
  • [ ] qPCR:填对照+样本 Ct,可增删样本行,出 ΔΔCt/log2/2^-ΔΔCt(上调绿、下调红)
  • [ ] 蛋白 hub:配胶(分离/浓缩切换出组分)/标准曲线(增删标准点+R²+反算)/抗体稀释 三子页均出结果
  • [ ] 动物 hub 种间换算:选源/目标物种+剂量出 HED mg/kg + 总量(小鼠10→成人≈0.81 mg/kg)
  • [ ] 摩尔浓度 / 稀释 / 百分比:随手输入有结果、可复制、公式可展开
  • [ ] 动物给药:批量体重超 Diehl 上限标红
  • [ ] 斑马鱼 LC50:填 4+ 组数据出曲线 + LC50/CI/TI
  • [ ] 离心 rpm↔rcf 双向
  • [ ] 细胞铺板/转染/计数
  • [ ] 「我的」Tab:未配后端时点登录有友好提示;记录本可新建/编辑/删除(本地)

E. 提交审核

  • [ ] 点开发者工具「上传」,填版本号 + 项目备注
  • [ ] 公众平台 → 版本管理 → 提交审核
  • [ ] 类目:选「工具」或「教育」,禁选医疗类目(个人主体)
  • [ ] 审核备注里说明:科研计算工具,结果附"仅供科研参考"免责

四、⚠️ 合规红线

  • 个人主体小程序只能注册工具 / 教育类,不得选医疗类目
  • 文案不得宣称医疗 / 诊断 / 治疗功效
  • 全站已内置免责:「结果仅供科研参考,不构成医疗或临床建议,以权威文献及本单位 SOP/IACUC 规程为准」
  • 计算本地完成,不采集用户实验数据上云

五、本地预览(无需 AppID)

project.config.json 当前 appid 为测试号 touristappid,可直接在开发者工具里 真机预览体验纯计算功能;登录/AI/化合物需真实 AppID + 后端。

六、常见问题

现象原因 / 处理
化合物搜索点了没反应后端未配置(BASE_URL 为空),属预期降级,先手动填分子量
登录提示"云端服务待上线"同上,备案 + 部署后端后即可
LC50 不出结果需存在 0%~100% 之间的死亡组;剂量需 >0 且有梯度
上传报"域名不合法"取消勾选"不校验合法域名"前,须先在公众平台加 request 合法域名
记录本数据会丢吗存本地 storage,卸载小程序会清;登录云同步上线后可跨设备

个人科研与运维文档 · 内容持续修订