Skip to content

Latest commit

 

History

7 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

桑格助手(SangerAssistant)

项目简介

桑格助手是一款面向科研人员的微信小程序,提供期刊查询、影响因子(IF)检索、智能选刊等学术辅助功能。项目采用分包架构与预加载策略,支持 AI 智能选刊、WebSocket 实时通信与 ECharts 数据可视化。


技术栈

类别 技术
框架 微信小程序原生开发(glass-easel 组件框架)
UI 组件库 TDesign Miniprogram(腾讯开源)
图表可视化 ECharts 5 + echarts-for-weixin + zrender
样式方案 WXSS + Less(Design Token 主题配置)
网络通信 wx.request(RESTful)+ wx.connectSocket(WebSocket)
后端接口 wx.sangerbox.com / api.shengxin.ren / api2.sangerbox.com
环境要求 微信开发者工具(基础库 ≥ 3.10.0)

项目结构

SangerAssistant/
├── app.js                   # 全局入口:登录流程、WebSocket 初始化
├── app.json                 # 路由配置、TabBar、分包与预加载规则
├── app.wxss                 # 全局样式变量与公共类(Design Token 映射)
├── _variables.less          # TDesign 组件库变量定义
├── designToken.json         # 主题色/字体/间距/圆角等设计令牌
├── server/
│   ├── request.js           # 统一请求封装(GET/POST/PUT/DELETE、多域名路由)
│   └── websocket.js         # WebSocket 单例:心跳保活、自动重连、消息分发
├── utils/
│   └── mockData.js          # 模拟数据(轮播图、热门期刊、期刊详情等)
├── pages/                   # 主包(TabBar 页面)
│   ├── homePage/            # 首页:轮播图、热门期刊/新闻、智能选刊入口
│   ├── searchPage/          # IF查询页:搜索框、历史记录、热门标签
│   ├── toolsPage/           # 工具页:功能入口集合
│   └── personalPage/        # 个人中心:用户信息、绑定手机/邮箱、订阅消息
├── packageSearch/           # 搜索分包
│   ├── pages/
│   │   ├── searchListPage/      # 搜索结果列表
│   │   ├── searchDetailsPage/   # 期刊详情(IF趋势图、分区、词云等)
│   │   └── IFListPage/          # IF 列表页
│   └── components/
│       ├── ec-canvas/             # ECharts 容器组件
│       └── echarts-wordcloud/     # 词云图插件
├── packageJournal/          # 期刊分包
│   └── pages/
│       ├── journalPage/           # 期刊浏览页
│       ├── journalDetailPage/     # 期刊详情页
│       └── smartJournalPage/      # AI 智能选刊页
├── packageUser/             # 用户分包
│   └── pages/
│       ├── scholarPage/           # 学者查重页(绑定邮箱后可用)
│       ├── newsPage/              # 新闻资讯页
│       ├── recommendPage/         # 推荐页
│       └── goodsPage/             # 商品页
├── packageAdmin/            # 管理分包
│   └── pages/
│       ├── adminPage/             # 管理后台
│       └── feedbackPage/          # 用户反馈页
└── miniprogram_npm/         # npm 构建产物目录(TDesign、ECharts 等)

核心功能模块

1. 用户登录

  • 启动时自动调用 wx.login() 获取 code,请求 /wechat-auth/login 完成静默登录
  • 登录成功保存 token 与 userInfo 至 localStorage,失败提供重试机制

2. 期刊 IF 查询

  • 支持关键词搜索,记录本地搜索历史(最多保留 10 条)
  • 提供热门标签与热门推荐快捷搜索
  • 支持跳转到期刊详情页查看完整指标

3. 期刊详情(searchDetailsPage)

  • IF 趋势图:柱状图+折线图展示历年发文量与影响因子
  • 分区数据:中科院分区 & JCR 分区展示
  • 综述占比图:饼图展示 Articles / Reviews / Others 比例
  • TOP5 排名:发文国家、机构、稿件分布
  • 词云图:基于论文标题提取高频词(内置英文停用词表)

4. AI 智能选刊

  • 支持三种输入模式:组合(标题+摘要)、标题、摘要、AI 对话
  • 提供表单验证,后续对接后端选刊接口

5. 个人中心

  • 显示用户头像与昵称,支持同步登录态
  • 支持绑定手机号 / 邮箱(含发送验证码、倒计时、表单提交)
  • 支持订阅消息权限申请
  • 提供查重平台入口(绑定邮箱后可使用)

6. WebSocket 通信

  • 连接地址:wss://wx.sangerbox.com/ws/wechat?userId=${token}
  • 内置 30 秒心跳保活(ping/pong 机制)
  • 断线自动重连(5 秒延迟,防抖锁)
  • 支持多页面注册/注销消息回调

7. 分包预加载

  • searchPage → 预加载 search 分包
  • homePage → 预加载 journalsearch 分包
  • toolsPage → 预加载 journal 分包

开发指南

环境准备

# 安装依赖
npm install

# 安装 TDesign 与 ECharts 组件
npm install tdesign-miniprogram echarts echarts-for-weixin zrender

构建 npm

  1. 在微信开发者工具中点击「工具 → 构建 npm」
  2. 构建完成后,miniprogram_npm 目录将生成编译产物

运行项目

  1. 使用微信开发者工具导入项目
  2. AppID:wx391127d0a7a30593
  3. 基础库版本:≥ 3.10.0

修改后端接口

编辑 server/request.js 中的 BASE_URLAPI_URLSCHOLAR_URL 即可切换接口地址。


Design Token 设计体系

项目通过 designToken.json 统一管理设计变量,映射到 app.wxss 全局 CSS 变量:

类别 变量示例 默认值
主题色 --theme-color #1677FF
状态色 --success-color / --warning-color / --danger-color #10B981 / #F59E0B / #EF4444
背景色 --bgPage-color / --bgCard-color #F8FAFC / #FFFFFF
文本色 --textPrimary-color / --textSecondary-color #0F172A / #64748B
字体尺寸 --font-size-xs ~ --font-size-3xl 20rpx ~ 56rpx
圆角/阴影 --radius-main / --shadow-main 16rpx / 0 4rpx 20rpx rgba(...)

使用示例:

.my-box {
  background-color: var(--bgCard-color);
  border-radius: var(--radius-main);
  padding: var(--main-padding);
}

接口说明

接口 方法 说明
/wechat-auth/login POST 微信登录,获取 token
/wechat-auth/sendphonecode GET 发送手机验证码
/wechat-auth/sendemailcode GET 发送邮箱验证码
/wechat-auth/bindphone POST 绑定手机号
/wechat-auth/bindemail POST 绑定邮箱
/api/curdWOSPredict GET 期刊 Q1 预测数据
/api/getDataByName GET 通用期刊数据查询(IF/分区/词云等)

注意事项

  1. 分包体积:项目配置了 packOptions.ignore,大量未使用的 TDesign/ECharts 组件在打包时被排除,有效减小主包体积。
  2. 懒加载:启用 lazyCodeLoading: "requiredComponents",按需加载组件。
  3. 图表兼容性:ECharts 词云插件使用 wx.createOffscreenCanvas 类型 2d,需在较新版本微信中运行。
  4. 样式规范:建议所有页面统一使用 sg- 前缀的公共类,避免样式冲突。

版本计划

  • v1.0.0:核心 IF 查询、期刊详情、个人中心、WebSocket 通信
  • 后续迭代:AI 选刊接口联调、查重平台数据同步、消息推送

联系方式

如有问题请通过小程序「我的 → 反馈」提交,或联系管理员。

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages