Giter Site home page Giter Site logo

openimsdk / openkf Goto Github PK

View Code? Open in Web Editor NEW
107.0 8.0 45.0 12.43 MB

AI ChatGPT 智能客服 | Supports chatgpt and llm large language models. OpenKF is an online customer service system that improves communication for enterprises and open-source communities with customizable features.

Home Page: https://github.com/open-kf/rag-gpt

License: Apache License 2.0

Makefile 2.85% Go 46.04% Shell 14.18% Vue 17.15% JavaScript 0.34% Python 4.96% Awk 0.04% TypeScript 8.71% Less 2.93% CSS 2.80%
chatbot community contribution customizable development online open-source ai chatgpt llm

openkf's Introduction

⭐️ OpenKF(Open Knowledge Flow) is an online intelligent customer service system. ⭐️

🧩 Awesome features

  1. OpenKF is an opensource customer service system based on OpenIM.
  2. Support LLM(Local Knowledgebase) customer service.
  3. Support multi-channel customer service, and easy to integrate with third-party systems.
  4. Easy to deploy and secondary development.

📺 System Preview

Login Page
Config Page
Dashboard Page
Platform Page
Session Page

🛫 Quick start

Note: You can get started quickly with OpenKF.

📦 Installation

git clone https://github.com/openimsdk/openkf openkf && export openkf=$(pwd)/openkf && cd $openkf && make

🚀 Run

Note: We need to run the backend server first

make build

open another terminal run the following command

# make dev
cd web
npm run dev

📖 Contributors get up to speed

Be good at using Makefile, it can ensure the quality of your project.

Usage: make <TARGETS> ...

Targets:
  all                          Build all the necessary targets. 🏗️
  build                        Build binaries by default. 🛠️
  go.build                     Build the binary file of the specified platform. 👨‍💻
  build-multiarch              Build binaries for multiple platforms. 🌍
  tidy                         tidy go.mod 📦
  style                        Code style -> fmt,vet,lint 🎨
  fmt                          Run go fmt against code. ✨
  vet                          Run go vet against code. 🔍
  generate                     Run go generate against code and docs. ✅
  lint                         Run go lint against code. 🔎
  test                         Run unit test ✔️
  cover                        Run unit test with coverage. 🧪
  docker-build                 Build docker image with the manager. 🐳
  docker-push                  Push docker image with the manager. 🔝
  docker-buildx-push           Push docker image with the manager using buildx. 🚢
  copyright-verify             Validate boilerplate headers for assign files. 📄
  copyright-add                Add the boilerplate headers for all files. 📝
  swagger                      Generate swagger document. 📚
  serve-swagger                Serve swagger spec and docs. 🌐
  clean                        Clean all builds. 🧹
  help                         Show this help info. ℹ️

Note: It's highly recommended that you run make all before committing your code. 🚀

make all

🕋 Architecture diagram

Architecture

MVC Architecture Design:

MVC

🤖 File Directory Description

Catalog standardization design structure:

.
├── assets
│   └── images
├── build
├── deploy
├── docs
├── kf_plugins # Local knowledgebase with LLM
│   ├── chat
│   ├── config
│   ├── data
│   ├── logs
│   ├── model
│   └── utils
├── scripts
│   ├── githooks
│   └── LICENSE
├── server # OpenKF backend
│   ├── cmd
│   ├── data
│   ├── docs
│   ├── examples
│   ├── internal
│   ├── logs
│   ├── pkg
│   ├── test
│   └── tools
└── web # OpenKF frontend
    ├── public
    ├── scripts
    └── src

🗓️ community meeting

We want anyone to get involved in our community, we offer gifts and rewards, and we welcome you to join us every Thursday night.

Our conference is in the OpenIM Slack 🎯 openkf pipeline, then you can search the openkf pipeline to join

We take notes of each biweekly meeting in GitHub discussions, and our minutes are written in Google Docs.

🤼‍ Contributing & Development

OpenIMSDK Our goal is to build a top-level open source community. We have a set of standards, in the Community repository.

If you'd like to contribute to this OpenKF repository, please read our contributor documentation.

Before you start, please make sure your changes are in demand. The best for that is to create a new discussion OR Slack Communication, or if you find an issue, report it first.

📱 Join Our WeChat Developer Group 🛠️

