đĄ-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>
Asiakaspalvelun tikettinÀkymÀssÀ uusi nappi joka avaa
TODO-tehtÀvÀlomakkeen esitÀytetyillÀ tiedoilla: otsikko
(tikettinumero + aihe), kategoria (tiketin tyypistÀ),
prioriteetti ja kuvaus (lÀhettÀjÀn tiedot).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
apiCall palauttaa nyt selkeÀn virheen jos palvelimen vastaus
ei ole validia JSON:ia (+ logittaa console.error). todo_status
palauttaa JSON-virheen myös edge-caseissa.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
updateTaskField lataa nyt lukunÀkymÀn uudelleen statuksen/
vastuuhenkilön muutoksen jÀlkeen, jotta dropdown ja badget
pÀivittyvÀt oikein.
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>
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>
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>
Tekniikka-tabin sijainnit-taulukosta muokkaus ohjaa nyt
oikeaan paikkaan asetuksissa ja scrollaa lomakkeeseen.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
Kun subnet on merkitty varatuksi, vapaita lohkoja ei nÀytetÀ
sen sisĂ€llĂ€ â koko verkko on jo allokoitu.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
API palauttaa 409 kun VLAN-numero on jo olemassa, frontend
nÀyttÀÀ confirm-dialogin. KÀyttÀjÀ voi valita jatkaako vai ei.
IP/verkko-duplikaatti estÀÀ edelleen kokonaan (400).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
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>
- 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>
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>
- 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>
TyhjÀ kenttÀ tai 'kaikki' = ei rajoitusta. UI nÀyttÀÀ 'kaikki'
oletuksena uusille yrityksille.
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>
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>
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>
- 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>
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>
Checkbox nyt oletuksena rastittuna = allekirjoitus mukaan. Rastin poisto
poistaa allekirjoituksen viestistÀ.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>