Commit Graph

75 Commits

Author SHA1 Message Date
b4f687acb1 Kehitysehdotus-nappi footeriin
💡-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>
2026-03-11 20:14:03 +02:00
9208ab387a NetAdmin: liittymÀn muokkausmodal + nopeusvalikko dropdowniksi
LiittymÀrivin klikkaus avaa modal-ikkunan jossa voi muokata kaikkia
kenttiÀ (osoite, nopeus, VLAN, laite, portti, IP). Yhteysnopeus
muutettu dropdown-valikoksi sekÀ NetAdmin-modalissa ettÀ asiakkaan
liittymÀlomakkeessa. Vakionopeudet: 10/10 - 10000/10000.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 17:26:41 +02:00
517e57c287 Poista hintasarake NetAdmin-nÀkymÀstÀ
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 16:54:33 +02:00
f05313530f NetAdmin-moduuli: liittymien listaus ja haku
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>
2026-03-11 16:39:24 +02:00
e6fa65165e Versioiva dokumentinhallinta + Laitetilat-moduuli
Dokumentit: versioiva tiedostonhallinta asiakkaille (sopimukset, laskut, ohjeet).
SisÀltÀÀ versiohistorian, tiedostojen latauksen/palautuksen ja asiakas-suodatuksen.

Laitetilat: laitetilojen hallinta kuvagallerialla ja tiedostolistauksella.
SisÀltÀÀ korttipohjaisen listanÀkymÀn, kuvien esikatselun ja tiedostojen hallinnan.

Molemmat moduulit: 4 DB-taulua, 14 API-endpointtia, tÀysi CRUD, tiedostoupload.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 15:18:32 +02:00
093f40ac09 OsatehtÀvÀt (subtaskit) TODO-tehtÀviin
Uusi todo_subtasks-taulu + 3 API-endpointtia (add/toggle/delete).
TehtÀvÀn lukunÀkymÀssÀ checkbox-lista osatehtÀville, lisÀys
Enter-nÀppÀimellÀ tai LisÀÀ-napilla. Valmiit yliviivataan.
TehtĂ€vĂ€listassa nĂ€kyy edistyminen (esim. ☑ 2/5).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 14:45:47 +02:00
e3ef6d84b7 SiirrÀ TehtÀvÀt-tab navigaatiossa heti Asiakaspalvelun jÀlkeen
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 14:00:06 +02:00
eabd2efda5 Deadline-sarakkeen otsikko -> PÀivÀmÀÀrÀ
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:42:55 +02:00
40879b3db1 Deadline-sarake ekaksi tehtÀvÀlistassa, kÀynnissÀ-rivit vihreÀllÀ
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:39:40 +02:00
e3891463e9 TehtÀviin Tyyppi-kenttÀ (tekniikka, laskutus, myynti, asennus, muu)
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>
2026-03-11 13:35:17 +02:00
cdc5f366ff Kehitysehdotusten PÀivÀmÀÀrÀ-sarake ekaksi
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:31:43 +02:00
46b40cfc83 TODO-listaus tauluriveinÀ korttien sijaan, deadline-lajittelu
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>
2026-03-11 13:26:43 +02:00
4a1dccb6ff Uusi TODO-moduuli: TehtÀvÀt + Kehitysehdotukset + Ajanseuranta
Talon sisÀinen tehtÀvienhallinta kahdella alatabilla:

TehtÀvÀt (admin luo):
- Prioriteetti (normaali/tÀrkeÀ/kiireellinen), status, deadline
- Vastuuhenkilö-osoitus, inline-muokkaus lukunÀkymÀssÀ
- Aikakirjaukset: pvm, tunnit, kuvaus - kaikki voivat kirjata
- MyöhÀstyneet = punainen reunus, lÀhestyvÀt = keltainen
- Kommentointi kaikille kÀyttÀjille

