# Kniha Jízd - Journey Book Management System Modern web application for automated journey book management with data scraping, calculation, and Excel export. ## Features ✅ **Web Interface** - Modern React/Next.js UI ✅ **Data Scraping** - Automatic attendance & journey data fetching ✅ **Smart Calculation** - Random kilometer distribution with configurable variance ✅ **Excel Export** - Download processed data ✅ **Sick Day Filtering** - Automatic exclusion of vacation/sick days ✅ **Fuel Tracking** - Refueling entry management ## Tech Stack - **Backend:** FastAPI (Python 3.11+) - **Frontend:** Next.js 15 + TypeScript + Tailwind CSS - **Data Processing:** Pandas, NumPy - **Scraping:** BeautifulSoup4, Requests ## Quick Start ### Option 1: Docker (Recommended) ```bash ./start.sh docker ``` ### Option 2: Local Development **Prerequisites:** - Python 3.11+ - Node.js 20+ **Setup:** ```bash # 1. Install backend dependencies cd backend pip install -r requirements.txt # 2. Configure credentials cp .env.example .env nano .env # Edit with your credentials # 3. Install frontend dependencies cd ../frontend npm install # 4. Start both services cd .. ./start.sh ``` **Access:** - 📊 Frontend: http://localhost:3000 (or http://YOUR_SERVER_IP:3000) - 🔧 Backend API: http://localhost:8000 (or http://YOUR_SERVER_IP:8000) - 📖 API Docs: http://localhost:8000/docs **For external access:** See [NETWORK_SETUP.md](NETWORK_SETUP.md) ## Usage 1. **Enter Credentials** - Company login details 2. **Select Month** - Choose period to process 3. **Set Kilometers** - Starting and ending odometer values 4. **Configure Vehicle** - SPZ registration (default: 4SH1148) 5. **Adjust Variance** - Random distribution factor (0.1 = 10%) 6. **Calculate** - Preview processed data 7. **Export** - Download Excel file ## API Endpoints ### `POST /api/scrape/attendance` Scrape attendance data for sick/vacation days ### `POST /api/scrape/journeybook` Scrape journey book entries ### `POST /api/calculate` Full pipeline: scrape → filter → calculate ### `POST /api/export/excel` Generate and download Excel file ## Project Structure ``` kniha_jizd/ ├── backend/ │ ├── api/ │ │ └── main.py # FastAPI endpoints │ ├── scrapers/ │ │ ├── attendance_scraper.py │ │ └── journeybook_scraper.py │ ├── calculators/ │ │ └── kilometer_calculator.py │ ├── models/ │ │ └── journey.py # Pydantic models │ └── requirements.txt ├── frontend/ │ ├── app/ │ │ ├── components/ │ │ │ ├── JourneyForm.tsx │ │ │ └── DataPreview.tsx │ │ ├── page.tsx # Main page │ │ └── layout.tsx │ └── package.json ├── old/ # Original scripts (archived) ├── docker-compose.yml └── start.sh ``` ## Configuration ### Backend `.env` ```env USERNAME=your_username PASSWORD=your_password VEHICLE_REGISTRATION=4SH1148 ``` ### Variance Parameter Controls kilometer distribution randomness: - `0.0` - Equal distribution - `0.1` - 10% variance (recommended) - `0.2` - 20% variance (more random) ## Future Enhancements (Phase 2) - 📊 Dashboard with statistics - 📈 Fuel efficiency charts - 💰 Cost tracking - 🗺️ Route history - 📑 PDF reports - 🔐 User authentication - 💾 Database persistence ## Migrated Features All functionality from original 3-script pipeline: 1. ✅ `knihajizd.py` → `scrapers/` 2. ✅ `fill_table.py` → `calculators/` 3. ✅ `fill_web.py` → Future: Playwright automation ## Development ```bash # Backend hot reload cd backend uvicorn api.main:app --reload # Frontend hot reload cd frontend npm run dev # Build for production npm run build npm start ``` ## License MIT