问答平台

一个基于Ruby on Rails构建的Stack Overflow风格问答平台,支持问答、投票、评论、知识库管理及AI增强搜索功能。

  • by Tight-Line
  • Ruby
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Tight-Line/brimming

使用说明

盈满的

一个用Ruby on Rails构建的Stack Overflow风格的问答平台。

由开发 紧线有限责任公司

特性

核心问答

  • 问题与答案 -用户在Spaces中发布问题,其他人提供答案
  • 投票系统 -社区对问题/答案的投票,按分数排序
  • 节制 -空间管理员可以将答案标记为“已解决”
  • 评论 -关于问题和答案的嵌套评论线程(最多3个级别)
  • 标签 -按空格标记问题(每个问题最多5个)

知识库

  • 条款 -用于文档和指南的长篇权威内容
  • 多种内容类型 -Markdown、HTML、PDF、Word、Excel和网页导入
  • 网页导入 -通过Jina.ai或自托管Firecrawl从URL获取内容
  • 内容提取 -从上传的文件中自动提取文本以进行搜索索引

搜索与人工智能

  • 混合搜索 -PostgreSQL全文搜索与pgvector语义回退
  • RAG集成 -基于嵌入的内容分块用于检索增强生成
  • 问答向导 -从文章和知识库生成基于人工智能的常见问题解答
  • 可配置的提供者 -支持OpenAI、Cohere、Ollama和其他嵌入/LLM提供商

用户体验

  • 用户档案 -Karma系统,包含问题、答案和最佳答案的统计数据
  • 书签 -保存问题、答案、评论和文章以备后用
  • SSO支持 -具有组到空间映射的LDAP/ActiveDirectory

即将推出

  • 电子邮件摘要 -可配置每帖、每日或每周通知
  • REST API -用于编程访问的完整API
  • MCP服务器 -通过模型上下文协议集成AI助手
  • 社交SSO -谷歌、GitHub、领英等

技术栈

  • 后端:Ruby on Rails 8.1,PostgreSQL 17(带pgvector+pg_trgm)
  • 后台作业:配备Valkey 9.0的Sidekiq
  • 搜索:PostgreSQL全文搜索+用于语义搜索的pgvector
  • 部署:Docker,适用于Kubernetes的Helm 3.x

快速开始

先决条件

  • Docker和Docker Compose
  • 制造

设置

# Clone the repository
git clone https://github.com/Tight-Line/brimming.git
cd brimming

# Set up the development environment
make setup

# Start all services
make up

# Access the application at http://localhost:33000

发展

所有开发命令都使用Makefile来保持一致性:

命令 描述
make setup 初始项目设置
make up 启动所有服务
make down 停止所有服务
make restart 重新启动所有服务
make logs 尾部服务日志
make shell 在开发容器中打开bashshell
make console 打开Rails控制台
make server 启动Rails服务器

数据库

命令 描述
make db-create 创建数据库
make db-migrate 运行挂起的迁移
make db-rollback 回滚上次迁移
make db-reset 拖放、创建、迁移和播种
make db-seed 加载种子数据

测试

我们要求所有代码都有100%的测试覆盖率。

命令 描述
make test 在覆盖范围内运行所有测试
make test-models 运行型号规格
make test-requests 运行请求规格
make test-jobs 运行作业规范
make coverage 生成覆盖率报告

代码质量

命令 描述
make lint 运行RuboCop过梁
make lint-fix 自动修复棉绒问题
make security 运行安全扫描

舵

命令 描述
make helm-lint Lint Helm图表
make helm-test 运行Helm图表测试

CI管道

make ci  # Run full CI pipeline (lint, security, test, helm)

部署

Docker Compose(类似于生产环境)

docker-compose up -d

Kubernetes(Helm)

# Install with internal PostgreSQL and Valkey
helm install brimming helm/brimming \
  --set rails.secretKeyBase="$(openssl rand -hex 64)" \
  --set postgresql.auth.password="$(openssl rand -hex 32)" \
  -n brimming \
  --create-namespace

# Or use custom values file
helm install brimming helm/brimming \
  -f my-values.yaml \
  -n brimming \
  --create-namespace

