luiz-oberto/occurrence-management-viaAppia
GitHub: luiz-oberto/occurrence-management-viaAppia
为 Hackathon Via Appia 打造的全栈事件管理系统,提供事件注册、跟踪、筛选、评论协作和统计分析等能力。
Stars: 0 | Forks: 0
# 事件管理系统
为 Hackathon Via Appia 开发的 fullstack 项目。
该系统旨在允许对事件进行注册、跟踪、过滤、更新和查询,并具备用户身份验证、角色控制、评论、统计以及通过 Swagger/OpenAPI 提供的文档。
## 主要技术栈
### 后端
- Java 17+
- Spring Boot 3+
- Spring Security
- JWT
- Spring Data JPA
- PostgreSQL
- Flyway
- Swagger/OpenAPI
- Caffeine Cache
### 前端
- Angular 16+
- TypeScript
- Angular Router
- Angular HttpClient
- Interceptor JWT
- Guards de rota
- 组件化
### 本地基础设施
- Docker
- Docker Compose
- PostgreSQL
## 项目初始结构
```
gestao-ocorrencias/
├── backend/
├── frontend/
├── docker-compose.yml
├── README.md
└── .gitignore
```
### 主要实体
### 事件
表示在系统中注册的事件。
主要字段:
- id
- 标题
- 描述
- 优先级
- 状态
- 负责人
- 标签
- 创建日期
- 更新日期
### 评论
表示附加到事件上的消息。
主要字段:
- id
- incidentId
- 作者
- 消息
- 创建日期
### 访问角色
系统应具有强制身份验证,且至少包含两种角色:
- VIEWER:只读访问权限
- EDITOR 或 ADMIN:读写访问权限
### 预期的最小 endpoints
```
GET /incidents
GET /incidents/{id}
POST /incidents
PUT /incidents/{id}
DELETE /incidents/{id}
PATCH /incidents/{id}/status
POST /incidents/{id}/comments
GET /incidents/{id}/comments
GET /stats/incidents
```
### 事件列表中预期的过滤器
```
status
prioridade
q
page
size
sort
```
### 如何启动本地数据库
在项目根目录下,执行:
```
docker compose up -d
```
检查 container 是否正在运行:
```
docker compose ps
```
通过终端访问 PostgreSQL:
```
docker exec -it gestao-ocorrencias-db psql -U app_user -d gestao_ocorrencias
```
停止 containers:
```
docker compose down
```
同时删除持久化在 volume 中的数据:
```
docker compose down -v
```
### 开发状态
- [x] 仓库初始结构
- [x] 包含 PostgreSQL 的初始 Docker Compose
- [ ] 创建 Spring Boot 项目
- [ ] 在后端配置 PostgreSQL
- [ ] Incident 和 Comment 实体
- [ ] 使用 Flyway 进行 Migrations
- [ ] Repositories
- [ ] DTOs
- [ ] Mapper
- [ ] Services
- [ ] Controllers
- [ ] 验证
- [ ] 错误处理
- [ ] 使用 Specification 进行过滤
- [ ] 分页和排序
- [ ] 评论
- [ ] 统计数据
- [ ] JWT 身份验证
- [ ] Swagger/OpenAPI
- [ ] 使用 Caffeine 进行缓存
- [ ] 后端 Docker 化
- [ ] 创建 Angular 项目
标签:Angular, Docker, Grype, PostgreSQL, Spring Boot, 事件管理系统, 安全防御评估, 测试用例, 版权保护, 请求拦截