Kehitysehdotukset (kaikki voivat luoda):
- Status: ehdotettu → harkinnassa → toteutettu/hylĂ€tty (admin muuttaa)
- Kommentointi kaikille
- Ehdottaja voi muokata omia

Tietokanta: 3 taulua (todos, todo_comments, todo_time_entries)
API: 10 endpointtia oikeustarkistuksineen
Frontend: Sub-tab navigointi, kortti-grid, 3-nÀkymÀmalli per alatabi

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 13:14:53 +02:00
42b815116b Ohjeet: screenshot-upload paste & drag-drop + kuva-lightbox
Screenshottien lisÀÀminen ohjeisiin nyt helpompaa:
- Ctrl+V / Cmd+V: liitÀ kuvakaappaus suoraan leikepöydÀltÀ editoriin
- Drag & drop: raahaa kuvatiedostoja suoraan textarea-editoriin
- Upload-placeholder nÀkyy latauksen aikana (![Ladataan: ...]())
- Vihjeet editorin alla kertovat kÀytettÀvissÀ olevat tavat
- Kuva-lightbox: klikkaa kuvaa lukunĂ€kymĂ€ssĂ€ → avautuu isona
- Kuvien hover-efekti (zoom-in kursori, kevyt varjo)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 12:48:21 +02:00
a898da119e Laitteiden Tyyppi ja Funktio kentÀt muutettu dropdown-valikoiksi
Vapaa tekstikenttĂ€ → select-dropdown valmiilla vaihtoehdoilla:
- Tyyppi: Reititin, Kytkin, Palomuuri, Tukiasema, Palvelin, OLT, ONT, Mediamuunnin, Muu
- Funktio: PE/EDGE/CPE Reititin, Core/Aggregaatio/Access-kytkin, WAN GW, WLAN Controller, Asiakaslaite, Muu
- Tyyppi-sarake siirretty ennen Funktio-saraketta
- setSelectValue helper: lisÀÀ puuttuvan option automaattisesti muokatessa vanhaa dataa

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 12:32:55 +02:00
565259423d Ohjeet: kuva-upload -toiminto Markdown-editoriin
- "Kuva" -nappi toolbarissa avaa tiedostovalitsimen
- Kuva uploadataan serverille (max 5MB, PNG/JPG/GIF/WebP)
- Markdown ![kuva](url) -tagi lisÀtÀÀn automaattisesti editoriin
- Kuva renderöityy lukunÀkymÀssÀ ja esikatselussa
- API: guide_image_upload (upload) + guide_image (serve)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 12:24:36 +02:00
7c4060bfa8 Ohjeet-moduuli: Confluence-tyylinen tietopankki asiakaspalvelijoille
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>
2026-03-11 12:19:00 +02:00
9a9f12fb0b Poista ylimÀÀrÀiset LisÀÀ sijainti -napit (laitteet + sijainnit)
Sijainnit lisÀtÀÀn yrityksen asetuksista, joten tekniikka-
vÀlilehden turhat LisÀÀ sijainti -napit poistettu.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 11:12:46 +02:00
44053d27f2 IPAM: duplikaatti-IP-tarkistus, vapaat lohkot, asiakas-kentÀn poisto + varattu oletus
- 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>
2026-03-11 09:50:18 +02:00
8a73423bf1 Auto-VLAN kÀyttÀÀ subnetin nimeÀ + poistettu Reserved-tila
- Auto-VLAN saa subnetin/IP:n nimen (ei enÀÀ geneeristÀ 'VLAN X')
- Poistettu 'Reserved' tila-vaihtoehto lomakkeesta (Varattu riittÀÀ)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 09:36:57 +02:00
5a77c70a7e IPAM: VLAN-kenttÀ takaisin vapaaksi numerokentÀksi
Dropdown oli liian rajoittava — nyt VLAN-numeron voi kirjoittaa
vapaasti lomakkeeseen verkkojen ja IP:iden kohdalla.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 09:29:15 +02:00
75e4ab4b42 IPAM: VLAN- ja asiakas-dropdownit lomakkeeseen
- VLAN-kenttÀ on nyt dropdown joka populoidaan VLAN-listasta
  (subnetit viittaavat VLANeihin)