Add as a friend and include the note openkf to receive an invitation to our ' openkf ' developers' group chat.

WeChat Group

🚨 License

OpenKF is licensed under the Apache 2.0 license. See LICENSE for the full license text.

The OpenKF logo, including its variations and animated versions, displayed in this repository OpenKF under the assets/logo and assets/logo-gif directories, are protected by copyright laws.

🔮 Thanks to our contributors!

openkf's People

Contributors

a67793581 avatar charles-chenzz avatar cubxxw avatar ironicbo avatar kubbot avatar liumingsongning avatar lluckyboi avatar mc-kanon avatar polarisht avatar tobehardest avatar virtualss avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openkf's Issues

Feature: Add register web page with TDesign.

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

No response

Solution Description

  1. Use TDesign components.
  2. Use register api with axios.

Ref: https://tdesign.tencent.com/starter/vue/login
Ref: https://tdesign.tencent.com/vue-next/overview

Benefits

Enhance system.

Potential Drawbacks

No response

Additional Information

No response

Bug reports for links in OpenIM docs

Summary

Status Count
🔍 Total 158
✅ Successful 127
⏳ Timeouts 0
🔀 Redirected 0
👻 Excluded 0
❓ Unknown 0
🚫 Errors 31

Errors per input

Errors in README.md

Errors in CONTRIBUTING.md

Feature: version log release

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

We're getting to the first release soon, but we haven't gotten very sophisticated about version control yet. I'm going to target v0.1.0 for the first release

Solution Description

Use the CHANGELOG directory for logging

Benefits

more and more standard

Potential Drawbacks

No response

Additional Information

No response

feature: CODEOWNERS help contributors join openkf

One potential improvement for CODEOWNERS could be to allow for more granular control over ownership of specific files within a directory. Currently, ownership can only be assigned at the directory level, which can be limiting for larger projects with many files. Allowing for file-level ownership would provide more flexibility and allow for more targeted review assistance. Additionally, it may be helpful to allow for multiple owners per file or directory, to distribute ownership responsibilities and ensure timely reviews.
We have members @cubxxw @kubbot @AllianceTing @eurecalulu @StellarisW @linesoft2 @IRONICBo @MC-kanon @hanzhixiao @liumingsongning @Cathay-Chen @charles-chenzz

Their current responsibilities are as follows:

If you are looking forward to joining OpenKF, please leave a comment below

# This is a comment.
# Each line is a file pattern followed by one or more owners.

# README files
README.md    @cubxxw @kubbot @AllianceTing @IRONICBo @MC-kanon @AllianceTing @charles-chenzz @Cathay-Chen @plutoyty 

# Contributing guidelines
CONTRIBUTING.md    @kubbot @cubxxw @IRONICBo @AllianceTing @plutoyty 

# License files
LICENSE    @kubbot @cubxxw @IRONICBo

# Makefile
Makefile    @kubbot @cubxxw @IRONICBo @Cathay-Chen

