ALEXPURRENKEI/WIRAM-Wildlife-Incident-Reporting-Compensation-Management-System
GitHub: ALEXPURRENKEI/WIRAM-Wildlife-Incident-Reporting-Compensation-Management-System
一个用于报告野生动物冲突事件并管理补偿申请的Web管理系统。
Stars: 0 | Forks: 0
# WIRAM
野生动物事件报告与补偿管理系统
本仓库包含:
- 使用 HTML、CSS 和原生 JavaScript 构建的响应式静态前端
- 带有 PostgreSQL 持久化的 Spring Boot 后端,用于支持真实 API 工作流
当前端配置了后端 URL 时,会与 Spring Boot API 通信;同时仍保留 localStorage 演示备用方案,以便离线/测试使用。
## 项目结构
```
/frontend
index.html
login.html
register.html
dashboard.html
report.html
my-reports.html
claim-status.html
officer-dashboard.html
verify-incidents.html
admin-dashboard.html
manage-users.html
reports.html
/css/styles.css
/js/app.js
/js/auth.js
/js/reports.js
/assets/images/
vercel.json
/spring-backend
pom.xml
src/main/java/com/wiram/backend/
src/main/resources/application.yml
render.yaml
```
## 演示账户
所有演示用户的密码:`password123`
- `member@wiram.org`
- `officer@wiram.org`
- `admin@wiram.org`
## 本地开发
### 前端
使用静态服务器打开 `frontend` 文件夹,或直接部署到 Vercel。
默认情况下,前端在本地开发时会在 `http://localhost:8080` 查找 API。
如果将后端部署到 Render,请更新 `frontend/js/app.js` 中的前端 API 基础 URL,或将 `localStorage.wiram_api_base_url` 设置为你的 Render 服务 URL。
### 后端
环境要求:
- Java 17
- Maven
从 `spring-backend` 文件夹运行 Spring 后端:
```
mvn spring-boot:run
```
## 环境变量
在 Render 上为 Spring Boot 后端设置以下变量:
- `DATABASE_URL`
- `CORS_ORIGIN`
- `SEED_DEMO_DATA`
- `PORT`
推荐值:
- `DATABASE_URL` = 你的 Neon PostgreSQL 连接字符串
- `CORS_ORIGIN` = 你的前端 URL 或本地测试时使用 `*`
- `SEED_DEMO_DATA` = 演示环境设为 `true`,生产环境设为 `false`
注意事项:
- 不要将 `DATABASE_URL` 提交到前端或仓库中。
- 后端会在内部将原始 Neon URI 规范化为 JDBC 连接。
- 认证端点返回的令牌可以作为 `Authorization: Bearer ` 或 `X-Auth-Token` 发送。
- 如果 PostgreSQL 不可用或缺少 `DATABASE_URL`,后端会回退到内存中的 H2 数据库,以便服务仍能在 Render 上启动。要保持生产环境持久化,请配置 `DATABASE_URL`。
- Render Blueprint 默认将 `SEED_DEMO_DATA` 设为 `false`,以便生产部署更快启动;仅在需要预加载演示记录时才将其开启。
- Render Blueprint 现在设置 `dockerCommand: java -jar /app/app.jar`,以便服务不会从仪表板继承旧的 `mvn` 启动命令。
## API 概要
Spring Boot 后端提供以下端点:
- `/api/health`
- `/api/auth/register`
- `/api/auth/login`
- `/api/auth/logout`
- `/api/auth/me`
- `/api/reports`
- `/api/reports/my`
- `/api/reports/{id}`
- `/api/reports/{id}/status`
- `/api/reports/{id}/history`
- `/api/dashboard`
- `/api/dashboard/member`
- `/api/dashboard/officer`
- `/api/dashboard/admin`
- `/api/users`
- `/api/users/{id}/role`
## Render / Vercel 部署
推荐配置步骤:
1. 将 Vercel 项目根目录设置为 `frontend`。
2. 使用随附的 `render.yaml` Blueprint 将 Spring Boot 后端部署到 Render。
3. 将上述环境变量添加到 Render。
4. 保持前端为静态,并在配置好后将调用指向 Render API。
后端的 Render 部署选项:
- 推荐:使用随附的 `render.yaml` Blueprint,它将 Spring 后端部署为 Docker Web 服务。
- 如果你保留手动创建的 Java 服务,请使用:
- 构建命令:`mvn -DskipTests package`
- 启动命令:`java -Dserver.port=$PORT -jar target/wiram-spring-backend-1.0.0.jar`
- 不要使用 `mvn spring-boot:run` 作为 Render 启动命令。运行时镜像不包含 Maven,这就是部署失败的原因。Docker 镜像直接启动 JAR,Spring Boot 应用在启动时读取 Render 的 `PORT` 环境变量。
## 注意事项
- 默认情况下会自动创建演示用户和示例事件。
- 如果想在生产环境中禁用演示数据集,请设置 `SEED_DEMO_DATA=false`。
- 后端通过 JPA/Hibernate 使用 PostgreSQL,已准备好部署到 Render。
- 如果使用 Docker Blueprint,Render 只需要 Blueprint 中的仓库路径以及 `DATABASE_URL` / `CORS_ORIGIN` 环境变量。
标签:CMS安全, CSS, HTML, JavaScript, JS文件枚举, Maven, PostgreSQL, REST API, Spring Boot, Vercel部署, 人与野生动物冲突, 仪表板, 响应式Web设计, 多模态安全, 报告系统, 政务系统, 数字平台, 数据可视化, 本地存储, 测试用例, 漏洞验证, 用户认证, 离线支持, 管理员, 管理系统, 索赔跟踪, 自定义脚本, 补偿管理, 透明高效, 野生动物管理