Files
2026-06-21 10:00:13 +08:00

86 lines
2.5 KiB
Markdown

# FTC Ticketing System (Refactored)
A comprehensive ticketing solution for Minecraft (CC:Tweaked) with a modern Web Control Panel.
## Features
* **Ticket Machine (Lua)**: Issue tickets, print receipts, write to floppy disks.
* **Gate (Lua)**: Validate tickets, control redstone doors, track entries/exits.
* **Web Console**:
* **Real-time Dashboard**: Live updates of sales and passenger flow via Socket.IO.
* **Visual Line Editor**: Manage stations and lines with an interactive SVG map.
* **Fare Management**: Configure fares with a visual fare chart.
* **Logs**: Track ticket usage and system operations.
* **System Settings**: Configure API endpoints and promotions.
* **File Manager**: Upload and manage audio files (`.dfpwm`) for devices.
## Project Structure
* `server/`: Node.js Backend (Express + Socket.IO).
* `services/`: Data and logic handling.
* `routes/`: API endpoints.
* `web/`: Frontend (Vue 3 + Socket.IO Client).
* `index.html`: The new Control Panel.
* `index.js`: Vue 3 logic.
* `Lua/`: CC:Tweaked scripts.
## Installation
1. **Prerequisites**: Node.js 16+.
2. **Install Dependencies**:
```bash
npm install
```
## Running the Server
### Development
```bash
npm start
```
Access the console at `http://localhost:23333`.
### Production (PM2)
This project includes an `ecosystem.config.js` for PM2.
```bash
# Start
pm2 start ecosystem.config.js
# View logs
pm2 logs ticket-machine
# Restart
pm2 restart ticket-machine
```
## Configuration
* **Server Port**: Default `23333`. Set `PORT` environment variable to change.
* **Data Storage**: All data is stored in `web/data/`.
* **CC:Tweaked Devices**:
* Run `install_machine.lua` or `install_gate.lua` on your turtles/computers.
* Point them to your server's IP (e.g., `http://YOUR_IP:23333/api`).
## API
* `/api`: Admin API (Stations, Lines, Fares, Logs).
* `/api/public`: Public API for devices (Ticket queries, Orders).
* **WebSocket**: Connect to `/` for real-time events (`stations:updated`, `stats:ticket:updated`, etc.).
## Troubleshooting
### Error: bind EADDRINUSE 0.0.0.0:23333
This means the port 23333 is already occupied.
1. Stop the PM2 process: `pm2 stop ticket-machine`
2. Find the process holding the port: `lsof -i :23333` or `netstat -tunlp | grep 23333`
3. Kill the process: `kill -9 <PID>`
4. Restart PM2: `pm2 restart ticket-machine`
### Error: Cannot find module 'express'
Run `npm install` in the project directory to install dependencies.
## License
MIT