Vapaa-rivin klikkaus avaa "Lisää verkko / IP" -lomakkeen,
jossa verkko-osoite on esitäytetty klikatulla vapaalla lohkolla
ja fokus siirtyy nimi-kenttään.
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>
- 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>
- 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>
Kun tallennetaan subnet tai IP jossa on VLAN-numero, tarkistetaan
löytyykö kyseinen VLAN jo listalta. Jos ei, luodaan se automaattisesti
VLAN-luetteloon.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
URL-hash tallentaa nyt sub-tabin: #tekniikka/ipam, #tekniikka/sites
jne. Refreshatessa palataan samalle sub-tabille.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Kun laitteelle tallennetaan hallintaosoite (IP), IPAM:iin luodaan
automaattisesti varattu IP-merkintä laitteen nimellä ja sijainnilla.
Jos IP on jo IPAM:issa, päivitetään se varatuksi laitteelle.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
- 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>
Vaihdettu ip2long() -> inet_pton() joka tukee sekä IPv4 että IPv6.
CIDR-alueet toimivat molemmilla (esim. 2001:db8::/32).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
X-Forwarded-For voi sisältää useita IP:tä pilkulla erotettuna.
Otetaan nyt vain ensimmäinen (asiakkaan oikea IP). Lisäksi
näytetään havaittu IP virheviestissä debuggausta varten.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
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>
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>
Ratkaistu ja suljettu olivat käytännössä sama asia. Nyt vain:
Uusi → Käsittelyssä → Odottaa vastausta → Suljettu.
Vanhat ratkaistu-tiketit näkyvät edelleen (CSS jätetty).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Määräaikaisuuden päätyttyä sopimus jatkuu toistaiseksi voimassa
olevana, joten näytetään "(jatkuva)" vihreällä punaisella
"(päättynyt)" sijaan.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
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>
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>
- 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>
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>
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>
Jos smtp_user on tyhjä, käytetään imap_useria, sitten
smtp_from_emailia. Jos smtp_password on tyhjä, käytetään
imap_passwordia. Korjaa tilanteen jossa imap_user-kenttä
on tyhjä mutta salasana ja asetukset ovat oikein.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Näyttää smtp_host, smtp_port, smtp_user, smtp_pass_len,
imap_host, imap_user, imap_pass_len suoraan alertissa
niin nähdään heti onko asetukset oikein.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Kun SMTP-salasana jää tyhjäksi (vanha SMTP-salasana ei ole
koskaan asetettu) mutta käyttäjätunnus on sama kuin IMAP:ssa,
kopioidaan automaattisesti IMAP-salasana SMTP:lle. Korjaa
AUTH-virheen joka tuli koska SMTP-salasana tallentui tyhjänä.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Virheviesti palautetaan nyt frontendille tarkan SMTP-vaiheen
kera (connect, STARTTLS, AUTH, MAIL FROM, RCPT TO, DATA, send),
jotta nähdään missä kohtaa lähetys epäonnistuu.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
Jos käyttäjä ei ole asettanut omaa allekirjoitusta mailboxille,
generoidaan automaattisesti oletus:
Etunimi
Yrityksen nimi
Postilaatikon sähköpostiosoite
Toimii sekä esikatselu-previewssä että sähköpostin lähetyksessä.
Käyttäjä voi yliajaa oletuksen tallentamalla oman allekirjoituksen
profiilin kautta.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
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>
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>
Lisää fallback-haku: kokeillaan ensin suoraan mailbox-id:llä,
sitten string/number-konversiolla, ja lopuksi käytetään
ensimmäistä löytyvää allekirjoitusta jos mitään ei matchaa.
Tämä korjaa tilanteen jossa mailbox_id:n tyyppi ei täsmää
tai tiketti on tullut tuntemattoman mailboxin kautta.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
- 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>
Checkbox nyt oletuksena rastittuna = allekirjoitus mukaan. Rastin poisto
poistaa allekirjoituksen viestistä.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 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>
- Kun tiketti avataan, tarkistetaan lähettäjän sähköposti
asiakasrekisteristä (sahkoposti + laskutussahkoposti)
- Jos asiakas löytyy → linkitetään automaattisesti + vihreä badge
- Jos ei löydy → näytetään "Lisää liidi" -nappi lähettäjätietojen
vieressä, joka avaa liidilomakkeen esitäytetyillä tiedoilla
(yhteyshenkilö, sähköposti, muistiinpanot)
- Jo linkitetyllä tiketillä näytetään vihreä asiakas-badge
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Käyttäjät-nappi näkyy nyt myös admin-roolille
- Admin näkee/hallitsee vain oman yrityksensä käyttäjiä
- Admin voi luoda admin/user-rooleja (ei superadmin)
- Admin ei voi poistaa/muokata superadmineja
- Superadmin-vaihtoehto piilotettu rooli-dropdownista adminilta
- Yritysoikeudet-osio piilotettu adminilta (lisätään automaattisesti)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sama logiikka kuin headerissa — kun yrityksellä on logo,
pelkkä logo riittää eikä tekstejä näytetä.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Korvattu yleinen lisätiedot-tekstikenttä neljällä erillisellä
kentällä (vlan, laite, portti, ip) jotta tiedoista voi hakea
ja filtteröidä tarkemmin.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>