# Assets directory
assets/*    @AllianceTing @IRONICBo @cubxxw @MC-kanon 

# Deploy directory
deploy/*    @IRONICBo @cubxxw @kubbot @MC-kanon @charles-chenzz

# Server directory
server/*    @AllianceTing @cubxxw @IRONICBo @liumingsongning @Cathay-Chen @charles-chenzz @hanzhixiao @plutoyty 

# Web directory
web/*    @AllianceTing @MC-kanon @IRONICBo @liumingsongning @plutoyty 

# These owners will be the default owners for everything in
# the repo. Unless a later match takes precedence,
# @cubxxw and @kubbot will be requested for
# review when someone opens a pull request.
*       @cubxxw @kubbot @AllianceTing @eurecalulu @StellarisW @linesoft2 @IRONICBo @MC-kanon @hanzhixiao @liumingsongning @Cathay-Chen @charles-chenzz

# Order is important; the last matching pattern takes the most
# precedence. When someone opens a pull request that only
# modifies JS files, only @js-owner and not the global
# owner(s) will be requested for a review.
*.js    @cubxxw @kubbot @IRONICBo @MC-kanon @AllianceTing @liumingsongning

# You can also use email addresses if you prefer. They'll be
# used to look up users just like we do for commit author
# emails.
*.go [email protected] @IRONICBo @AllianceTing @eurecalulu @hanzhixiao @liumingsongning @Cathay-Chen @charles-chenzz @plutoyty 
*.py [email protected] @IRONICBo @AllianceTing @eurecalulu @liumingsongning @plutoyty

# Teams can be specified as code owners as well. Teams should
# be identified in the format @org/team-name. Teams must have
# explicit write access to the repository. In this example,
# the OpenIMSDK team in the github organization owns all .txt files.
*.txt @cubxxw @kubbot @AllianceTing @IRONICBo @MC-kanon @liumingsongning @charles-chenzz

# In this example, @cubxxw owns any files in the build/
# directory at the root of the repository and any of its
# subdirectories.
build/*  @cubxxw @kubbot @IRONICBo @MC-kanon @AllianceTing

# The `docs/*` pattern will match files like
# `docs/getting-started.md` but not further nested files like
# `docs/build-app/troubleshooting.md`.
docs/*  [email protected] @kubbot @IRONICBo

# In this example, @octocat owns any file in an apps directory
# anywhere in your repository.
api/ @cubxxw @IRONICBo @MC-kanon @AllianceTing @hanzhixiao @charles-chenzz

# In this example, @cubxxw owns any file in the `/docs`
# directory in the root of your repository and any of its
# subdirectories.
/docs/ @cubxxw @kubbot @IRONICBo @liumingsongning

# In this example, any change inside the `/scripts` directory
# will require approval from @cubxxw or @octocat.
/scripts/ @cubxxw @kubbot @MC-kanon @charles-chenzz @plutoyty
scripts/* @cubxxw @kubbot @IRONICBo @charles-chenzz

# In this example, @octocat owns any file in a `/logs` directory such as
# `/build/logs`, `/scripts/logs`, and `/deeply/nested/logs`. Any changes
# in a `/logs` directory will require approval from @octocat.
**/logs @cubxxw @kubbot @IRONICBo @charles-chenzz @plutoyty

# In this example, @octocat owns any file in the `/apps`
# directory in the root of your repository except for the `/apps/github`
# subdirectory, as its owners are left empty.
/apps/ @cubxxw @kubbot @IRONICBo
/apps/github

Note: Looking to join the ranks of developers?
Join the slack and search openkf channel to join

Feature: User Role Permission Control Implementation

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

Solution Description

We could use Casbin to implement this feature.
Currently the platform has different user roles as follows:

  • Administrator
  • AI customer service, bots
  • Customer Service
  • User or Anonymous

We can set a specific range of permissions for each role with RBAC.

And for the possible features that may be provided by the platform in the future,
such as creating customised roles, granting additional permissions for the basic role.
We can also use casbin to make it very convenient and easy to implement

Benefits

  • Capable of agile development
  • Readable and highly maintainable code
  • Facilitates the implementation of subsequent possible functions

Potential Drawbacks

No response

Additional Information

No response

Docs: developers issue specification

Description

issue specification

when raise an issue would be better to obey those tips as follow

for contributor

  • developers can claim it by comment (want to claim issueId)
  • developers should add full labels for issue you raised.(including kinds(类型 such as,feat,bug),Degree of importance(重要程度 emergency,important,normal),strategy(处置策略 such as self ,paticipant,coperation),progress(进度 such as running,later),size(问题规模 such as L,M,XXL))
eg: Docs: developers issue specification docs emergency self running L

for maincontainer

  • add projects such as, sprint2023.
  • add milestone such as, v0.0.1.
  • have to assign one or more who to solve it.

for commiter

  • add labels to each issue and check it out.
  • format issue style when needed.
  • keep in touch with each contributor.
  • Keep up with the status of the issue.
  • assign assign one or more who to solve it.

Screenshots

none

Additional information

none

Feature: optimizing some details

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

✅ Yes

Problem Description

  • Change copyright

  • Optimize some details

  • Provides reliable make commands

Solution Description

example:

make help

Benefits

More developer-friendly and canonical

Potential Drawbacks

No response

Additional Information

No response

Bug: Bug reports for links in OpenIM docs

Summary

Status Count
🔍 Total 215
✅ Successful 214
⏳ Timeouts 0
🔀 Redirected 0
👻 Excluded 0
❓ Unknown 0
🚫 Errors 1

Errors per input

Errors in README.md

  • [ERR] file:///home/runner/work/OpenKF/OpenKF/assets/logo-gif/openkf-log-white.gif | Failed: Cannot find file
    Full Github Actions output

Feature: Make pre-commit script support auto-signature

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

No response

Solution Description

Add -s in git commit.

Benefits

Easy to sign-off.

Potential Drawbacks

No response

Additional Information

No response

Bug: Bug reports for links in OpenIM docs

Summary

Status Count
🔍 Total 203
✅ Successful 198
⏳ Timeouts 0
🔀 Redirected 0
👻 Excluded 0
❓ Unknown 0
🚫 Errors 5

Errors per input

Errors in docs/contribution/development.md

  • [ERR] file:///home/runner/work/OpenKF/OpenKF/docs/contribution/git-workflow.md | Failed: Cannot find file
  • [ERR] file:///home/runner/work/OpenKF/OpenKF/BUILDING.md | Failed: Cannot find file
  • [ERR] file:///home/runner/work/OpenKF/OpenKF/Vagrantfile | Failed: Cannot find file
  • [ERR] file:///home/runner/work/OpenKF/OpenKF/tests/TESTING.md | Failed: Cannot find file

Errors in docs/contribution/code_conventions.md

Feature: support wechat login

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

Before the GitHub feature is implemented, I hope OpenKF can also extend wechat login

Solution Description

Provide users with wechat login channel

Benefits

More login ways to provide a faster way for customer service

Potential Drawbacks

no

Additional Information

no

Feature: Add non-intrusive interceptors.

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

Non-intrusive interceptors use plugins or configurations that can be extended externally without modifying the source code.

Solution Description

  • Memory Handler Storage
  • Handler registration and binding
  • Handler retrieval

Benefits

Easy to enhance system.

Potential Drawbacks

No response

Additional Information

No response

Feature: unit and e2e tests are provided for OpenKF

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

unit and e2e tests are provided for OpenKF

Solution Description

integration actions cicd

Benefits

quality guarantee

Potential Drawbacks

no

Additional Information

no

feature: Init OpenKF LLM plugin.

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

Init local knowledge model.

Solution Description

Use LangChain and LLM to build local knowledge model.

Benefits

Support LLM for OpenKF.

Potential Drawbacks

No response

Additional Information

No response

Feature: Add Dockerfiles for web.

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

Support OpenKF running in docker clusters in first stage.

Solution Description

  1. Add web docker image in /web.
  2. Preparing for static deployment.
  3. Push image in ghcr.

Benefits

Easy to deploy system.

Potential Drawbacks

No response

Additional Information

No response

Feature: Fix db connections.

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

Avoiding database disconnection.

Solution Description

Reduce connection retention time, limit the number of connections, and set up connection pools.

Benefits

Enhance system performance.

Potential Drawbacks

No response

Additional Information

No response

Bug: Bug reports for links in OpenIM docs

Summary

Status Count
🔍 Total 208
✅ Successful 205
⏳ Timeouts 0
🔀 Redirected 0
👻 Excluded 0
❓ Unknown 0
🚫 Errors 3

Errors per input

Errors in CONTRIBUTING.md

Errors in README_zh-CN.md

Feature: Support more type for dao auto generation.

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

Now the cmd/gendao can only support for simple type(string, int, ...) because of function in Eq(generate from gorm-gen), we want the cmd can support more type, like time, bool.

	for i := 0; i < value.NumField(); i++ {
		v := value.Field(i)

		// Get the tag value
		if v.Tag != "" && v.Type.Kind() != reflect.Struct &&
			v.Type.Kind() != reflect.Bool {
			f := field{
				FieldName:     v.Name,
				NormFieldName: strings.ToLower(v.Name),
				FieldType:     v.Type.String(),
			}
			fields = append(fields, f)

			continue
		}

		// Get the embedded struct fields if the tag is empty
		if v.Tag == "" && v.Type.Kind() == reflect.Struct {
			fields = append(fields, getFieldsRecursively(v.Type)...)
		}
	}

Solution Description

Modify template.go and gen.go

Benefits

Much more easy to generate dao codes.

Potential Drawbacks

No response

Additional Information

No response

Bug: Bug reports for links in OpenIM docs

Summary

Status Count
🔍 Total 206
✅ Successful 204
⏳ Timeouts 0
🔀 Redirected 0
👻 Excluded 0
❓ Unknown 0
🚫 Errors 2

