Files
KnowledgeBase/README.md
Knowledge Base System acf549c43c feat: 初始化知识库系统项目
- 实现基于 Laravel 11 和 Filament 3.X 的文档管理系统
- 添加用户认证和分组管理功能
- 实现文档上传、分类和权限控制
- 集成 Word 文档自动转换为 Markdown
- 集成 Meilisearch 全文搜索引擎
- 实现文档在线预览功能
- 添加安全日志和审计功能
- 完整的简体中文界面
- 包含完整的项目文档和部署指南

技术栈:
- Laravel 11.x
- Filament 3.X
- Meilisearch 1.5+
- Pandoc 文档转换
- Redis 队列系统
- Pest PHP 测试框架
2025-12-05 14:44:44 +08:00

316 lines
8.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 知识库系统
基于 Laravel 11 和 Filament 3.X 构建的企业级文档管理平台,支持 Word 文档上传、自动转换为 Markdown、全文搜索和基于分组的权限控制。
[![Laravel](https://img.shields.io/badge/Laravel-11.x-red.svg)](https://laravel.com)
[![Filament](https://img.shields.io/badge/Filament-3.x-orange.svg)](https://filamentphp.com)
[![PHP](https://img.shields.io/badge/PHP-8.1+-blue.svg)](https://php.net)
[![License](https://img.shields.io/badge/license-MIT-green.svg)](LICENSE)
## ✨ 功能特性
### 📄 文档管理
- **多格式支持**:支持 .doc 和 .docx 格式的 Word 文档上传
- **智能分类**
- 全局知识库:所有用户可访问
- 专用知识库:仅特定分组用户可访问
- **安全下载**:支持原始文档下载,自动记录下载日志
- **在线预览**Markdown 格式在线预览,无需下载
### 🔄 自动转换
- **异步处理**:使用 Laravel Queue 异步转换文档
- **多引擎支持**:支持 Pandoc 或 PHPWord 作为转换引擎
- **状态跟踪**:实时显示转换状态(待处理、处理中、已完成、失败)
- **容错机制**:转换失败不影响文档正常使用
### 🔍 全文搜索
- **快速搜索**:集成 Meilisearch 提供毫秒级搜索响应
- **多字段搜索**:同时搜索标题、描述和文档内容
- **智能过滤**:搜索结果自动应用权限过滤
- **高级筛选**:支持按类型、分组、上传者等条件筛选
### 🔐 权限控制
- **灵活分组**:用户可以属于多个分组
- **细粒度控制**
- 全局文档:所有用户可访问
- 专用文档:只有所属分组用户可访问
- **多层验证**:在查询、下载、预览等操作中强制执行权限
- **安全审计**:记录所有未授权访问尝试
### 🎨 用户界面
- **现代化设计**:基于 Filament 3.X 的美观管理界面
- **完整中文化**:所有界面元素使用简体中文
- **响应式布局**:完美支持桌面和移动设备
- **直观操作**:简洁的操作流程,降低学习成本
## 🚀 快速开始
### 环境要求
- PHP 8.1 或更高版本
- Composer 2.x
- Node.js 18+ 和 npm
- MySQL 8.0+ 或 PostgreSQL 13+
- Redis 6.0+
- Meilisearch 1.5+
- Pandoc 2.x+(可选,用于文档转换)
### 安装步骤
1. **克隆项目**
```bash
git clone <repository-url>
cd knowledge-base-system
```
2. **安装依赖**
```bash
composer install
npm install
```
3. **配置环境**
```bash
cp .env.example .env
php artisan key:generate
```
编辑 `.env` 文件,配置数据库连接:
```env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=knowledge_base
DB_USERNAME=your_username
DB_PASSWORD=your_password
```
4. **运行迁移**
```bash
php artisan migrate
```
5. **生成测试数据**(可选)
```bash
php artisan db:seed
```
6. **创建管理员账户**
```bash
php artisan make:filament-user
```
7. **编译前端资源**
```bash
npm run build
```
8. **启动服务**
在不同的终端窗口中运行:
```bash
# Laravel 开发服务器
php artisan serve
# 队列工作进程
php artisan queue:work
# Meilisearch如果本地安装
meilisearch --master-key="your-master-key"
```
9. **访问系统**
打开浏览器访问:`http://localhost:8000/admin`
## 📚 文档
- [项目概览](docs/PROJECT_OVERVIEW.md) - 系统架构和功能详解
- [部署指南](docs/DEPLOYMENT.md) - 生产环境部署步骤
- [API 参考](docs/API_REFERENCE.md) - 服务类和方法文档
- [Meilisearch 配置](docs/MEILISEARCH_SETUP.md) - 搜索引擎配置说明
- [文档转换指南](docs/DOCUMENT_CONVERSION_GUIDE.md) - 转换功能配置
- [安全日志](docs/security-logging.md) - 安全审计功能说明
## 🔧 配置
### Meilisearch 配置
`.env` 文件中配置:
```env
MEILISEARCH_HOST=http://127.0.0.1:7700
MEILISEARCH_KEY=your-master-key
SCOUT_DRIVER=meilisearch
```
### 文档转换配置
```env
DOCUMENT_CONVERSION_DRIVER=pandoc
PANDOC_PATH=/usr/local/bin/pandoc
CONVERSION_TIMEOUT=300
```
### 队列配置
```env
QUEUE_CONNECTION=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
```
详细配置说明请参考 [部署指南](docs/DEPLOYMENT.md)。
## 🧪 测试
### 运行测试
```bash
# 运行所有测试
php artisan test
# 运行特定测试
php artisan test --filter=DocumentAccessScopePropertyTest
# 生成测试覆盖率报告
php artisan test --coverage
```
### 测试类型
- **单元测试**:测试独立的类和方法
- **功能测试**:测试完整的用户流程
- **属性测试**:使用 Property-Based Testing 验证核心逻辑
## 📦 技术栈
### 后端
- **Laravel 11.x** - PHP Web 应用框架
- **Filament 3.X** - 管理面板框架
- **Laravel Scout** - 全文搜索集成
- **Meilisearch** - 快速搜索引擎
- **Pandoc** - 文档格式转换工具
### 前端
- **Blade** - Laravel 模板引擎
- **Tailwind CSS** - CSS 框架
- **Alpine.js** - JavaScript 框架Filament 内置)
- **Livewire** - 全栈框架Filament 内置)
### 数据库
- **MySQL 8.0+** 或 **PostgreSQL 13+**
- **Redis** - 缓存和队列
### 开发工具
- **Pest PHP** - 测试框架
- **PHPStan** - 静态分析工具
- **Laravel Pint** - 代码格式化工具
## 🗂️ 项目结构
```
knowledge-base-system/
├── app/
│ ├── Filament/ # Filament 资源和页面
│ │ ├── Pages/ # 自定义页面(搜索)
│ │ └── Resources/ # 资源管理(文档、分组、用户)
│ ├── Http/
│ │ └── Controllers/ # 控制器(文档预览)
│ ├── Jobs/ # 队列任务(文档转换)
│ ├── Models/ # Eloquent 模型
│ ├── Observers/ # 模型观察者(文档索引)
│ ├── Policies/ # 授权策略
│ └── Services/ # 业务逻辑服务
├── config/
│ ├── documents.php # 文档转换配置
│ ├── filesystems.php # 文件存储配置
│ └── scout.php # Meilisearch 配置
├── database/
│ ├── factories/ # 测试数据工厂
│ ├── migrations/ # 数据库迁移
│ └── seeders/ # 数据填充
├── docs/ # 项目文档
├── resources/
│ └── views/ # Blade 视图模板
├── storage/
│ └── app/
│ └── private/
│ ├── documents/ # 原始文档存储
│ └── markdown/ # Markdown 文件存储
├── tests/ # 测试文件
└── .kiro/
└── specs/ # 功能规格文档
```
## 🤝 贡献
欢迎贡献代码!请遵循以下步骤:
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
## 📝 更新日志
### v1.0.0 (2025-12-05)
#### 已实现功能
- ✅ 用户认证和授权
- ✅ 用户分组管理
- ✅ 文档上传和存储
- ✅ 文档分类(全局/专用)
- ✅ 基于分组的权限控制
- ✅ 文档下载和日志记录
- ✅ Word 文档自动转换为 Markdown
- ✅ 异步队列处理转换任务
- ✅ Meilisearch 全文搜索集成
- ✅ 文档 Markdown 在线预览
- ✅ 搜索结果权限过滤
- ✅ 安全日志记录
- ✅ Filament 管理面板
- ✅ 完整中文界面
#### 待完成功能
- ⏳ 属性基础测试Property-Based Testing
- ⏳ 完整的功能测试套件
- ⏳ 性能优化(缓存、索引优化)
- ⏳ UI 增强Alpine.js 动画和交互)
## 🔒 安全
如果发现安全漏洞,请发送邮件至 security@example.com我们会及时处理。
请勿在公开的 issue 中报告安全问题。
## 📄 许可证
本项目采用 MIT 许可证。详情请参阅 [LICENSE](LICENSE) 文件。
## 🙏 致谢
感谢以下开源项目:
- [Laravel](https://laravel.com) - 优雅的 PHP 框架
- [Filament](https://filamentphp.com) - 强大的管理面板
- [Meilisearch](https://www.meilisearch.com) - 快速搜索引擎
- [Pandoc](https://pandoc.org) - 通用文档转换器
- [Tailwind CSS](https://tailwindcss.com) - 实用优先的 CSS 框架
## 📞 联系方式
- **问题反馈**: 请在 GitHub Issues 中提交
- **功能建议**: 欢迎在 GitHub Discussions 中讨论
---
**开发状态**: 🚧 活跃开发中
**最后更新**: 2025-12-05
**版本**: 1.0.0