Files
QWE-Telco/TelcoPortal-README.md
T

81 lines
3.5 KiB
Markdown
Executable File

# Queensway Europe Telco Portal
Management web portal for:
- The mobile phone repository (phone numbers, plan, contract expiration, replacement
eligibility, current owner, venue)
- Internet connectivity at each restaurant venue
Same deployment approach as TostaSklad/TostaPortal: a Docker container you run locally on this
PC with Docker Desktop, with all data kept in a bind-mounted folder outside the container. See
`README-Docker.md` for how to start/stop it.
## Folder layout
```
QWE Telco/
docker-compose.yml
README-Docker.md <- Docker instructions (start here)
TelcoPortal-README.md <- this file
TelcoPortal-source/ <- Flask app source (rebuilt into the Docker image)
TelcoPortal-data/
telco.db <- the SQLite database (both tables live in this one file)
```
## Data model
**Mobile Phones** (`phones` table): Phone Number, Plan, Contract Expiration, Eligibility for
Replacement, Current Owner, Venue.
**Internet Connectivity** (`internet_connections` table): Venue, ISP Provider, Plan, Contract
Expiration, Notes. This table starts empty - the source Excel file only had mobile phone data -
add rows with the "+ Add Connection" button on the Internet Connectivity page as you go.
There is no login. Anyone who can reach the URL (`http://localhost:8092/` by default) can view
and edit both tables.
## How the mobile phone data was loaded
The one-off migration script `TelcoPortal-source/import_excel.py` reads the source Excel file
(`Mobilne telefony 20260901.xlsx`) and loads it into `TelcoPortal-data/telco.db`. This has
**already been run once** to populate the database - the Excel file is not needed by the running
app and can be archived/deleted.
Column mapping from the Excel file:
| Excel column (Slovak) | Portal field |
|-----------------------------|------------------------------|
| T.Č. | Phone Number (re-prefixed with the leading 0 Excel drops from numeric cells) |
| Užívateľský balík | Plan |
| Viazanosť do: | Contract Expiration |
| Možnost výmeny od: | Eligibility for Replacement (blank/`---` in the source means "eligible now", not "unknown") |
| Meno užívatela | **not auto-split** - see note below |
### Current Owner / Venue
The source `Meno užívatela` column mixes two things: a handful of rows have a
`"<number> - <person or venue>"` pattern, but most rows just repeat the company name
("Queensway Restaurants Slovakia, s.r.o.") with nothing usable as a venue. There was no reliable
way to auto-split this into separate Owner and Venue fields, so on import:
- **Current Owner** was set to the raw `Meno užívatela` text for each row (nothing was thrown
away)
- **Venue** was left blank
To fix this up in bulk instead of editing 70+ rows by hand one at a time, re-run the import with
a mapping file:
```
python import_excel.py "Mobilne telefony 20260901.xlsx" --mapping owner_venue_mapping.csv
```
where `owner_venue_mapping.csv` has three columns: `phone_number,current_owner,venue` (phone
number in the same format shown in the portal, e.g. `0905988240`). Rows are matched by phone
number, and only the rows present in the mapping file are updated - existing Plan/Contract
Expiration/Eligibility data is left as-is either way. You can also just fix individual rows with
the Edit button in the portal itself.
## Backups
Copy or zip `TelcoPortal-data/telco.db` any time - that single file is the entire database.