blanca890/GeOS_Prod

GitHub: blanca890/GeOS_Prod

GeoS 是为菲律宾武装部队设计的地理定位调度系统,通过实时地图、技能匹配和任务管理实现事件响应与人员部署的数字化。

Stars: 0 | Forks: 0

GeoS Logo

GeoS — 支持地理定位的在线系统

AFP 支持地理定位的调度系统
用于菲律宾武装部队的事件响应和任务部署。

Laravel PHP React TypeScript PostgreSQL Docker Tailwind

## 什么是 GeoS? GeoS 是一个为菲律宾武装部队打造的**支持地理定位的调度平台**。它通过两种调度模式管理现役 AFP 人员的部署: ### 模式 A — 事件响应(紧急) 当外部机构(消防部门、地方政府部门、 barangay)致电 AFP 调度员请求立即协助时: 1. 调度员创建包含位置和所需技能的事件 2. GeoS 通过 **geo-radius + MOS 匹配**寻找最近的合格人员 3. 人员接收带有“一键响应”功能的**紧急通知** 4. 实时**逐步导航**引导人员前往事件现场 5. 调度员在**实时地图**上追踪所有响应人员 ### 模式 B — 计划任务 / 项目(非紧急) 当 AFP 内部需要人员执行计划中的行动时: 1. 调度员发布包含位置、geo-radius 和所需技能的任务 2. GeoS 寻找附近合格的并发送标准通知 3. 人员**自愿报名**他们想加入的任务 4. 调度员**审核并接受/拒绝**申请 5. 被接受的人员接收任务详情和部署命令 ## 角色架构 | 角色 | UI 标签 | 描述 | |------|----------|-------------| | `admin` | 管理员 | AFP 管理人员 — 管理账户、日志、系统设置 | | `recruiter` | 调度员 | AFP 军官 — 发布任务、审核志愿者申请、管理事件 | | `personnel` | 人员 | 现役士兵 — 仪表板、签到、请假、任务分配、智能通知 | | `applicant` | 申请者 | 受邀执行特定任务的士兵 — 用于申请追踪的轻量级账户 | ### 人员子角色 | 子角色 | 适用对象 | 权限 | |----------|-----|-------------| | **指挥官 (CO)** | 舰长 / 指挥官 | 批准请假和晋升、管理单位名册、监控实时 GPS、推荐人员 | | **入伍军人** | 普通士兵 | 提交请假申请、申请晋升、签到、自愿参与任务 | ## 技术栈 | 层级 | 技术 | |-------|-----------| | **后端** | Laravel 12, PHP 8.2 | | **认证** | Laravel Fortify (支持 2FA) | | **前端** | React 19, TypeScript (严格模式), Inertia.js | | **UI** | shadcn/ui + Radix UI, Tailwind CSS v4 (oklch) | | **数据库** | PostgreSQL (Supabase) | | **实时通信** | Laravel Reverb (WebSockets) | | **地图** | Leaflet + react-leaflet | | **3D** | Three.js + React Three Fiber | | **构建** | Vite + React Compiler | | **测试** | Pest (PHP), Vitest + Playwright (JS) | | **基础设施** | Docker (PHP 8.2 + Node 20) | ## 快速开始(本地开发) ### 前置条件 - **Docker Desktop**(推荐)或本地安装 PHP 8.2 + Node 20 + PostgreSQL - **Supabase** 账户(用于 PostgreSQL 数据库) ### 设置 ``` # 1. 克隆仓库 git clone https://github.com/blanca890/GeoS_Prod.git cd GeoS_Prod # 2. 复制环境文件并进行配置 cp .env.example .env # 使用你的 Supabase PostgreSQL 凭证和应用配置编辑 .env # 3. 使用 Docker 启动 docker compose up --build # 4. 安装依赖并运行 migrations(在容器内) docker compose exec app composer install docker compose exec app php artisan migrate --seed docker compose exec app npm install # 5. 启动开发服务器 composer dev ``` 应用程序将在 **http://localhost:8000** 提供。 ### 常用命令 | 命令 | 用途 | |---------|---------| | `composer dev` | 启动 Laravel + 队列 + Vite | | `composer test` | 运行所有测试 (lint + Pest) | | `npm run build` | 构建生产环境前端 | | `npm run lint` | ESLint 修复 | | `npm run types` | TypeScript 类型检查 | | `docker compose up --build` | 重新构建容器 | ## 项目结构 ``` GeoS/ ├── app/ # Laravel backend (Controllers, Models, Services, Jobs) │ ├── Http/ # Controllers, Middleware, Requests │ ├── Models/ # Eloquent models │ ├── Services/ # Business logic services │ └── Notifications/ # Email & push notifications ├── resources/ │ ├── js/ # React + TypeScript frontend │ │ ├── components/ # Reusable UI components │ │ ├── pages/ # Role-based pages (admin, recruiter, personnel, applicant) │ │ └── hooks/ # Custom React hooks │ └── css/ # Tailwind CSS + design tokens ├── database/ │ ├── migrations/ # PostgreSQL migrations │ └── seeders/ # Database seeders ├── routes/ # Laravel route definitions ├── tests/ # Pest PHP tests ├── e2e/ # Playwright end-to-end tests ├── docker/ # Docker configuration │ └── nginx/ # Nginx config for production ├── docs/ # Full documentation └── docker-compose.yml # Docker Compose configuration ``` ## 文档 完整的项目文档可在 [`docs/`](docs/) 目录中找到: | 文档 | 描述 | |----------|-------------| | [ARCHITECTURE.md](docs/ARCHITECTURE.md) | 系统架构与设计指南 | | [SETUP.md](docs/SETUP.md) | 详细的设置说明 | | [API.md](docs/API.md) | API endpoint 参考 | | [TESTING_GUIDE.md](docs/TESTING_GUIDE.md) | 如何编写和运行测试 | | [DOCKER.md](docs/DOCKER.md) | Docker 设置详情 | | [CHANGES.md](docs/CHANGES.md) | Sprint 与功能历史 | | [DEPLOYMENT_GUIDE.md](docs/DEPLOYMENT_GUIDE.md) | 生产环境部署指南 | ## 安全 - **认证**:Laravel Fortify 支持 2FA - **授权**:基于角色的访问控制(管理员、调度员、人员、申请者) - **数据库**:所有查询均使用参数化语句(防止 SQL 注入) - **CSRF/XSS**:Laravel 内置防护 + 输入清理 - **密钥**:基于环境的配置 — 源代码中无密钥 ## 许可证 本项目作为菲律宾武装部队的毕业设计项目进行开发。许可条款待定。

由 FEU Tech Capstone 团队 使用 构建 • GeoS 2026

标签:Laravel, React, Syscalls, 任务调度系统, 地理定位, 应急救援, 测试用例, 特征检测, 自动化攻击, 请求拦截