Token导航 LogoToken导航TokenDH.com
Tickets System logo
办公协作未说明官方级别未说明来源级核验

Tickets System

MCP Server

SupportFlow AI 是一个开源的 IT 服务台和工单系统,提供完整的后端 API 用于管理支持工单、用户、通知和实时通讯,并具备 AI 集成的基础设施。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
C#团队协作任务管理

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

ElAguilaPrograma

提供方

ElAguilaPrograma

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

SupportFlow AI

SupportFlow AI是一个基于ASP构建的开源IT帮助台和票务系统。NET核心。它提供了一个完整的后端API,用于管理支持票证、用户、通知和实时通信,并通过模型上下文协议(MCP)为人工智能集成准备了基础设施。

特性

  • 票务管理 --创建、更新、分配、接受、关闭和重新打开支持票证,并跟踪优先级和状态。
  • 基于角色的访问 --三个角色:管理员、代理和最终用户,每个操作都有精细的权限。
  • 实时通知 --用于新工单、状态更改和评论的实时更新。
  • 评论系统 --内部(仅限代理)和外部(票所有人可见)评论,实时交付。
  • 门票历史 --对每个工单所做的所有更改进行完整的审计跟踪,按更改事件分组。
  • 文件存储 --配置文件图片和票附件存储在Supabase存储中,并经过验证(魔术字节验证,限制为25 MB)。
  • Excel导出 --将门票和用户导出到 .xlsx 使用ClosedXML格式。
  • JWT身份验证 --使用HttpOnly Cookie和7天令牌过期进行安全登录。
  • 分页和过滤 --按状态、优先级、日期范围、分配的用户等筛选票证。
  • AI就绪基础设施 --为基于MCP的AI模型集成(意图分类、自动回复建议等)准备的数据库模式。

技术栈

技术目的
.NET 10.0运行时框架
ASP。NET核心Web API框架
实体框架核心10.0ORM
PostgreSQL主数据库
NpgsqlPostgreSQL提供程序
ACK/AAzure ACK实时消息传递
数据库存储文件存储
FluentVerification请求验证
FluentResults结果模式
ClosedXMLExcel生成
JWT承载身份验证
SwashbuckleAPI文档
xUnit+Moq+FluentAssessments测试

建筑

该解决方案遵循一个干净的架构模式,有四个主要层:

TicketsSystem.slnx
├── TicketsSystem.Domain      -- Entities, enums, repository interfaces
├── TicketsSystem.Data        -- EF Core DbContext, migrations, repositories, Unit of Work
├── TicketsSystem.Core        -- Services, DTOs, mappers, validations, business logic
├── TicketsSystem.Api         -- Controllers, SignalR hubs, middleware, Program.cs
├── TicketsSystem.Tests       -- Unit tests (53)
├── TicketsSystem.Tests.Integration -- Integration tests (10)
└── TicketClientTest          -- Console app for SignalR testing

先决条件

入门指南

1.克隆存储库

git clone https://github.com/your-org/supportflow-ai.git
cd supportflow-ai/TicketsSystem.Server

2.配置数据库

创建PostgreSQL数据库并更新中的连接字符串 TicketsSystem.Api/appsettings.Development.json:

{
  "ConnectionStrings": {
    "DefaultConnection": "Host=localhost;Port=5432;Database=supportflow;Username=postgres;Password=your_password"
  }
}

应用程序在启动时通过以下方式自动应用迁移 dbContext.Database.Migrate().

3.配置JWT和Supabase(可选)

在同一文件中,配置JWT设置和Supabase凭据:

{
  "Jwt": {
    "Key": "your-secret-key-at-least-32-characters-long",
    "Issuer": "SupportFlowAI",
    "Audience": "SupportFlowAI"
  },
  "Supabase": {
    "Url": "https://your-project.supabase.co",
    "Key": "your-supabase-key"
  }
}
注: 在未配置Supabase的情况下,应用程序仍将运行,但文件上传功能将不可用。

4.运行应用程序

dotnet run --project TicketsSystem.Api