- Asiakas-kenttÀ on dropdown joka populoidaan asiakaslistasta
- VerkkonÀkymÀssÀ VLAN-sarakkeessa nÀkyy numero + nimi viitteenÀ
- VLAN-osio nÀkyy aina (myös tyhjÀnÀ)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 09:18:43 +02:00
565a7b6ab3 IPAM: Hierarkkinen puunÀkymÀ + VLANit erilleen
- Subnetit ja IP:t nÀytetÀÀn hierarkkisena puuna jossa pienemmÀt
  verkot menevĂ€t isomman sisÀÀn (esim. /24 → /16 → /8)
- Expand/collapse klikkaamalla ▶/â–Œ ikonia
- Drill-down: poraudu verkon sisÀÀn → -nuolella, breadcrumb ylhÀÀllĂ€
- VLANit erotettu omaksi luetteloksi verkkojen alapuolelle
- Omat "LisÀÀ verkko/IP" ja "LisÀÀ VLAN" -napit

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 09:13:53 +02:00
8b8237ed52 Poista superadmin-backdoor maininta IP-rajoituksen helptextistÀ
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 08:50:07 +02:00
b1b1dd1feb IP-rajoitus: oletusarvo 'kaikki' kentÀssÀ
TyhjÀ kenttÀ tai 'kaikki' = ei rajoitusta. UI nÀyttÀÀ 'kaikki'
oletuksena uusille yrityksille.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 08:49:22 +02:00
250722dc41 Yrityskohtainen IP-rajoitus kirjautumiseen
LisÀtty allowed_ips kenttÀ yrityksiin. TyhjÀ = ei rajoitusta,
muuten vain listatut IP:t/CIDR-alueet pÀÀsevÀt kirjautumaan.
Superadmin ohittaa aina IP-tarkistuksen (backdoor).

Tarkistus tehdÀÀn login, check_auth ja company_switch -endpointeissa.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 08:48:34 +02:00
dd1125e2ab Osoitettu -> Agentti tikettilistan sarakkeessa
Vaihdettu sarakkeen nimi 'Osoitettu' -> 'Agentti' ja
detail-nÀkymÀn dropdown 'Ei osoitettu' -> 'Ei agenttia'.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 08:42:24 +02:00
75560c2b66 Tikettilista: Asiakas-sarake Tilan jÀlkeen + Osoitettu-sarake
Siirretty Asiakas-sarake heti Tila-sarakkeen jÀlkeen ja lisÀtty
uusi Osoitettu (assigned_to) -sarake viimeiseksi sarakkeeksi.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 08:38:15 +02:00
417728683c Piilota asiakashinnat oletuksena + nÀytÀ sopimuksen jÀljellÀ oleva aika
Hinnat:
- Asiakastaulukon hinnat blurrattu oletuksena (privacy)
- Hinta/kk -otsikossa silmÀ-checkbox jolla saa hinnat nÀkyviin/piiloon
- Blur pÀtee myös asiakaskortin detail-nÀkymÀÀn

Sopimuskausi:
- NÀyttÀÀ jÀljellÀ olevan ajan sulkeissa: "36 kk (30 kk jÀljellÀ)"
- PÀÀttyneet sopimukset punaisella: "36 kk (pÀÀttynyt)"
- AloituspÀivÀ poistettu luettelonÀkymÀstÀ (nÀkyy detail-kortissa)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 08:24:38 +02:00
64bf6aa2da Poista vastauspohjat asetuksista, pidetÀÀn vain tikettipuolella
Vastauspohjien hallinta kuuluu asiakaspalvelu-osioon, ei API-asetusten alle.
Poistettu tuplana ollut HTML-osio + siihen liittyvÀt JS-eventlistenerit.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 08:20:44 +02:00
07e9c63c47 Tikettinumerointi (VVNKKNN) + automaattinen vastaus
Tikettinumero:
- Uudet tiketit saavat juoksevan numeron VVNKKNN-formaatissa
  (vuosi+kuukausi sekoitettu sekvenssiin, esim. 2600301)