Helm chart支持:

  • 内部或外部PostgreSQL(带pgvector)
  • 内部Valkey子部件或外部Redis
  • 水平Pod自动缩放
  • 带TLS的入口
  • Pod中断预算,实现高可用性

看 helm/brimming/values.yaml 对于所有配置选项。

配置

环境变量

变量 描述 默认值
DB_HOST PostgreSQL主机 postgres
DB_PORT PostgreSQL端口 5432
DB_USER 数据库用户 brimming
DB_PASS 数据库密码 -
DB_NAME 数据库名称 brimming
REDIS_URL valkey/redis URL redis://valkey:6379/0
SECRET_KEY_BASE Rails密钥 -
SMTP_HOST SMTP服务器主机名 -
SMTP_PORT SMTP服务器端口 587
SMTP_TLS 启用TLS(true/false) -
SMTP_USER SMTP用户名(可选) -
SMTP_PASS SMTP密码(可选) -
SMTP_AUTH SMTP身份验证方法 plain
MAILER_FROM 默认发件人电子邮件 noreply@brimming.local

数据库模式

所有应用程序表都是在 brimming 架构(不是 public).这是将应用程序表与PostgreSQL系统对象分离的最佳实践。

  • 数据库名称: brimming 在除测试外的所有环境中(brimming_test)
  • 模式: brimming (搜索路径: brimming,public)
  • 控制台访问: make db-console 使用正确的search_path打开psql

开发服务

所有开发服务都通过Docker Compose运行,并使用非标准端口以避免冲突:

服务 URL 凭据
Web应用程序 http://localhost:33000 请参阅下面的“测试帐户”
Mailhog (电子邮件查看器) http://localhost:33025 无需登录
Phpldapadmin http://localhost:38080 请参阅下面的“LDAP”
PostgreSQL 本地主机:35432 brimming / brimming_dev
Valkey(Redis) 本地主机:36379 无身份验证
OpenLDAP 本地主机:30389 请参阅下面的“LDAP”

测试账户

运行后 make db-seed,这些帐户可用:

电子邮件 密码 角色
admin@example.com 密码123 管理员
sarah.chen@example.com 密码123 用户(主持人)
(所有种子用户) 密码123 各种

LDAP测试用户

使用“使用LDAP登录”登录 用户名 (非电子邮件):

用户名 密码 名称 组
jsmith 密码123 John Smith 工程、经理
琼斯 密码123 玛丽·琼斯 工程、设计
bwilson 密码123 Bob Wilson 工程、开发
agarcia 密码123 Ana Garcia 设计,经理
dlee 密码123 李 devops

Phpldapadmin

要浏览/编辑LDAP数据,请访问http://localhost:38080:

  • 登录DN: cn=admin,dc=brimming,dc=local
  • 密码: admin_secret

电子邮件(mailhog)

开发用途 Mailhog 捕获所有传出的电子邮件,而无需实际发送。访问http://localhost:33025查看捕获的电子邮件(无需登录)。

数据库控制台

make db-console  # Opens psql with correct schema

直接连接: psql -h localhost -p 35432 -U brimming -d brimming

SSO配置

LDAP服务器和组到空间的映射是通过以下位置的管理面板配置的 /admin/ldap_servers社交SSO提供商(即将推出)将可在 /admin/sso_providers.

建筑

flowchart LR
    subgraph Ingress
        LB[Load Balancer]
    end

    subgraph App[Application Layer]
        App1[Rails App]
        App2[Rails App]
    end

    subgraph Data[Data Layer]
        PG[(PostgreSQL<br/>+ pgvector)]
        VK[(Valkey)]
    end

    subgraph Workers[Background Workers]
        W1[Sidekiq]
        W2[Sidekiq]
    end

    LB --> App1
    LB --> App2

    App1 & App2 --> PG
    App1 & App2 --> VK

    VK --> W1 & W2
    W1 & W2 --> PG

贡献

看 贡献.md 作为指导方针。

行为准则

看 代码_OF_CONDUCT.md.

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 了解详情。

版权所有(c)2025 紧线有限责任公司