# paper-pro **Repository Path**: spirit_dragon/paper-pro ## Basic Information - **Project Name**: paper-pro - **Description**: 一个AI阅读论文工具 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-26 - **Last Updated**: 2025-09-23 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # paper-pro #### 介绍 一个AI阅读论文工具 项目实现:https://blog.csdn.net/zhshenqiong/article/details/151702629?spm=1001.2014.3001.5501 项目结构如下: - api/: 后端api - go/: - app/: go-zero微服务 - usercenter/: 用户中心服务 - assistant/: 助理服务 - chat/: 聊天服务 - paperfile/: 文件上传与解析服务 - pkg/: go公共模块,提供公共工具,grpc客户端接口等 - py/: - app/: python微服务 - aichat/: 测试用简单AI聊天服务 - web/: vue3前端ui - docker/: docker-compose部署开发环境,微服务间使用直链模式 - mysql/: mysql初始化配置 - mongodb/create_admin.js: 开发环境下,mongodb数据库启动脚本 - kong/: kong网关启动配置 - filebeat/filebeat.yml: 从kafka读出日志收集器配置 - filebeat-collector/filebeat.yml: 直连elasticsearch发送日志配置 - fluentd/collector/: fluentd日志收集器配置,日志发送到kafka队列 - prometheus/prometheus.yml: prometheus配置 - .env: 开发环境环境变量 - ping.Dockerfile: 测试工具容器 - docker-compose-env.yml: 开发环境依赖工具 - docker-compose-dev.yml: 开发环境启动微服务 - template/: 模板 - goctl: goctl代码生成模板,替换到本地.goctl目录下面 #### 软件架构 可参考:https://blog.csdn.net/zhshenqiong/article/details/151702629?spm=1001.2014.3001.5501 #### 开发环境搭建 1. 创建本地tmp目录 执行脚本 mkdir_tmp.sh 或 mkdir_tmp.ps1 2. 创建 MongoDB keyfile 文件 在某个目录下,执行: ```bash $ openssl rand -base64 756 > mongo-keyfile $ chmod 600 mongo-keyfile $ sudo chown 999:999 mongo-keyfile ``` 并将绝对路径(可以用pwd获取)拷贝到 .env 文件 MONGODB_KEYFILE_PATH 变量中 3. 启动依赖环境: ```bash $ cd docker $ docker compose -f docker-compose-env.yml up -d # 查看相应服务的日志 $ docker compose logs -f ``` 4. 创建mysql数据库数据表 在启动 1 的环境后,登录mysql容器 ```bash $ docker exec -it 容器名(paper-mysql) /bin/bash ``` 容器中执行创建表脚本/data/application/script/create_tables.sh: ```bash $ cd /data/application/script $ chmod +x ./create_tables.sh $ ./create_tables.sh ``` 5. 创建MongoDB副本集,执行创建MongoDB数据库、集合和索引的脚本 MongoDB启动后,远程登录MongoDB: ```bash $ docker exec -it paper-mongodb mongosh -u root -p ${MONGODB_PASSWORD} --authenticationDatabase=admin test> rs.initiate({ _id: "rs0", version: 1, members: [{ _id: 0, host: "paper-mongodb:27017", priority: 1 }] }) # 检查副本集是否创建成功 test> rs.status() ``` 使用compass连接,可以连接url:mongodb://admin:123456@localhost:27018/?directConnection=true 执行以下脚本 - api/go/app/assistant/model/assistant/mongo - api/go/app/chat/model/mongo - api/go/app/paperfile/model/mongo 6. 本项目开发环境提供了两套日志收集方案,若需启动kafka,需创建kafka主题 ```bash $ docker exec -it paper-kafka /bin/bash $ cd /opt/kafka/bin $ ./kafka-topics.sh --create --bootstrap-server localhost:9094 --replication-factor 1 --partitions 1 --topic paper-logs Created topic paper-logs. ``` 7. 创建消息队列主题 ```bash $ docker exec -it paper-kafka /bin/bash $ cd /opt/kafka/bin # 检查主题是否已创建(已在启动脚本中创建,没有就按下面的方式手动创建) $ ./kafka-topics.sh --bootstrap-server localhost:9094 --list # 创建消息队列主题 $ ./kafka-topics.sh --create --bootstrap-server localhost:9094 --replication-factor 1 --partitions 1 --topic chat-msgs-insert $ ./kafka-topics.sh --create --bootstrap-server localhost:9094 --replication-factor 1 --partitions 1 --topic pdf-parser-task ``` 8. MinIO创建bucket 本地浏览器输入 http://localhost:9001,用 $MINIO_USER 和 $MINIO_PASSWORD 登录,创建名为“paper-pdf-bucket”的桶。 9. 部署微服务项目 开发环境部署项目原理参考这里:https://blog.csdn.net/zhshenqiong/article/details/149018060?spm=1001.2014.3001.5502 ```bash $ cd docker $ docker compose -f docker-compose-dev.yml -p <自定义项目名> up -d ``` 命令中,使用了-p参数指定了项目名,后续可以用docker compose -p <自定义项目名> op操作项目容器。 也可以不使用-p指定项目名,这时候因为和docker-compose-env.yml处在同一目录下,二者将由一样的项目名,这意味后续的docker compose命令将操作两者中所有的容器。 docker下也提供了供测试用的容器ping.Dockerfile,有两种启动方式: 1、取消掉docker-compose-dev.yml里的注释,启动docker-compose-dev.yml,此时测试容器将常驻运行。登录容器: ```bash $ docker exec -it my-ping /bin/bash ``` 2、手动构建镜像,需要时启动容器,命令如下: ```bash $ cd docker # 构建镜像 $ docker build -t my-ping-image -f ping.Dockerfile . # 启动容器: $ docker run -it --name my-ping --network docker-paper_pro_net my-ping-image /bin/bash # 创建容器后重新启动 $ docker start my-ping $ docker exec -it my-ping /bin/bash ``` 启动测试工具容器后,便可以测试与其他服务的连接了,例如,测试用户中心的grpc服务和api服务,使用命令: ```bash $ grpcurl -plaintext paper-usercenter-rpcsvc:8080 pb.Usercenter/Ping # grpcurl -plaintext 容器名:服务监听端口 grpc_package名.service名/接口 $ curl -X POST http://paper-usercenter-apisvc:8888/usercenter/user/login -H "Content-Type: application/json" -d '{"nickname":"shenll","password":"123456"}' ``` 10. 启动前端ui ```bash $ cd web/paper-ui $ npm install $ npm run dev # 启动开发环境 ``` 11. 停止开发环境 ```bash $ cd docker $ docker compose -p <自定义项目名> stop # 停止微服务项目容器 $ docker compose -f docker-compose-env.yml stop # 仅停止容器运行 $ docker compose -f docker-compose-env.yml down # 停止容器运行,并删除容器和网络 # --volumes参数将删除相关卷,--rmi all删除所有镜像 ``` #### 部署环境搭建 1. xxxx 2. xxxx 3. xxxx #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)