API将在以下网址提供:

  • HTTP: http://localhost:5056
  • HTTPS: https://localhost:7121

Swagger用户界面: https://localhost:7121/swagger

5.种子数据

首次启动时,应用程序会自动播种:

  • 默认管理员用户: admin@example.com / Admin123!
  • 票证状态: 打开、进行中、暂停、关闭、重新打开
  • 门票优先级: 低、中、高、临界

测试证书

角色电子邮件密码
管理prueba3@gmail.com测试3
代理人agente@example.com代理123
用户user@example.com用户123

运行测试

单元测试

dotnet test TicketsSystem.Tests

53个测试,涵盖服务(票证、用户、通知、角色、当前用户)和验证逻辑。所有的依赖关系都被嘲笑了。

集成测试

dotnet test TicketsSystem.Tests.Integration

10个测试针对一个带有内存中API主机的真实SQL Server容器(通过Testcontainers)运行。测试涵盖了完整的身份验证流程、票证CRUD持久性和Contoso实时事件。

注: 集成测试需要运行Docker Desktop。

API概述

身份验证(/api/authentication)

  • POST /login --在HttpOnly cookie中验证和接收JWT
  • POST /logout --清除身份验证cookie
  • GET /getcurrentuser --获取当前用户声明
  • POST /createuser --创建新用户(管理员)
  • GET /getallusers --列出分页用户(管理员)
  • PUT /updateuser/{userId} --更新用户信息(管理员)

门票(/api/tickets)

  • POST /createticket --创建新票证
  • GET /gettickets --列出带有过滤器和分页的门票
  • GET /getticketbyid/{ticketId} --获取门票详细信息
  • PUT /updateticketinfo/{ticketId} --更新工单(管理员/代理)
  • PUT /updateticketuser/{ticketId} --更新自己的工单(用户)
  • POST /assingtickets/{ticketId}/{userId} --将票分配给代理(管理员)
  • POST /accepttickets/{ticketId} --自行分配门票(代理)
  • POST /closetickets/{ticketId} --关闭工单(管理员/代理)
  • POST /reopentickets/{ticketId} --重新打开工单(管理员/代理)
  • GET /exporttickets --将门票导出到Excel

评论(/api/ticketcomments)

  • POST /createticketcomment/{ticketId} --添加评论(内部或外部)
  • GET /getticketscomment/{ticketId} --获取门票的所有评论

历史(/api/tickethistory)

  • GET /gettickethistory/{ticketId} --获取工单的分组更改历史记录

通知(/api/notifications)

  • GET /getusernotifications/{userId} --获取用户通知
  • PUT /tooglenotificationreadstatus/{notificationId} --将通知标记为已读

实时(ViewModel)

连接到 /ticketHub 接收现场活动:

  • ReceiveNewTicket --创建了一张新票
  • ReceiveNewTicketStatusChange --票证状态已更改
  • ReceiveNewTicketComment --添加了一条新评论

领域模型

实体描述
用户具有角色(管理员、代理、用户)的系统用户
票证支持具有状态、优先级和分配的票证
TicketStatus查找表(打开、进行中、暂停、关闭、重新打开)
TicketPriority查找表(低、中、高、严重)
TicketComment对门票的评论(内部或外部)
TicketAttachment门票文件附件
票务历史票务变更的审计跟踪
通知工单事件触发的用户通知
Mcprequest/Mcpresponse未来MCP集成的AI请求/响应记录

项目配置

跨域资源共享

配置为允许 http://localhost:4200 (Angular开发)和生产Azure静态Web App URL。支持基于cookie的身份验证凭据。

信号员

  • 开发中:内存中
  • 在生产环境中:Azure ViewModel服务

文件存储

文件上传到Supabase Storage并进行验证:

  • 最大文件大小:25 MB
  • 支持的图像格式:JPEG、PNG、GIF(通过内容类型和魔术字节验证)

许可证

这个项目是开源的。有关详细信息,请参阅LICENSE文件。

目录标签

目录标签

C#团队协作任务管理工单管理本地部署实时通讯AI集成角色权限文件存储

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

session

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明session部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP