Kuukauden päätöksessä on oma rytminsä: laske tunnit yhteen, täsmäytä rahat, karhua laskut, arkistoi luvut. Jos jo elät terminaalissa, näyttöjen läpi klikkailu on hidas tapa tehdä se. Komentorivityökalu (@ceum/cli) ajaa samat toiminnot kuin sovellus — joten koko rutiini kutistuu kouralliseksi komentoja, jotka voit lukea uudelleen ensi kuussa tai antaa cronille.
Tämä läpikäynti seuraa yhtä konkreettista työtä — kuukauden päättämistä — tyhjästä komentotulkista raporttiin, jonka voit arkistoida. Vaiheen 1 määritys on kertaluonteinen kustannus; vaiheet 2 ja 3 ovat se rutiini, jonka todella toistat.
Tavoite
Muuta "kuukausi on lopussa" lyhyeksi, toistettavaksi sarjaksi: vedä kuukauden seurattu aika ja tapahtumat muodossa, jota kone osaa lukea, muokkaa siitä tarvitsemasi yhteenveto ja kirjoita mahdolliset korjaukset takaisin — skriptattavasti, jotta ensi kuukausi on yksi komento.
1. Asenna ja todenna — kerran
Komentorivityökalu on pieni binääri, jonka asennat npm:stä:
$ npm install -g @ceum/cli # installs the `ceum` command (Node.js 22+)
Se todennetaan MCP-tunnuksella, samalla tunnuksella joka pyörittää MCP-integraatiota. Luo sellainen sovelluksessa kohdassa Asetukset → Integraatiot ja kirjaudu sitten sisään:
$ ceum auth login # paste the token (starts with ceum_)
Signed in. 42 tools available under this token.
Tunnus tallennetaan 0600-oikeuksilla määrityshakemistoosi. Ajastetulle työlle, jonka ei pitäisi koskea levyyn, välitä se sen sijaan ympäristön kautta — ihanteellinen cronille tai CI:lle:
$ CEUM_TOKEN=ceum_… ceum invoices list
Pidä erilliset työtilat erillään nimetyillä profiileilla (ceum auth add work, sitten ceum --profile work …). Komentopinta johdetaan reaaliajassa siitä, mihin tunnuksesi pystyy, joten ceum --help näyttää aina täsmälleen ne resurssit ja toiminnot, jotka ovat käytettävissäsi.
2. Nouda kuukauden tiedot — muodossa, jota voit käyttää
Jokainen list-komento on resurssi ensin (ceum <resource> <action>) ja ottaa -o:n tulosteen valintaan. Oletusarvoinen text taulukoituu mukavasti luettavaksi; konemuodot — json, csv, ndjson — ovat tavupuhtaita putkitukseen.
Aloita pääluvusta. time-entries aggregate laskee seuratun ajan yhteen suodatinjoukolla ja voi ryhmitellä sen:
$ ceum time-entries aggregate \
--start-date 2026-07-01 --end-date 2026-07-31 \
--group-by project -o json
Se palauttaa kuukauden kokonaissekunnit ja projektikohtaisen erittelyn. Vetääksesi taustalla olevat rivit taulukkolaskentaan, listaa ne suoraan CSV:hen — ja käytä --all:ia ohittaaksesi pyyntökohtaisen sivurajan ja yhdistääksesi kaikki sivut:
$ ceum time-entries list --start-date 2026-07-01 --end-date 2026-07-31 \
--all -o csv > july-time.csv
$ ceum transactions list --all -o csv > july-transactions.csv
Kaksi hienosäätöä tiivistää tulosteen: --columns valitsee täsmälleen haluamasi kentät, ja tallennettu esiasetus vangitsee suodatinjoukon, jottet kirjoita sitä uudelleen:
$ ceum transactions list --columns date,desc,amount,type,client
$ ceum presets save transactions month --type expense # save once
$ ceum transactions list --preset month -o json # reuse (explicit flags win)
3. Muokkaa sitä ja lähetä korjaukset takaisin
Koska vain komennon tuloste menee stdoutiin — kehotteet, edistyminen ja virheet menevät kaikki stderriin — putket pysyvät puhtaina. Se tarkoittaa, että jq ja kumppanit toimivat juuri kuten odottaisitkin:
$ ceum invoices list -o json | jq '.[] | select(.status=="overdue") | .invoiceNumber'
$ ceum time-entries aggregate --group-by tag -o json \
| jq -r '.groups[] | [.key, .totalSeconds/3600] | @tsv'
Putki kulkee molempiin suuntiin. Kun kuukauden päätökseen kuuluu tietojen kirjoittaminen takaisin — vaikkapa kuluerän tallentaminen — syötä rivit tiedostosta tai stdinistä bulk-create-komennolle; syöte tunnistetaan automaattisesti (JSON-taulukko, yksittäinen objekti, NDJSON tai CSV) ja paloitellaan palvelimen 50 per pyyntö -rajaan:
$ ceum transactions bulk-create --file july-expenses.ndjson
$ jq -c '.[]' corrections.json | ceum transactions bulk-create --stdin
Nyt koko juttu on skripti. Poistumiskoodit koodaavat virheluokan (0 ok, 2 käyttö, 3 todennus, 4 kielletty, 5 työkaluvirhe, 6 verkko, 7 määritys), joten cron-työ osaa erottaa verkkohäiriön viallisesta tunnuksesta ja reagoida siihen sen sijaan, että epäonnistuisi hiljaa.
Mitä lopputuloksena saat
Kuukauden päätös, joka on tiedosto jonka ajat, ei näyttö jonka läpi klikkailet: todenna kerran, vedä kuukausi JSON- tai CSV-muodossa, muokkaa sitä työkaluilla jotka jo osaat ja kirjoita tulos takaisin — samat toiminnot jotka sovelluskin suorittaa, kytkettynä komentotulkkiisi ja ajastimeesi.
Pysytkö mieluummin sovelluksessa mutta pidät näppäimistövetoisen nopeuden? Sovelluksen sisäinen komentorivi ajaa saman komentokieliopin paneelista Ceumin sisällä. Ja kun luvut ovat ulkona, Katso, mihin aikasi todella kuluu ja Seuratusta työstä maksettuun laskuun jatkavat siitä, mihin vienti jää.