đĄ-nappi sivun alareunassa avaa kehitysehdotuslomakkeen suoraan
(navigoi todo/features-vÀlilehdelle ja avaa uuden ehdotuksen).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Kokoaa kaikki asiakkaiden liittymÀt yhteen nÀkymÀÀn haulla ja suodattimilla.
Sarakkeet: asiakas, osoite, kaupunki, nopeus, VLAN, laite, portti, IP, hinta.
Suodattimet: kaupunki, nopeus, laite. Laitetietojen ping-status nÀkyvissÀ.
Klikkaus avaa asiakkaan muokkaukseen.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Uusi category-sarake todosiin. NĂ€kyy listassa badgena, lomakkeessa
dropdownina ja lukunÀkymÀssÀ. TyypillÀ voi myös suodattaa listaa.
VĂ€rikoodatut badget kullekin tyypille.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
TehtÀvÀt ja kehitysehdotukset nÀytetÀÀn nyt taulukkoriveinÀ
(kuten tukitiketit) kortti-gridin sijaan. TehtÀvÀt lajitellaan
deadlinen mukaan (lÀhimmÀt ensin), valmiit loppuun. MyöhÀstyneet
rivit punaisella ja pian erÀÀntyvÀt keltaisella taustalla.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Uusi moduuli "Ohjeet" jossa yllÀpitÀjÀ voi kirjoittaa ohjeita
asiakaspalvelijoille miten asioita tehdÀÀn.
Ominaisuudet:
- Korttipohjainen listanÀkymÀ (grid) hakutoiminnolla ja kategoriasuodatuksella
- Markdown-editori toolbarilla (B, I, H2, H3, listat, linkit, koodi, lainaukset)
- Esikatselu-toggle muokkausnÀkymÀssÀ
- Artikkelien lukunÀkymÀ renderoitulla Markdownilla
- Kategorioiden hallinta (lisÀÀ/poista)
- Tagit ja kiinnitys (pinned) -toiminto
- Oikeushallinta: kaikki lukevat, admin luo/muokkaa/poistaa
- Moduuli nÀkyy/piiloutuu yrityskohtaisista asetuksista
- Muutokset kirjautuvat muutoslokiin
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Duplikaatti-IP/verkko -tarkistus: estÀÀ saman verkko-osoitteen lisÀÀmisen kahdesti
- Vapaan tilan nÀyttö: kun subnet avataan, nÀytetÀÀn vapaat osoitelohkot lasten vÀlissÀ (vihreÀ "Vapaa"-rivi)
- Asiakas-kenttÀ poistettu IPAM-nÀkymÀstÀ (taulukot, lomake, haku)
- Varattu oletustilaksi verkkoa/VLANia lisÀttÀessÀ
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- parseNetwork() ja isSubnetOf() tukevat nyt IPv4 ja IPv6 (BigInt)
- IPv6 verkot (esim. 2001:db8::/32) sijoittuvat puuhierarkiaan
- Subnetin kohdalla nÀytetÀÀn kÀyttöaste: esim. "3/256" kertoo
kuinka monta alisubnettia on kÀytössÀ vs kapasiteetti
- Ei-parsittavat osoitteet nÀytetÀÀn puun juuressa
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- ModuulijÀrjestelmÀ: yrityskohtaiset tabit (customers, support, leads, archive,
changelog, settings) valittavissa checkboxeina yrityksen asetuksissa
- KÀyttÀjÀroolit: superadmin (pÀÀkÀyttÀjÀ), admin (yritysadmin), user (kÀyttÀjÀ)
- Superadmin: kaikki oikeudet kuten ennen
- Yritysadmin: muokkaa oman yrityksen asetuksia, moduuleita, postilaatikoita
- KÀyttÀjÀ: peruskÀyttö ilman hallintaoikeuksia
- PÀivitetty-kenttÀ nÀyttÀÀ suhteellista aikaa (15min sitten, 2h sitten, 3pv sitten)
- DB: enabled_modules sarake companies-tauluun, role ENUM laajennettu
- Automaattinen migraatio: vanhat admin â superadmin
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Reply form:
- Mailbox/sender selection dropdown (choose which email to reply from)
- CC field (auto-filled from incoming email CC, editable)
- Reply templates dropdown (quick insert pre-made responses)
Priority system:
- Three levels: normaali, tÀrkeÀ, urgent
- Priority dropdown in ticket detail view
- Priority-based sorting (urgent/tÀrkeÀ always on top)
- Visual indicators in ticket list (colored rows, emoji badges)
- Priority emails: per-company email list that auto-sets "tÀrkeÀ"
Response templates:
- CRUD management in Settings tab
- Dropdown selector in reply form
- Templates insert into textarea
Telegram alerts:
- Bot token + chat ID configuration in Settings
- Test button to verify connection
- Auto-alert on urgent tickets (both manual and from email fetch)
- Alert on priority email matches
Database changes:
- New tables: reply_templates, customer_priority_emails
- New columns: tickets.cc, tickets.priority
- ALTER TABLE migration in initDatabase()
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Header is now white with neutral text colors.
Nav tab bar uses primary-color background with white text.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Changed header from colored gradient background to clean white
with primary-color text, border-bottom accent line, and updated
button styles. Logos now display nicely against white background.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Dropdown siirretty header-left â header-right, kompaktimpi nappikoko
headerissa, flex-wrap tukee kapeampia nÀyttöjÀ.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implement full multi-company architecture:
- Per-company directory structure (data/companies/{id}/)
- Automatic migration from single-tenant to multi-tenant
- Company management admin tab (create, edit, delete companies)
- Per-company IMAP mailbox configuration (multiple mailboxes per company)
- User access control per company (companies array on users)
- Company switcher in header (shown when user has access to >1 company)
- Session-based company context with check_auth fallback for old sessions
- Ticket list shows mailbox name instead of sender
- IMAP settings moved from global config to company-specific config
- All data endpoints protected with requireCompany() guard
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix tickets API endpoint: add type, customer_name, customer_id, tags fields
- Add tags array to ticket data structure with add/remove UI
- Add tag filter input to toolbar and tag column in ticket list
- Add ticket_tags API endpoint for updating tags
- Add set_tags and auto_close_days actions to auto-rules
- Auto-close check runs on ticket list load, closes expired tickets
- Add tag CSS styles with editable tag badges in detail view
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Asiakaspalvelu tab moved to first position in navigation
- Added ticket type field (Laskutus, Tekniikka, Vika, Muu) with
type filter dropdown and type column in ticket list
- Type selector in ticket detail view with API endpoint
- Closed tickets hidden by default (selectable via "Kaikki tilat")
- KÀsittelyssÀ rows highlighted with green background
- Type badges with color coding per category
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
IMAP client for fetching emails from asiakaspalvelu@cuitunet.fi,
Freshdesk-style ticket management with status tracking, message
threading, reply/note functionality, and IMAP settings in API tab.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- New Liidit tab with table, search, add/edit/delete
- Lead fields: company, contact, phone, email, address, city, status, notes
- Status workflow: Uusi â Kontaktoitu â Kiinnostunut â Odottaa toimitusta
- Color-coded status badges
- Detail view with notes display
- "Muuta asiakkaaksi" converts lead to customer with pre-filled data
- Lead CRUD endpoints in api.php with changelog logging
- leads.json added to .gitignore
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- .htaccess: HTTPS enforcement, security headers, block sensitive files
- data/.htaccess: deny all direct access to data directory
- Secure session settings (httponly, secure, strict mode, samesite)
- Rate limiting on login (10 attempts per 15 min per IP)
- Math captcha on login form (server-side validated)
- Password reset via email with token (1 hour expiry)
- Forgot password UI with reset link flow
- Email field added to user management
- Updated .gitignore for reset_tokens.json and login_attempts.json
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Multi-user auth with username/password (replaces single password)
- Default admin account created automatically (admin/cuitunet2024)
- User CRUD with admin/user roles (only admin can manage users)
- All customer changes logged with timestamp, user and details
- Customer deletion now archives instead of permanently removing
- Archive view with restore and permanent delete options
- Tab navigation: Asiakkaat, Arkisto, Muutosloki, KÀyttÀjÀt
- Protect users.json, changelog.json and archive.json in .gitignore
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Refactor data model: each customer now has a liittymat array (auto-migration from old format)
- Add sopimuskausi (1/12/24/36 kk) and alkupvm fields per connection
- Form supports adding/removing multiple connection rows per company
- Add "use same as installation address" checkbox for billing address
- Move stat cards to compact sidebar on the right
- Place search bar above customer table
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- File upload/download/delete per customer (max 20MB, stored in data/files/)
- Files section shown in customer detail modal
- Speed distribution chart replaces single "top speed" stat
- Bar chart shows all speeds with count, top speed bolded
- Customer delete also cleans up associated files
- data/files/ added to .gitignore
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Split address into street, postal code, city (sortable)
- Add billing postal code/city fields
- Add e-invoice address and operator fields
- Add trivia stats (top postal code, top speed, avg price)
- Improved layout with stat cards grid and max-width container
- Sticky header, modal animations, search icon
- Auto-backup on every save (keeps last 30 backups)
- Footer added
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>