Errors per input

Errors in docs/contribution/development.md

  • [ERR] file:///home/runner/work/OpenKF/OpenKF/Vagrantfile | Failed: Cannot find file
  • [ERR] file:///home/runner/work/OpenKF/OpenKF/tests/TESTING.md | Failed: Cannot find file
    Full Github Actions output

Feature: API Documentation

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

There are two ways to generate Swagger documentation, swag and go-swagger. go-swagger is more powerful, has more concise comments, is more readable, has more stars, and has better community support

We used swag

Solution Description

make swagger + actions swagger

swagger.run: tools.verify.swagger
	@$(TOOLS_DIR)/swagger generate spec --scan-models -w $(ROOT_DIR)/cmd/* -o $(ROOT_DIR)/api/swagger/swagger.yaml

swagger.serve: tools.verify.swagger
	@$(TOOLS_DIR)/swagger serve -F=redoc --no-open --port 36666 $(ROOT_DIR)/server/*/swagger.yaml

Benefits

clear and intelligible

Potential Drawbacks

No response

Additional Information

No response

Feature: Optimization and Explanation of Directory Structure for Documentation

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

✅ Yes

Problem Description

The current directory structure for the "docs/" directory in our open-source project is not in line with the standard practices. It is important for us to design a logical and organized directory structure for our documentation. I have proposed a directory structure, but I would like suggestions for optimization and a detailed explanation of each directory's purpose.

root@PS2023EVRHNCXG:~/workspaces/openim/openkf/docs# tree 
.
├── CODEOWNERS
├── OWNERS
├── README.md
├── contribution
│   ├── cicd-actions.md
│   ├── code_conventions.md
│   ├── development.md
│   └── git_workflow.md
├── images
│   ├── Open-IM.png
│   ├── intive-slack.png
│   └── open-im-logo.png
├── proposal
│   ├── 0000-template.md
│   └── README.md
├── roadmap
│   └── OpenKF-2023.md
├── test
│   ├── e2e.md
│   └── integration.md
└── website
    └── Makefile

Solution Description

Explanation of Directory Structure:

  1. CODEOWNERS: This file specifies the individuals or teams responsible for code review and approval for different parts of the project.
  2. OWNERS: This file lists the individuals or teams who have ownership or decision-making authority over the project.
  3. README.md: This file serves as the main documentation entry point, providing an overview of the project, installation instructions, and other important information.
  4. contribution/ directory: This directory contains guidelines and documents related to contributing to the project. The files inside cover topics such as CI/CD actions, code conventions, development practices, and Git workflows.
  5. images/ directory: This directory holds images used in the documentation. It contains various image files related to the Open-IM project and its logo.
  6. proposal/ directory: This directory contains proposals for new features or changes to the project. The 0000-template.md file provides a template for creating new proposals, and the README.md file explains the purpose of this directory.
  7. roadmap/ directory: This directory includes the roadmap for the OpenKF project in 2023. The OpenKF-2023.md file outlines the planned goals, milestones, and timeline for the year.
  8. test/ directory: This directory includes documentation related to testing. It contains files such as e2e.md for end-to-end testing and integration.md for integration testing.
  9. website/ directory: This directory stores files related to building and publishing the project's website. The Makefile file is included for build automation. The idea is to use a robot and actions to automatically synchronize the documents in this directory to another repository, where the actual building process takes place. The built static documentation can then be published using services like Vercel, COS, or GitHub Actions Page.

Benefits

The proposed directory structure improves organization, collaboration, and accessibility of the project's documentation.

Potential Drawbacks

It may require complex initial setup and maintenance, have a learning curve for users, lack flexibility for customization, and potentially result in duplication or scalability challenges.

Additional Information

Optimization Suggestions:

  1. Consider creating a separate directory for API documentation if applicable, as it is often an integral part of open-source projects.
  2. Introduce a "docs/assets" directory to store non-image assets, such as CSS stylesheets, JavaScript files, or downloadable resources for the documentation.
  3. Explore the possibility of creating subdirectories within the "test/" directory to categorize different types of tests (e.g., unit tests, performance tests).
  4. Evaluate the need for additional directories based on the specific requirements and structure of the project.

Feature: Add priority to hooks.

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

Nowadays, controller hooks are registered to urls, need to add priority in trie and call hook in order.

