# 小程序联调操作手册 > 将 AI 药典模块接入「开邻药惠购」uni-app 小程序 --- ## 一、文件拷贝 将本项目 `miniprogram/` 下的 5 个文件复制到现有 uni-app 项目对应目录: ``` 本项目的 miniprogram/ 你现有的 uni-app 项目/ ├── api/ai.js → src/api/ai.js(或 api/ai.js) ├── utils/sse.js → src/utils/sse.js ├── pages/ai-yaodian/index.vue → src/pages/ai-yaodian/index.vue └── components/ai-chat/index.vue → src/components/ai-chat/index.vue ``` --- ## 二、注册页面路由 编辑 `pages.json`,在 `pages` 数组末尾追加: ```json { "path": "pages/ai-yaodian/index", "style": { "navigationBarTitleText": "AI 药典查询", "navigationBarBackgroundColor": "#002FA7", "navigationBarTextStyle": "white" } } ``` --- ## 三、配置 API 地址 编辑 `api/ai.js` 第 6-7 行: ```javascript // 生产环境 — 替换为实际部署的后端域名 const BASE_URL = 'https://api.your-domain.com/api/v1' // 本地调试 — 开发阶段使用(需关闭小程序域名校验) // const BASE_URL = 'http://localhost:8000/api/v1' ``` --- ## 四、微信登录 → JWT Token ### 方式 A:在 App.vue 的 onLaunch 中获取 token ```javascript // App.vue — onLaunch 生命周期 onLaunch() { // 现有微信登录逻辑 wx.login({ success: (res) => { uni.request({ url: BASE_URL + '/auth/login/wechat', method: 'POST', data: { code: res.code }, success: (r) => { uni.setStorageSync('access_token', r.data.access_token) } }) } }) } ``` ### 方式 B:开发阶段用固定 token 跳过登录 在 `api/ai.js` 的 `getToken()` 函数中: ```javascript function getToken() { // 开发阶段:直接返回固定token return 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' // 用你后端生成的token替换 // 正式上线:改回下面的 // return uni.getStorageSync('access_token') || '' } ``` 生成 token: ```bash cd backend && source ../.venv/bin/activate python3 -c "from app.core.security import create_access_token; print(create_access_token({'sub':'test-user'}))" ``` --- ## 五、导航入口 在现有首页加一个入口跳转到 AI 页面。任选一处: ### 5.1 底部 Tab(pages.json 的 tabBar.list 里加) ```json { "pagePath": "pages/ai-yaodian/index", "text": "AI 药典", "iconPath": "..." } ``` ### 5.2 悬浮按钮(在首页 WXML/Vue 模板中加) ```html 💊 AI 药典 ``` ### 5.3 药品详情页嵌入(使用 AiChatPanel 组件) ```html ``` ```javascript // pages/drug-detail/index.vue — script import AiChatPanel from '@/components/ai-chat/index.vue' export default { components: { AiChatPanel }, data() { return { drugName: '阿莫西林' } } } ``` --- ## 六、调试检查清单 | # | 检查项 | 操作 | |---|--------|------| | 1 | 后端是否运行 | `curl http://localhost:8000/health` | | 2 | Token 是否有效 | 小程序控制台 `uni.getStorageSync('access_token')` | | 3 | 域名校验 | 开发工具中勾选「不校验合法域名」 | | 4 | API 地址 | `api/ai.js` 中 BASE_URL 是否正确 | | 5 | 文件路径 | pages.json 中 path 与文件实际路径一致 | | 6 | SSE 流式 | 发一个问题看是否流式输出 | --- ## 七、生产部署前需完成 | 事项 | 操作 | |------|------| | 后端部署 | 将 FastAPI 部署到公网服务器,配置 HTTPS | | 小程序域名 | 在微信后台「开发管理-服务器域名」添加后端域名 | | Token 过期 | 在 `api/ai.js` 中增加 401 自动刷新 token 逻辑 | | 内容安全 | 接入微信内容安全 API 过滤违规内容 | | 药品数据 | 确保知识库覆盖常用药品(建议 500+ 条目) |