# 知了-轻量化知识管理 **Repository Path**: wxtech/zhi ## Basic Information - **Project Name**: 知了-轻量化知识管理 - **Description**: “知了”是自邮之翼团队研发推出的一款面向中小型团队的轻量化知识管理应用。其核心特征是:功能聚焦知识管理(汇聚知识、发现知识、分享知识),基于容器一键部署,运维简单上手便捷。 - **Primary Language**: Java - **License**: BSD-3-Clause - **Default Branch**: branch-v2.0.0-open - **Homepage**: http://www.free4inno.com - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 92 - **Created**: 2023-09-15 - **Last Updated**: 2023-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # “知了”——面向中小团队的轻量化知识管理应用 ## 产品介绍 “知了”是[自邮之翼](http://www.free4inno.com/)团队研发的一款面向中小型团队的轻量化知识管理应用。自邮之翼团队是一支主要由北京邮电大学教师和研究生组成的科研团队。“知了”在功能上突出“知识管理”,使用中力求“轻量化”。 ![logo](https://images.gitee.com/uploads/images/2021/0909/142003_52e3ca80_8246241.gif "loading.gif") “知了”以知识管理的全生命周期为核心,围绕知识的分享再利用,构建中小团队的知识库和知识分享社区,保证知识管理的核心功能。产品的主要特点如下: - 汇聚知识:聚合多元知识,积累知识资产; - 发现知识:便捷精准搜索,分级搜索查找; - 分享知识:组内便捷共享,组间受控隔离。 “知了”的目标人群为中小团队,在保证知识管理的核心功能的基础上,提出更简单、易维护的技术架构,力求界面UI的简洁明了,降低用户使用的门槛,达到全方位的“轻量化“: - 功能聚焦:保证核心功能,降低使用成本; - 部署方便:基于容器部署,一键快捷上线; - 运维简单:系统架构简洁,提供系统管理。 ## 特色功能 > 2022年04月07日更新 “知了”现已支持正式针对附件的解析(支持word、excel、txt、pdf等文本类型),并提供**支持附件正文内容及评论内容的全文检索**,搜索结果列表中将会通过logo 的标识反映检索该资源的出处,同时资源详情列表将展示附件的解析状态。 ![附件评论检索](https://gitee.com/sentimentist/pic/raw/master/img/%E9%99%84%E4%BB%B6%E8%AF%84%E8%AE%BA%E6%A3%80%E7%B4%A2.png) ![附件解析状态](https://gitee.com/sentimentist/pic/raw/master/img/%E9%99%84%E4%BB%B6%E8%A7%A3%E6%9E%90%E7%8A%B6%E6%80%81.png) 基于“知了”Open API构建的第三方应用[Demo](http://dataset.free4inno.com)(具体场景为数据集发现门户)现已发布,目前前端样式已支持响应式布局,后端配置可在配置文件中自定义。代码仓库为https://gitee.com/free4inno-team/dataset-set,用户可以基于此模板快速配置不同场景下个性化的类信息查询应用。 ![image-20220407142653605](https://gitee.com/sentimentist/pic/raw/master/img/image-20220407142653605.png) > 2022年02月23日更新 “知了”提供了Open API,用户可以通过知了的开放能力快速构建不同场景下的知识管理类应用。例如下图为一个[数据集发现门户](http://dataset.free4inno.com/)的demo,正是基于知了的Open API 快速实现的。 ![image-20220223213741255](https://gitee.com/sentimentist/pic/raw/master/img/image-20220223213741255.png) > 2021年12月26日更新 “知了”本次更新提供了资源导出为PDF的功能,欢迎大家试用并提出问题~ ![image-20220407142827014](https://gitee.com/sentimentist/pic/raw/master/img/image-20220407142827014.png) > 2021年10月15日更新 “知了”强大的 **书籍** 功能,可以便捷地将大量 **零散** 的资源 **汇聚** 起来,便于日后对于知识的查看、编辑、分享等一系列管理。 [“书籍”功能使用指南](https://gitee.com/free4inno-team/zhi/wikis/%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E/%E2%80%9C%E4%B9%A6%E7%B1%8D%E2%80%9D%E5%8A%9F%E8%83%BD%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97) 自邮之翼有一个优良的传统:每位同学会将自己在某一领域的宝贵的学习成果做成教程。因此长期以来,团队内部积累了大量有价值的资源,例如近期团队的 **大数据分析实战入门** 系列讲座教程,这一系列的教程正是依托“知了”聚合成了一本 **有分量** 的书籍,为团队成员和未来加入团队的新人提供了一个丰富的“ **资源池** ” 。各位有兴趣的朋友可以[点击链接](http://zhi.free4inno.com/resource/resource?id=17529&isBook=true)观看。 ![大数据分析实战入门书籍](https://images.gitee.com/uploads/images/2021/1015/005708_820c6ab7_8246241.png "屏幕截图.png") 我们将在“知了”的后续版本中,提供开放API,届时用户可以通过更加便捷的方式,将所需的知识汇聚起来,形成一本本具有自身 **特色的“书籍”** ,例如:数据集、教师信息、工作文档、通知公告等。同时,我们期望从技术上,实现对外部资源的 **自动化** “挖掘——解析——分类——聚合”,让每一本“书籍”可以实现高效持续的更新。 ## 产品截图 ![图1-首页](https://images.gitee.com/uploads/images/2021/0909/141423_0e65d43a_8246241.png "图1-首页.png") ![图2-登陆后首页](https://images.gitee.com/uploads/images/2021/0909/141444_86298c9d_8246241.png "图2-登陆后首页.png") ![图5-新建](https://images.gitee.com/uploads/images/2021/0909/141458_727d1337_8246241.png "图5-新建.png") ![图3-书籍](https://images.gitee.com/uploads/images/2021/1015/005708_820c6ab7_8246241.png "屏幕截图.png") ![图4-搜索](https://images.gitee.com/uploads/images/2021/0909/141558_dfc07877_8246241.png "图4-搜索.png") ## 功能概述 ![图6-功能概述图](https://images.gitee.com/uploads/images/2021/0909/141855_a43f5dcf_8246241.png "图6-功能概述图.png") ## 技术架构 ![图7-系统架构图](https://images.gitee.com/uploads/images/2021/0909/141630_7e108df6_8246241.png "图7-系统架构图.png") ## 目录说明 ``` shell ├─config: 项目配置文件 │ ├─kmses: ES模块(待解耦) │ ├─kmstika: 附件解析模块 │ ├─knowledgems: Web模块 │ └─zhi-docker: Docker部署方案 ├─docker-compose.yml: 容器编排配置 │ ├─zhies: ES镜像配置 │ ├─zhimysql: MySQL镜像配置 │ └─zhiweb: Web端镜像配置 ``` ## 安装部署 现有版本提供基于Docker 一键部署项目及所有依赖环境的Standalone 部署模式,后续版本考虑提供Cluster 部署模式。 ### 1 部署环境 - 一台2核4G的x86/x64 Linux 主机,操作系统为CentOS 7 / Ubuntu 20.04; - Docker 20.10.0 及以上; - Docker-Compose 1.25.5 及以上。 ### 2 部署前准备 部署前需要在宿主机中完成三个简单的操作。 1. 修改系统参数,保证ES能够正常启动: ``` shell echo "vm.max_map_count = 262144" >> /etc/sysctl.conf /sbin/sysctl -p ``` 2. 暴露主机端口: - 8081:Web访问的端口,必须开启; - 3306:MySQL服务端口,可以选择开启; - 9200、9300:Elasticsearch服务的相关端口,可以选择开启; - 9100:Elasticsearch-head服务端口,可以选择开启; - 8090:nginx文件系统端口,可以选择开启。 3. 重启Docker ``` shell sudo systemctl daemon-reload sudo systemctl restart docker ``` ### 3 安装部署 1. 上传安装包[zhi-2.0.0-deployed.tar.gz](https://gitee.com/free4inno-team/zhi/releases/v2.0.0),并解压: ``` shell tar zxvf zhi-2.0.0-deployed.tar.gz ``` 3. cd 到安装目录../zhi-docker/,构建镜像: ``` shell docker-compose build ``` 4. 启动容器: ``` shell docker-compose up -d ``` 5. 启动成功,打开浏览器访问Web页面 ``` shell # Web项目首页 主机公网ip:8081 默认的超级管理员账号为11111111111,密码为666666 ``` ## 开发进度 ### v1.0.0 -- 已完成 设计并实现了“知了”的第一个版本,主要功能如下: 1. 资源 - 资源支持富媒体格式,包括:文字、图片和文档附件(富文本编辑器基于TinyMCE) - 支持为“资源”打标签(即分类功能、支持用户自定义多级标签) - 支持为“资源”设置可以访问的用户组 - 支持对资源进行评论 - 导入“free 分享”中的历史数据 2. 用户与群组 - 支持用户申请、添加、删除、修改 - 用户权限划分为超级管理员、内容管理员、用户管理员、系统管理员、普通用户、游客 - 具有群组创建者、群组管理员、群组成员等三级权限 - 一个用户可以同时属于多个用户组 3. 搜索及高级搜索(基于ES) - 支持基于关键字(资源标题、正文、作者、群组、分类)的搜索 - 支持基于标签、用户组的高级搜索 - 支持直接查看用户组中的资源,直接查看带有该标签的资源 4. 前端基于BootStrap + jQuery,支持响应式布局 ### v1.1.0 -- 已完成 这一次的迭代周期中,在 1.0 版本的基础上,参考原有模板重写了前端的css,对后端进行完整的测试并重写了问题代码,完成对知了前后端目前存在问题的一些修复,主要更新内容如下: 1. 前端重构工作 - 清理冗余静态资源 - 设计并实现新的前端方案(含css 命名规范、使用说明、使用范围、图例) - 修复现有前端样式的问题 2. 后端优化工作 - 后端所有入口出口日志埋点 - 进行测试,定位“问题”代码块,并解决性能问题 - session 时长、图片转存时长设置 - 搜索结果列表分页修复 3. 功能新增 - 模板发文功能 - 书籍功能 - 系统设置功能 - 富文本编辑器顶栏吸附 - 评论区支持富文本编辑及分页展示 ### v1.2.0 -- 已完成 1.2 版本的迭代主要着眼于后端系统的优化和完善 1. 文件服务模块方案的重新设计及代码的重构 - 基于现有的文件读写方案(newfreedisk.jar),进行重构 2. 面向多环境的多套配置文件的机制 - 清晰区分开发环境,生产环境,发布环境的不同配置 - 根据上述配置梳理现有代码 3. 依赖的版本升级 - TinyMCE升级到5.9.1版本,支持markdown形式输入 4. BUG修复 - 修复配置文件乱码的问题 ### v1.2.1 -- 已完成 本次版本更新的主要目标是提供系列开放API 1. 提供[开放API](https://gitee.com/free4inno-team/zhi/wikis/%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E/%E2%80%9D%E7%9F%A5%E4%BA%86%E2%80%9COpen%20API%20%E6%96%87%E6%A1%A3) - 查询接口 2. BUG修复 - 修复书籍权限调整为公开后,进入书籍仍然需要登录的问题 - 修复书籍编辑页面JSON输入框某些情形下退格的BUG - 修复被推荐资源删除后spec表中仍然存在的空指针问题 - 新增部署后时区不正确的[解决方案](https://gitee.com/free4inno-team/zhi/wikis/%E5%BC%80%E5%8F%91%E6%96%87%E6%A1%A3/%E5%BC%80%E5%8F%91%E2%80%9C%E7%96%91%E9%9A%BE%E6%9D%82%E7%97%87%E2%80%9D%E8%AE%B0%E5%BD%95) 3. 新增ES相关的功能接口 - 备份ES索引 - 删除ES索引 - 重建ES索引 ### v1.2.2 -- 已完成 本次版本更新的主要目标是继续完善后端模块和新增一些实用功能 1. 完善文件服务模块 - 调整文件下载逻辑:图片链接直接在浏览器打开,附件链接通过浏览器下载 - 修复附件解析模块,调整文件io逻辑,重新上线该模块 2. 新增功能 - 资源导出pdf 3. BUG修复 - 修复资源详情页面中的图片的下载问题 - 修复点击单个标签搜索失败的问题 - 修复评论区分割线异常的问题 ### v1.2.3 -- 已完成 本版本更新的主要目标是更新一些有用的新功能,并修复若干BUG 1. 新增功能 - 资源导出pdf支持PNG、JPG、GIF、WEBP、BITMAP等多种格式 - 资源导出pdf支持中文名 - 优化资源导出PDF时的缓存机制 2. 新增开放API - 详情查询API 3. 基于开放API实现单页静态页面应用实例 4. 调整ES搜索规则 - 标签间关系取与 - 按照hitScore降序 - 在hitScore降序基础上,保持createTime降序 5. 修复若干BUG - 修复资源导出PDF时图片大小无法自适应宽度及越界的问题 - 修复新建资源页面模板按钮点击偶尔错乱显示的问题 - 修复评论折叠后换行符无效的问题 - 修复模版按钮多次选择时高亮失效的问题 ### v2.0.0 -- 已完成 本次大版本更新的主要目标是全面支持附件内容、评论内容的全文检索,并完善基于Open API 实现的第三方应用的Demo的通用性 1. 新增功能 - 全文检索支持附件正文内容、评论内容(基于Elasticsearch 的嵌套文档实现) - 搜索结果页新增搜索来源的标签图形(附件/评论) - 资源详情页展示附件解析状态 - 用户管理新增分配及更新用户Open API 的AppKey - 系统管理新增Open API Public Key 、默认密码等配置 2. 部分权限调整 - 限制群组外部成员(除超级管理员、内容管理员)访问群组内部资源 - 实现基于AppKey 的Open API 校验方案 3. 基于Open API 实现的第三方应用Demo(数据集发现门户) - 高级搜索支持显示和实际搜索内容分别设置 - 美化前端样式,支持响应式布局 - 梳理配置项并提取到配置文件中 4. 修复若干BUG - 评论折叠不能保留换行的问题 - “重新搜索”按钮无法正确同步搜索条件的问题 - 部分场景下未登录状态搜索结果为空 ## 贡献说明 本项目由[自邮之翼](http://www.free4inno.com/)团队研发,指导老师为北京邮电大学[徐鹏](https://teacher.bupt.edu.cn/xupeng/zh_CN/index.htm)老师,贡献人员名单如下: - 北京邮电大学 2020级硕士研究生 胡裕竹 - 北京邮电大学 2020级硕士研究生 郝一 - 北京邮电大学 2020级硕士研究生 李运泽 - 北京邮电大学 2020级硕士研究生 高齐鸿 - 北京邮电大学 2018级硕士研究生 刘珂琪 - 北京邮电大学 2018级本科生 赵浩天 - 北京邮电大学 2018级本科生 刘新元 - 北京邮电大学 2018级本科生 刘鸿洁 - 北京邮电大学 2018级本科生 徐子雯