Solution Description

Add priority in trie.
Modify genhook cmd.

Benefits

Enhance hook availability.

Potential Drawbacks

No response

Additional Information

No response

Bug reports for links in OpenIM docs

Summary

Status Count
🔍 Total 180
✅ Successful 170
⏳ Timeouts 0
🔀 Redirected 0
👻 Excluded 0
❓ Unknown 0
🚫 Errors 10

Errors per input

Errors in README_zh-CN.md

Errors in CONTRIBUTING.md

Bug: Replace openim resource header.

What happened?

Unregulated parts of the source code header.

What did you expect to happen?

Uniform source file header for license.

How can we reproduce it (as minimally and precisely as possible)?

Unregulated parts of the source code header.

Anything else we need to know?

No response

version

v0.1.1

Cloud provider

Ignore

OS version

No response

Install tools

No response

feature: init vue project

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

No response

Solution Description

Build front-end basic development environment using vue-cli.

Benefits

Init front-end project.

Potential Drawbacks

No response

Additional Information

No response

🔮[RFC #0002]: OpenIM Custom Service Proposal

[RFC openimsdk/open-im-server#2] OpenIM Custom Service Proposal

Meta

  • Name: openIM custom service proposal
  • Start Date: 2023-06-08
  • Author: IRONICBo
  • Status: Draft
  • RFC Pull Request:
  • OpenIMSDK Pull Request:
  • OpenIMSDK Issue:
  • Supersedes:

Topics

Summary

OpenIM-based open source online customer service system: Online customer service system is one of the important means for many enterprises to provide services and support to their customers. This project intends to develop an online customer service system based on the open source OpenIM instant messaging system, and introduce a large model to build a local knowledge base Q&A Bot. The system will provide online customer service, after-the-fact callback, customer management and other functions to help enterprises improve customer service quality and efficiency.

Definitions

  • Custom service: A customer service system is a software platform that helps businesses efficiently manage and resolve customer inquiries and issues.
  • LangChain: LangChain is a framework for developing applications powered by language models.
  • ChatGLM: ChatGLM-6B is an open source, bilingual conversational language model based on the General Language Model (GLM) architecture with 6.2 billion parameters. (with a minimum of 6GB of video memory at the INT4 quantization level).

Motivation

  • Provide reliable customer service customer dialogue system through OpenIM.
  • Access to Slack and Web for users to execute tests immediately.
  • Provides a large language model deployment based on a local knowledge base that can help developers or users quickly locate content.
  • Facilitate secondary development and access to richer features.

What it is

This provides a high level overview of the feature.

  • Define any new terminology.
  • Define the target persona: OpenIMSDK author, OpenIMSDK user, platform operator, platform implementor, and/or project contributor.
  • Explaining the feature largely in terms of examples.
  • If applicable, provide sample error messages, deprecation warnings, or migration guidance.
  • If applicable, describe the differences between teaching this to existing users and new users.

How it Works

The project includes login, user management, session management, platform access management, and local knowledge base management.

Login Module

  • Login with Email & Password
  • Reset password using email

User module

User Roles

  • Administrator - personal information management, team information management, customer service management, report data, platform interface, system information view, Bot management
  • General customer service - personal information management, system information view
  • User - anonymous or platform-docked information

Administrator role

  1. Personal information management
  • Set avatar, nickname, bound email, cell phone number, login password
  1. Team information management
  • Set team name, set team contact, set team contact number
  1. Customer Service Management
  • Set customer service name and email address, set initial password and send to customer service email address
  1. Report data
  • Conversation statistics
    • Including conversation information statistics, satisfaction, processing time
    • Conversation record list
  • Customer service work statistics
    • Customer service information list, including online time, average rating, number of conversations, total words of conversation
  • Different platform access statistics
    • The number of visits, the number of visitors, the number of conversations
  1. Platform docking
  • Slack platform docking settings
  • H5 docking settings
  1. System information view
  • View repository, OpenIM repository, manual
  • View online member list
  • View personal conversation data
  1. Bot Management
  • Set up special customer service - ChatGLM & langChain

Customer service roles

  1. Personal information management
  • Set avatar, nickname, bound mailbox, cell phone number, login password
  1. System information view
  • View repository, OpenIM repository, user manual
  • View online member list
  • View personal conversation data

User role

  • Anonymous questioner on the site or slack

Sessions module

Historical session lookup

  • View information about sessions that have ended.

Active session query

  • Query information about sessions that have been accessed

Session Manager

  • Session transfer, assign to other customer service
  • Proactively end a session

Platform access module

H5

  • Generate anonymous users using local IP
  • Assign customer service according to rotation policy

Slack

  • Generate anonymous users using accounts in slack
  • Assign customer service based on rotation policy

Local knowledge base module

LangChain & ChatGLM model deployment

  • Package python images using Docker and complete model inference calls using HTTP/RPC
  • Split/aggregate markdown files using scripts/API

Migration

Front-end, back-end and AI work needs to be done in the new repository.

Drawbacks

If you need to use a large language model with a local knowledge base, you may need a certain GPU footprint.

Alternatives

If you can't use the local AI model, try turning off this feature or accessing other service providers such as ChatGPT, Claude, etc.

Prior Art

There is now work by others that can be used as a reference for implementation.

Unresolved Questions

  • How can I simplify the process of deployment?
  • How to reduce the CPU/GPU resource usage?

Bug: Bug reports for links in OpenIM docs

Summary

Status Count
🔍 Total 202
✅ Successful 197
⏳ Timeouts 0
🔀 Redirected 0
👻 Excluded 0
❓ Unknown 0
🚫 Errors 5

Errors per input

Errors in docs/contribution/code_conventions.md

  • [ERR] file:///home/runner/work/OpenKF/OpenKF/tests/TESTING.md | Failed: Cannot find file

Errors in docs/contribution/development.md

  • [ERR] file:///home/runner/work/OpenKF/OpenKF/Vagrantfile | Failed: Cannot find file
  • [ERR] file:///home/runner/work/OpenKF/OpenKF/docs/contribution/git-workflow.md | Failed: Cannot find file
  • [ERR] file:///home/runner/work/OpenKF/OpenKF/BUILDING.md | Failed: Cannot find file
  • [ERR] file:///home/runner/work/OpenKF/OpenKF/tests/TESTING.md | Failed: Cannot find file
    Full Github Actions output

Bug reports for links in OpenIM docs

Summary

Status Count
🔍 Total 158
✅ Successful 124
⏳ Timeouts 0
🔀 Redirected 0
👻 Excluded 0
❓ Unknown 0
🚫 Errors 34

Errors per input

Errors in README.md

Errors in CONTRIBUTING.md

Feature: design a error code

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

Here are some suggestions for error code handling:

  • Uniqueness: Ensures that each error code is unique, which helps reduce confusion and misunderstanding.
  • Readability: Make the meaning of the error code as clear as possible, so that the programmer or user can quickly understand the type and meaning of the error.
  • Hierarchical structure: The error codes are divided into different hierarchical structures to facilitate classification and processing according to the error type.
  • Brevity: Error codes should be as short as possible to save storage space and improve processing efficiency.
  • Extensible: An extensible architecture should be designed for error codes considering the possibility of new error types in the future.
  • Easy maintenance: In order to facilitate maintenance and management, it is recommended to uniformly save the error code in a file or database for easy update and maintenance.
  • Easy to locate: The error code should contain enough information so that the programmer or user can quickly locate the cause and location of the error.
  • Semantic: The error code should be related to the actual error as much as possible, so that the programmer or user can better understand the error.

Solution Description

It is necessary to develop an error package that suits our error code design. Of course, we don't have to develop from 0 ourselves, we can do secondary packaging based on some excellent packages.

By adding new structure in the file github.com/pkg/errors/errors.go

Benefits

more and more standard~

Potential Drawbacks

No response

Additional Information

No response

Improving Actions CI/CD Workflow and Makefile for OpenKF

Currently, the Actions CI/CD workflow and Makefile in OpenKF could benefit from optimization to enhance the development and deployment process. This issue aims to identify areas for improvement and implement changes accordingly.

Specifically, the following points could be addressed:

  1. Streamlining the CI/CD workflow: Analyze the existing workflow and identify any redundant or time-consuming steps. Optimize the workflow to reduce build and deployment times, ensuring faster feedback loops for developers.
  2. Enhancing the Makefile: Evaluate the current Makefile structure and identify opportunities for simplification and organization. Consider modularizing the Makefile to improve readability and maintainability.
  3. Implementing caching mechanisms: Explore options to incorporate caching mechanisms in the CI/CD workflow and Makefile. Caching dependencies or intermediate build artifacts can significantly speed up subsequent builds and reduce overall build times.
  4. Adding automated testing: Integrate automated testing into the CI/CD workflow to ensure the stability and quality of the OpenKF system. Define test suites and implement appropriate testing frameworks to validate code changes.

By addressing these areas, we aim to optimize the Actions CI/CD workflow and Makefile in OpenKF, resulting in a more efficient and streamlined development and deployment process. This issue serves as a starting point for discussing and implementing these improvements.

Feature: Add callback api for OpenIMServer.

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

No response

Solution Description

Add callback api and redirect command to each controller.

Benefits

Support OpenIMServer callback.

Potential Drawbacks

No response

Additional Information

No response

Feature: Add cmd for db migration and code generation.

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

Need to support cmd cli.

Solution Description

Use gorm migration & template.

Benefits

Easy to migrate table & gen code with template.

Potential Drawbacks

No response

Additional Information

No response

Feature: add some frontend specifications

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

None

Problem Description

Solution Description

The current frontend project is not sufficiently standardised and there is no uniformity in the code submitted by fe members

Benefits

Improved code readability and maintainability

Potential Drawbacks

No response

Additional Information

No response

feature: Add user register with SMTP

Checklist

  • #12
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

Support user register.

Solution Description

Support user register with SMTP server, and user can register with email code.

Benefits

Support user register.

Potential Drawbacks

No response

Additional Information

No response

Feature: Add a component to support RateTime Control

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

none

Solution Description

use redis + lua

Benefits

Add a component to support RateTime Control in order to make API more safe and maintainbale

Potential Drawbacks

none

Additional Information

none

Feature: Register and login with OpenIM-Server.

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

No response

Solution Description

Use OpenIM-Server callback and sdk to register and login.

Benefits

Work with OpenIM.

Potential Drawbacks

No response

Additional Information

No response

Bug: Bug reports for links in OpenIM docs

Summary

Status Count
🔍 Total 179
✅ Successful 177
⏳ Timeouts 0
🔀 Redirected 0
👻 Excluded 0
❓ Unknown 0
🚫 Errors 2

Errors per input

Errors in docs/ISSUE_SPECIFICATION.md

Feature: add a activate email-method to reduce Zombie email

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

as we all know , to use email-method-login open-im-kf may hava an bad influence on db-table,which may generate more zombie email account

Solution Description

use activate email procedure to vertify email authenticity and correctness

Benefits

reduce zombie account

Potential Drawbacks

none

Additional Information

none

Feature: Add register method with github.

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

Nowadays, user/admin can only register with email, we need to support login with github, and get basic info to local storage.

image

Solution Description

link:

Benefits

Enhance system availability.

Potential Drawbacks

No response

Additional Information

No response

Feature: Add Dockerfiles and docker-compose for server.

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

Support OpenKF running in docker clusters in first stage.

Solution Description

  1. Add web docker image in /server.
  2. Push image in ghcr.
  3. Add docker-compose config for web,server and plugins.

Benefits

Easy to deploy system.

Potential Drawbacks

No response

Additional Information

No response

Feature: add Server-monitoring

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

when server works,we should use server-monitoring to monitor server-prams for example io,cpu,memory interface-apis'qps db-tps

Solution Description

when server goes,we should use server-monitoring to monitor server-prams
bellow are some plans for you to chose:

Benefits

none

Potential Drawbacks

none

Additional Information

none

Feature: Add login api.

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

No response

Solution Description

Login with email and password, and set status online in OpenIM-Server.

Benefits

Enhance system.

Potential Drawbacks

No response

Additional Information

No response

Feature: Add register api.

Checklist

  • I've searched for similar issues and couldn't find anything matching
  • I've discussed this feature request in the OpenIMSDK Slack and got positive feedback

Is this feature request related to a problem?

❎ No

Problem Description

No response

Solution Description

  1. Adjust mvc structure, split dao and dal module.
  2. Add cmd of dal and dao for generating basic data manipulation interface.
  3. Wrapping Redis, later need to add trace on top of this
  4. Add admin, customer service, bot, community, entity struct.

Benefits

Enhance system.

Potential Drawbacks

No response

Additional Information

No response

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.