- Numero nÀkyy tikettilistassa ja detail-nÀkymÀssÀ (#-merkillÀ)
- SÀhköpostin aihe muotoa "Tiketti #2600301: AlkuperÀinen aihe"
- Vastaukset ketjuuntuvat automaattisesti

Autoreply:
- Postilaatikkokohtainen asetus: checkbox + viestisisÀltö
- Uusi tiketti lÀhettÀÀ automaattisen vastauksen asiakkaalle
- Autoreply nĂ€kyy tiketin viestiketjussa (⚡ Automaattinen vastaus)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 00:24:17 +02:00
96a35c7e0b UX-parannukset postilaatikon asetuksiin
- Poista SMTP override-testikentÀt (ei tarpeen enÀÀ)
- Tallennus pitÀÀ lomakkeen auki + nÀyttÀÀ "Tallennettu" -ilmoituksen
- SMTP-kenttĂ€jĂ€rjestys samaksi kuin IMAP: Palvelin → Portti → Tunnus → Salasana → Salaus

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 00:07:46 +02:00
335ed540f1 Korjaa captcha race condition + paranna SMTP-debuggausta
Captcha: loadBranding() ensin, sitten captcha+auth, jotta sessio-cookie
on luotu ennen captcha-latausta (estÀÀ eri sessiot rinnakkaisilla kutsuilla).

SMTP-testi: lisÀÀ salasanavihje (3 ensimmÀistÀ + 2 viimeistÀ merkkiÀ),
override-kentÀt joilla voi testata eri tunnuksilla suoraan ilman DB:tÀ.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-11 00:01:52 +02:00
1a41579e4b LisÀÀ SMTP-testaustyökalu postilaatikon asetuksiin
Korvaa mailbox_debug-endpoint kattavalla smtp_test-endpointilla,
joka testaa yhteyden, TLS:n ja autentikoinnin vaihe vaiheelta.
"Testaa SMTP" -nappi lomakkeessa nÀyttÀÀ tulokset.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 23:57:34 +02:00
ff2613ff01 SMTP-palvelin aina nĂ€kyvissĂ€ + CuituNet → Cuitunet
- SMTP-palvelinkenttÀ nÀkyy nyt aina mailbox-lomakkeessa,
  myös kun "KÀytÀ samoja tunnuksia" on pÀÀllÀ (vain kÀyttÀjÀ
  ja salasana piiloutuvat)
- Korjattu CuituNet → Cuitunet kaikkialla (pieni n)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 23:28:31 +02:00
2da63262a7 NÀytÀ SMTP-portti ja salaus aina mailbox-lomakkeessa
Portti ja salaus tarvitaan aina (IMAP=993/SSL vs SMTP=587/TLS),
joten ne nÀkyvÀt nyt checkboxin tilasta riippumatta.
"KÀytÀ samoja tunnuksia" piilottaa vain palvelimen, kÀyttÀjÀn
ja salasanan.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 23:14:20 +02:00
eaf47d5b78 YhdistÀ IMAP/SMTP-asetukset vierekkÀin + "KÀytÀ samoja tunnuksia"
Mailbox-lomake nÀyttÀÀ nyt Saapuva (IMAP) ja LÀhtevÀ (SMTP)
vierekkÀin. SMTP-puolella on "KÀytÀ samoja tunnuksia kuin
saapuvassa" -checkbox (oletuksena pÀÀllÀ), joka piilottaa
SMTP-kentÀt ja kopioi IMAP-asetukset tallennettaessa.
LÀhettÀjÀn sÀhköposti ja nimi omana osionaan alhaalla.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 22:50:45 +02:00
78f25d0079 LisÀÀ SMTP-lÀhetystuki postilaatikoihin
Aiemmin sÀhköpostit lÀhetettiin PHP mail()-funktiolla, mikÀ
ei toimi kunnolla useimmilla palvelimilla (SPF/DKIM-ongelmat).
Nyt mailboxiin voi konfiguroida SMTP-asetukset (host, port,
user, pass, encryption), ja lÀhetys tapahtuu suoraan
SMTP-palvelimen kautta socket-yhteydellÀ. Fallback PHP
mail():iin jos SMTP-asetuksia ei ole asetettu.

- db.php: smtp_host/port/user/password/encryption sarakkeet
- api.php: sendViaSMTP() socket-pohjainen SMTP-client
- index.html: SMTP-kentÀt mailbox-lomakkeeseen
- script.js: SMTP-kenttien luku/kirjoitus lomakkeessa

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 22:46:28 +02:00
e1cc95f306 SiirrÀ allekirjoituksen esikatselu checkboxin alle
KÀyttÀjÀ nÀkee nyt "KÀytÀ allekirjoitusta" -tÀpÀn alla
suoraan mitÀ allekirjoitustekstiÀ viestiin liitetÀÀn.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 22:18:03 +02:00
5d6aa981b2 feat: TO-kenttÀ nÀkyviin vastauslomakkeessa
- Vastaanottaja (TO) nÀkyy nyt LÀhettÀjÀ- ja CC-kenttien vÀlissÀ
- EsitÀytetÀÀn tiketin alkuperÀisen lÀhettÀjÀn osoitteella
- Muokattavissa ennen lÀhetystÀ
- Backend kÀyttÀÀ frontendistÀ tullutta TO:ta tai fallbackina from_email

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 22:12:12 +02:00
83509fffc5 fix: kÀÀnnĂ€ allekirjoitus-checkbox → "KĂ€ytĂ€ allekirjoitusta" (oletuksena pÀÀllĂ€)
Checkbox nyt oletuksena rastittuna = allekirjoitus mukaan. Rastin poisto
poistaa allekirjoituksen viestistÀ.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 22:02:45 +02:00
2d2680483c feat: vastauspohjien hallinta asiakaspalvelu-tabissa + allekirjoitus-checkbox
- Vastauspohjat nyt hallittavissa Asiakaspalvelu-tabin kautta (kaikille kÀyttÀjille)
- Uusi "Vastauspohjat" -nappi tikettilistan ylÀpalkissa
- CRUD: lisÀÀ, muokkaa, poista vastauspohjia tukitabin nÀkymÀssÀ
- "ÄlĂ€ kĂ€ytĂ€ allekirjoitusta" -checkbox vastauslomakkeessa (oletuksena pÀÀllĂ€)
- Backend: no_signature-parametri estÀÀ allekirjoituksen liittÀmisen
- Poistettu orpo profiili-vastauspohjien JS-koodi

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:51:56 +02:00
f6e11f8426 feat: oma profiili -toiminto + placeholder-siivous + poista fix-skriptit
- LisĂ€tty "Oma profiili" -nappi headeriin (⚙ + nimen klikkaus)
- Profiili-modaali: muokkaa nimi, sÀhköposti, salasana, allekirjoitukset
- Uusi profile_update API-endpoint (vaatii vain kirjautumisen)
- check_auth palauttaa nyt myös email-kentÀn
- Siivottu kaikki yrityskohtaiset placeholder-tekstit geneerisiksi
  (cuitunet.fi → yritys.fi, Kauppakatu → Esimerkkikatu, jne.)
- Poistettu vÀliaikaiset fix_role.php ja fix_saatavuus.php

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 21:38:32 +02:00
9140c912cd feat: Tekniikka-moduuli sub-tabeilla (Laitteet + Sijainnit + IPAM)
- Laitteet-tabi → Tekniikka (sub-tabit: Laitteet, Sijainnit, IPAM)
- Sijainnit siirretty omaksi taulukkonÀkymÀksi (+ "LisÀÀ sijainti" laitteiden yhteydessÀ)
- Uusi IPAM-nÀkymÀ: IP-osoitteet, subnetit ja VLANit hallintaan
- IPAM: tyyppi (subnet/vlan/ip), verkko, VLAN-nro, sijainti, tila, asiakas
- Sub-tab-tyylit ja logiikka
- Yhteensopivuus: vanha 'devices' moduuli → 'tekniikka'

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 20:18:56 +02:00
18d378be63 feat: Laitteet-moduuli (inventaario) + sijaintien hallinta + login-fix
- Uusi "Laitteet" vÀlilehti navigaatiossa (devices-moduuli)
  - Taulukko: Nimi, Hallintaosoite, Serial, Sijainti, Funktio, Tyyppi, Malli, Ping
  - LisÀÀ/muokkaa/poista laitteita modaali-lomakkeella
  - Hakupalkki suodattaa kaikista kentistÀ
  - Ping-check tÀppÀ valmiina tulevaa toteutusta varten
- Sijainnit (Sites) -hallinta yrityksen asetuksissa
  - LisÀÀ/muokkaa/poista sijainteja (toimipisteet, konesalit)
  - Sijainnit nÀkyvÀt laitelomakkeen dropdownissa
- Laitteet-moduuli lisÀtty moduulijÀrjestelmÀÀn (checkbox yritysasetuksissa)
- DB: sites + devices taulut, CRUD-funktiot
- Fix: Login-nÀkymÀ ei enÀÀ vilku refreshissÀ (piilotettu oletuksena)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 19:00:26 +02:00
a135aaaaef feat: moduulijÀrjestelmÀ + kÀyttÀjÀroolit + suhteellinen aika
- 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>
2026-03-10 18:42:07 +02:00
4ce9cefa6a refactor: move priority emails to customer card
Priority emails are now per-customer, not per-company.
Each customer can have a list of email addresses that
automatically elevate ticket priority to "tÀrkeÀ" when
they send email. Field added to customer form under
"LisÀtiedot" section.

Removed separate priority_emails settings from API/rules tabs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 18:00:10 +02:00
8485da8cbf feat: ticket reply improvements + priority + templates + Telegram
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>
2026-03-10 17:42:05 +02:00
a0ee98cc9b ui: simplify header with logo, auto-refresh on by default
- When company logo is set, show only "Hallintapaneeli" without
  company name (logo identifies the company)
- Ticket auto-refresh checkbox is checked by default
- Auto-refresh starts when switching to support tab

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 17:25:46 +02:00
095dc90b6f White-label multi-domain tuki (Noxus Intra)
- CSS-muuttujat: kaikki kovakoodatut #0f3460/#16213e korvattu var(--primary-color)/var(--primary-dark)
- Uudet API-endpointit: branding (julkinen, domain-pohjainen), company_logo, company_logo_upload
- Domain-pohjainen brĂ€ndĂ€ys: HTTP_HOST → yrityksen domains-arrayn matchaus
- Login: domain asettaa oletusyrityksen sessioon
- check_auth: palauttaa branding-objektin (primary_color, subtitle, logo_url)
- company_create/update: kÀsittelee domains, primary_color, subtitle, logo_file
- Dynaaminen login-sivu, header ja footer (logo, nimi, alaotsikko, vÀrit)
- JS: loadBranding(), applyBranding(), yritysvaihdon brÀndÀyspÀivitys
- Admin-paneeli: brÀndÀysasetukset (logo-upload, vÀri, alaotsikko, domainit)
- Git-repo siirretty intra.noxus.fi:hin

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-10 13:44:49 +02:00