ForestSense OS — Dokumentatsiooniportaal
Multi-agent operatsioonisüsteem Baltikumi metsanduse andmehalduseks · Vestman Group test-klient · v1.0 · 2026-05-04
Hybriid-arhitektuur v1.2
Forestsense v2.0 SaaS + Eiriku OS metalevel. 8 agenti, Supabase Pro, 5 toodet.
Agendi register
17 agenti: peaagent, Eirik (3 instantsi), Disainer, Directo, EVR, Watchdog.
Andmeallikad
12 allikat: Directo, TMA, EVR, LVM Geo, KPDC, SharePoint, Drive, WhatsApp.
Supabase skeem
32 tabelit: directo_*, tma_*, evr_*, features, agent_*, price_*, sync_log.
ETL skriptid
mini-NAS Python ETL: Directo sync, Harvester TMA, LVM Geo import, EVR.
Andmete universumi kaart
Graafiline orbiitkaart kõigist andmeallikatest — reaalajas Supabase data_freshness_status.
Süsteemi olek (2026-05-04)
Supabase Pro — 32 tabelit, PostGIS aktiivsed, igybaozqwiklxxcpwwkj
Directo VFF + VZF2 — viimane sünk 2026-05-03 03:30, andmed fresh
Harvester TMA (VS_TASK_3) — kood kirjutatud, mini-NAS deployment ootab Azure AD credentials
LVM Geo — import PASS, VZF2 kinnistud Supabase features tabelis
KPDC DFIS — planned, Erki annab API token
EVR sync — edge function aktiivsed, andmed Supabase'is
Kiirvasted
Oluline viidete lühend
| Lühend | Tähendus |
|---|---|
VS | Claude Code + VS Code |
CW | Cowork Desktop (Eirik) |
FS | ForestSense |
NW | Noble Woods |
VFF | Vestman Forest Fund (LV 44103115478) |
VZF2 | Vestman Zemes Fond 2 (LV 40203550091) |
DU | raieüksus, kood C-XXXXX |
MMH | Metsamaahalduse AS |
Kiirlingid
| Süsteem | Link |
|---|---|
| Supabase Studio | supabase.com/project/igy… |
| ForestSense Drive | Drive / ForestSense |
| VFF SharePoint | SP VFF108 |
| Andmete universumi kaart | andmeallikate_kaart_v0.html |
| LVM geo kaart | lvm_geo_kaart_v1.html |
| Azure AD | portal.azure.com |
Süsteemiarhi
Hybriid_arhitektuur v1.2 — Forestsense v2.0 SaaS + Eiriku OS operatsioonikiht
LOCKED v1.2 — auditeeritud peaagent_opus47_max'iga (Supabase id=424–427). Järgmine versioon v2.0 pärast GitHub priv-repo
forestsense-os loomist.Kaks kihti
🌲 ForestSense v2.0 — kliendi vaade
Multi-tenant SaaS metsanduse haldusplatvorm Balti investoritele.
5 toodet: MAP (geo), TimberTrace (raieaudit), Verify (arve-kontroll), S2 (LiDAR R&D), RAK (hinnakirjakontroll)
Test-klient: Vestman Group (VFF + VZF2)
5 toodet: MAP (geo), TimberTrace (raieaudit), Verify (arve-kontroll), S2 (LiDAR R&D), RAK (hinnakirjakontroll)
Test-klient: Vestman Group (VFF + VZF2)
⚙️ Eiriku OS — tehase vaade
Erki kõigi rollide metalevel mälu: NW direktor + FS asutaja + KBC omanik + eraelu.
Toimib real-time: Outlook, Gmail, Supabase, Drive, WhatsApp, SharePoint.
8 agenti + mini-NAS automation + GitHub CI/CD (plaanis)
Toimib real-time: Outlook, Gmail, Supabase, Drive, WhatsApp, SharePoint.
8 agenti + mini-NAS automation + GitHub CI/CD (plaanis)
Süsteemi diagramm
┌─────────────────────────────────────────────────────────────────────┐
│ ERKI (kasutaja + omanik) │
│ VS Code ─── Cowork Desktop ─── Claude.ai ─── Android │
└─────────┬────────────────┬──────────────────┬──────────────────── ┘
│ │ │
┌─────────▼──────┐ ┌──────▼────────┐ ┌─────▼──────────┐
│ VS Eirik │ │ CW Eirik │ │ Chat Eirik │
│ (kõvad liinid)│ │ (meili/relay)│ │ (mobile/kerge)│
│ Python, kood │ │ Outlook MCP │ │ Supabase query│
└─────────┬──────┘ └──────┬────────┘ └─────┬──────────┘
│ │ │
└────────────────▼──────────────────┘
│
┌──────────▼──────────┐
│ Supabase Pro │
│ 32 tabelit │
│ PostGIS + pgvector │
│ agent_messages bus │
└──────────┬──────────┘
│
┌──────────────────────────▼────────────────────────────────────────┐
│ ANDMEALLIKAD │
│ │
│ Directo VFF/VZF2 ─── TMA SharePoint ─── EVR ─── LVM Geo │
│ Email (vestman.ee) ─── WhatsApp ─── KPDC ─── Drive/OneDrive │
└────────────────────────────────────────────────────────────────────┘
First-principles põhimõtted (v1.2)
| # | Reegel | Seis | Järgmine samm |
|---|---|---|---|
| 1 | Üks vaade, üks tõde | 5 toote koondvaade puudub | LA-04 "tehase HUB" Live Artifact |
| 2 | Vertikaalne integratsioon (data→audit→P&L) | OK | — |
| 3 | Real-time (Live Artifacts MCP) | OK | — |
| 4 | Versioneerimine | Käsitsi HTML, git puudub | GitHub priv-repo forestsense-os |
| 5 | First-principles otsused | OK | — |
| 6 | Skill-katalog ühisruumis | 23 skilli laiali | Skills migratsioon _KATUS/Skills/ |
Konto- ja kanalide-arhitektuur
| Konto | Plaan | Agendid | |
|---|---|---|---|
| Max plaan | erki.unn@gmail.com | Claude Max | peaagent_opus47_max, Noble Woods projekt, Hinnakiri projekt |
| Forestsense Team | erki.unn@forestsense.ai | Claude Team | VS Eirik, CW Eirik, Chat Eirik, Disainer |
Brauseri grupp 1 (Max): peaagent_opus47_max, NW nõukogu. Grupp 2 (Team): Cowork/VS Eirik, Disainer. Cowork = ainult Desktop äpp (PR #41).
Agendi register
17 agenti Supabase agent_registry tabelis · PR #48 universaalne onboarding · sünk agent_messages kaudu
Suhtlusprotokoll: kõik agendid suhtlevad
agent_messages tabeli kaudu. Relay: VS Eirik → INSERT Supabase → CW Eirik/peaagent loeb. from_agent, to_agent, message_type, priority, payload jsonb, status.Eirik-pere (3 instantsi)
| Instantsi | Kanal | Roll | Peamine töö |
|---|---|---|---|
VS Eirik vs_eirik |
Claude Code + VS Code | Kõvad liinid | Python ETL, Supabase migratsioonid, GitHub, mini-NAS skriptid |
CW Eirik eirik |
Cowork Desktop äpp | Pehmed liinid | Outlook/Gmail analüütika, Disainer relay, briefingud, meilianalüütika |
Chat Eirik chat_eirik |
Claude.ai brauser + Android | Kerge kanal | Supabase päringud, NW päevalogi lugemine, mobiilne crash-resistance |
Kõik agendid
| agent_id | Nimi | Roll | Staatus | Peamine võimekus |
|---|---|---|---|---|
peaagent | Peaagent / Orchestrator | orchestrator | idle | all, coordination, Max plaan strateegia |
eirik | CW Eirik | meta | active | identity_memory, multi_agent_orchestration, supabase_mcp |
vs_eirik | VS Eirik | code | active | Python, GitHub, ETL, Supabase SQL, mini-NAS |
chat_eirik | Chat Eirik | kerge-kanal | idle | Supabase lugemine, mobiilne staatus |
disainer | Disainer | visuaalne_tarne | active | HTML/JSX, CSS tokens, PDF/PPTX eksport, Drive |
disainer_nw | Disainer — NW Design | design | idle | PPTX, NW brand, Claude Design Tool |
directo_sync | Directo Sync Edge Fn | data | active | directo_invoices, _purchases, _objects, _transactions |
evr_sync | EVR Sync Edge Fn | data | active | evr_waybills VFF+VZF2 |
watchdog | Watchdog | monitor | idle | all_tables, alerting, cleanup |
watchdog_v2 | Watchdog v2 (pg_cron) | monitor | active | data_freshness_check, daily_reports |
D1 | Directo Agent | data | idle | directo_bi, VFF+VZF2, arved |
EVR | EVR Agent | data | idle | evr_api, VFF+VZF2 EVR |
MAP | Kaardi Agent | visualization | idle | Leaflet, LVM Geo, ArcGIS, Netlify |
R2 | Raie Audit Agent | reporting | idle | harvester, directo, evr, C-koodid |
W1 | WhatsApp Transport | data | idle | Chrome MCP, WhatsApp, pavadzīme OCR |
A1 | Arhiiv Agent | storage | idle | SharePoint, OneDrive, Skills |
T4 | Andmelao Haldur | data | idle | directo_sync, evr_sync, OneDrive |
Agent_messages skeema (PR #5)
INSERT INTO agent_messages (from_agent, to_agent, message_type, priority, payload, status)
VALUES (
'vs_eirik',
'eirik',
'task_result', -- task_request | task_result | task_done | question | heartbeat
3, -- 1=kriitiline .. 5=madal
$j${"subject": "...", "data": {...}}$j$::jsonb,
'done' -- pending | processing | done | error
);
Tööpõhimõtted
CLAUDE.md v1.4 püsireeglid — 60 reeglit kokku · 2026-05-03
Need reeglid on siduvad kõigile agentidele. Uus reegel lisatakse ainult Erki kinnitusega (PR #29 AskUserQuestion dialoog). Tuvastus: PR #28–#30 algoritm.
Kriitilised reeglid (Erki prioriteedijärjekord)
| PR# | Reegel | Kuupäev |
|---|---|---|
| #1 | Kõigile tegevustele klikitavad lingid (Gmail, Outlook, Drive, GitHub, Supabase, claude.ai) | 2026-04-19 |
| #5 | agent_messages õige skeem: from_agent, to_agent, payload jsonb — mitte sender_agent_id | 2026-04-19 |
| #9 | EE/LV registripäringud ise (teatmik.ee, ariregister.rik.ee) — ei küsi Erkilt | 2026-04-22 |
| #16 | Tähtaeg KEELATUD — kõik on KOHE. WIP-faas. | 2026-04-28 |
| #20 | AskUserQuestion 2+ valiku jaoks — mitte markdown-tabel | 2026-04-28 |
| #28 | Korralduste auto-analüüs: kategooria 1/2/3 → auto-AskUserQuestion | 2026-04-28 |
| #38 | Failide kopeerimine: agendid liigutavad ise (Drive MCP), Erki ei vahenda | 2026-04-28 |
| #42 | Sessiooni alguse 5-faili rituaal (CLAUDE.md → MEMORY.md → Supabase 30 → 00_alus/ → lahtised küsimused) | 2026-05-01 |
| #45 | Directo andmed Supabase tabelitest otse — ei kasuta d1_directo vahendamist | 2026-05-02 |
| #49 | Harvester raportid 2 allikast paralleelselt: SharePoint VFF108 + email erki.unn@vestman.ee | 2026-05-03 |
| #50 | FINAL/INTER deduplikatsioon — MITTE KUNAGI summeeri INTER+FINAL | 2026-05-03 |
FINAL/INTER reegel (PR #60)
DU C-XXXXX kohta võib olla mitu HPR raportit ajas:
FINAL = viimane modification_date per DU → kehtiv arvutustes
INTER = varasemad raportid (kumulatiivsed vaheraportid) → ignoreerida
_fixed.hpr suffix → eelistus FINAL-ks sama päeva sees
SQL:
SELECT DISTINCT ON (du_code) du_code, report_date, volume_m3
FROM tma_tracking
WHERE du_code = 'C-XXXXX'
ORDER BY du_code, report_date DESC;
Andmeallikad
12 allikat · andmeallikate_kataloog_v1.md alusel · Supabase data_sources tabel
Auto-sünk (aktiivsed)
| ID | Allikas | Supabase tabel | Staatus | Sünk sagedus |
|---|---|---|---|---|
DIRECTO_VFF |
💰 Directo VFF (VFF raamatupidamine) | directo_transactions |
fresh | iga 6h, mini-NAS cron |
DIRECTO_VZF2 |
💰 Directo VZF2 (VZF2 raamatupidamine) | directo_transactions |
fresh | iga 6h, mini-NAS cron |
TMA |
🪵 TimberTrace / TMA (harvester raieandmed) | tma_tracking, tma_files, tma_stems, tma_objects |
deployment ootel | VS_TASK_3 — iga 30 min (pärast Azure AD seadistust) |
EVR |
🚛 EVR transport (EE/LV veoselehed) | evr_transport_docs |
active | Edge Function daily |
LVM_GEO |
🗺️ LVM Geo (kinnistute geomeetria, PostGIS) | features, feature_relations |
active | batch import (viimane 2026-05-03) |
SP_VFF108_HARVEST |
📁 SharePoint VFF108 (harvester HPR/PRD) | tma_files |
deployment ootel | VS_TASK_3 — iga 30 min |
HARVESTER_EMAIL |
📧 Email vestman.ee (harvester manused) | tma_files |
deployment ootel | VS_TASK_3 — iga 30 min |
Pilvsalvestus
| ID | Allikas | MCP tööriist | Sisu |
|---|---|---|---|
DRIVE | 📁 Google Drive ForestSense | mcp__82e6245c-* | NW Forest Model, Q1, Exit Pitch, briefingud |
ONEDRIVE | 📂 OneDrive isiklik (vestman.ee) | mcp__37284916-* | Vestman äridokumendid, OneDrive sync C:\Users\erki.unn\Desktop\Erki |
SP_VFF | 📋 VFF SharePoint | mcp__37284916-* | VFF tööruum, operatiivsed dokumendid |
Planeeritud (pole veel aktiivsed)
| ID | Allikas | Blokaad |
|---|---|---|
KPDC_LV | 📊 KPDC DFIS (LV puidu-voo andmekeskus, PapiNet) | Erki API token ootel (LK-006) |
WHATSAPP_STROBUS | 💬 WhatsApp Strobus logistics | W1 agent Chrome MCP impl. pooleli |
WHATSAPP_AKSTIGA | 💬 WhatsApp AK Stiga transport | W1 agent Chrome MCP impl. pooleli |
PHENU | 📋 Phenu (EE saatelehe-süsteem) | Manuaalne, API integratsioon plaanis |
Directo ühenduse kanal (PR #51): Eirik EI saa Cowork sandbox'ist otse Directo'sse (proxy blokk HTTP 403). Tee 1: mini-NAS Python → Directo BI Direct → Supabase. Tee 2: Erki manuaalne. Token ainult mini-NAS .env ja Anthropic userMemories'is.
Supabase andmebaasi skeem
Projekt igybaozqwiklxxcpwwkj · 32 tabelit · PostgreSQL + PostGIS · Pro plaan
🤖 Agent infrastruktuur
| Tabel | Kirjeldus |
|---|---|
agent_messages | Agentide sõnumibuss. from_agent, to_agent, message_type, payload jsonb |
agent_registry | 17 agendi register: agent_id, display_name, role, status, capabilities |
agent_state | Agendi hetkeseisu hoidla |
agent_tasks | Ülesannete jälgimine |
sync_log | Kõigi sünk-operatsioonide logi |
watchdog_log | Watchdog v2 kontroll-sündmused |
data_freshness_status | Andmeallikate värskuse seis (andmete-universumi kaart loeb siit) |
data_sources | 27 andmeallika register koos metadata ja sünk-staatusega |
💰 Directo raamatupidamine
| Tabel | Kirjeldus |
|---|---|
directo_transactions | VFF+VZF2 pearaamatu kanded. company, date, sum, account |
directo_invoices | Müügiarved (HPR alusel). invoice_no, du_code, amount |
directo_purchases | Ostuarved. Ruusa OÜ, AP Mežs jt harvester tasud |
directo_objects | Directo objektid (C-XXXXX DU koodid, kinnistud) |
attribute_definitions | Directo atribuutide definitsioonid |
observations | Mõõtmisandmed (timbertrace vaatlused) |
🪵 TMA / Harvester raieandmed
| Tabel | Kirjeldus |
|---|---|
tma_files | HPR/PRD/TMA faili metainfo. source_uri, content_hash, raw_attributes jsonb |
tma_objects | Raie-objekte StanForD2010 per fail |
tma_stems | Tüvekaardid (stem list) koos koordinaatidega |
tma_tracking | DU-tasemel mahukokkuvõte. du_code, report_date, volume_m3, FINAL/INTER |
🚛 Transport
| Tabel | Kirjeldus |
|---|---|
evr_transport_docs | EE/LV veoselehed. waybill_no, date, volume_m3 |
🗺️ Geo (PostGIS)
| Tabel | Kirjeldus |
|---|---|
features | Kinnistud + eraldised + DU tööülesanded. geom GEOMETRY(Geometry,4326) |
feature_relations | Geo-elementide vahelised seosed |
geometry_columns | PostGIS metadata (süsteemitabel) |
geography_columns | PostGIS metadata (süsteemitabel) |
spatial_ref_sys | SRID definitsioonid (süsteemitabel) |
💵 Hinnakirjad
| Tabel | Kirjeldus |
|---|---|
price_lists | Aktiivsed hinnakirjad (VFF/VZF2 harvester tasud) |
price_components | Hinnakiri komponentidena (liigid, sortimendid) |
coefficient_history | Koefitsientide ajalugu |
payment_schedule | Maksegraafikud |
📋 Arvekontroll
| Tabel | Kirjeldus |
|---|---|
invoice_verifications | HPR vs arve kontroll-tulemused (Verify toode) |
📊 Vaated (Views)
| Vaade | Kirjeldus |
|---|---|
v_active_coefficient | Hetkel kehtiv koefitsient per liik |
v_active_price_lists | Aktiivsed hinnakirjad |
v_pending_invoices | Kontrollimata arved |
Andmete universumi kaart
Reaalajas orbiitkaart kõigist andmeallikatest ·
andmeallikate_kaart_v0.html · FS-UNIVERSE-v0.2-2026-05-03Kaart loeb andmeid otse Supabase
data_sources + data_freshness_status tabelitest. Värvikood: 🟢 fresh (<8h) · 🟡 aging (8–24h) · 🔴 stale (>24h).ETL skriptid
07_skriptid/ · mini-NAS Windows Docker konteinerites jooksvad Python ETL protsessid
Mini-NAS deployment: Erki Windows 11 Pro Docker Desktop. Skriptid käivituvad cron'iga iga 6h (Directo) + 30 min (TMA). Credentials: .env fail lokaalsel masinal + Anthropic userMemories (MITTE Drive ega GitHub).
Harvester TMA sünk (VS_TASK_3)
Kood valmis · deployment ootab Azure AD credentials (MS_TENANT_ID, MS_CLIENT_ID, MS_CLIENT_SECRET)
| Fail | Roll | Staatus |
|---|---|---|
harvester_tma_sync/sync.py |
Entry point CLI — --sharepoint | --email | --dedup | --all | --heartbeat | --dry-run |
valmis |
harvester_tma_sync/sources/sharepoint.py |
Microsoft Graph API SharePoint VFF108 — VFF + VZF2 harvester reports kaustad | valmis |
harvester_tma_sync/sources/email_capture.py |
Graph API Outlook vestman.ee — ruusaou@gmail.com, svenotsa@gmail.com manused | valmis |
harvester_tma_sync/parsers/stanford2010.py |
StanForD2010 XML parser — TMA/HPR/PRD formaat, DU kood regex, _fixed detektsioon | valmis |
harvester_tma_sync/tma_writer.py |
Supabase writer — content_hash dedup, batch 500, SRID=4326 geom | valmis |
harvester_tma_sync/dedup.py |
FINAL vs INTER märgistamine — PR #60 reegel, _fixed bonus sort | valmis |
harvester_tma_sync/.env.example |
Vajalikud muutujad: SUPABASE_URL, SUPABASE_SERVICE_KEY, MS_TENANT_ID, MS_CLIENT_ID, MS_CLIENT_SECRET | valmis |
# Käivitus mini-NAS Docker'is: python sync.py --all # SharePoint + email + dedup python sync.py --sharepoint --dry-run # Testimine ilma kirjutamata python sync.py --heartbeat # Supabase ühenduse test # SharePoint struktuur VFF108: # Shared Documents/Harvesting workflow/ # VFF harvester reports/CXX_FolderName/ → company=VFF, du_code=C-XXXXX # VZF2 harvester reports/CXX_FolderName/ → company=VZF2
Directo sünk
| Fail | Roll | Sagedus |
|---|---|---|
mini_nas_directo_sync/sync_directo.py | VFF+VZF2 Directo BI Direct → Supabase directo_* | iga 6h cron |
mini_nas_directo_sync/supabase_writer.py | SupabaseWriter baasklass — heartbeat, log_error, get_credential | — |
LVM Geo import
| Fail | Roll | Staatus |
|---|---|---|
lvm_geo_import/import_geo.py | LVM GeoJSON/GPKG → Supabase features tabel (PostGIS) | PASS 2026-05-03 |
Nõutud .env muutujad (mini-NAS)
# Supabase (kohustuslik) SUPABASE_URL=https://igybaozqwiklxxcpwwkj.supabase.co SUPABASE_SERVICE_KEY=your_service_role_key_here # Microsoft 365 / Graph API MS_TENANT_ID=your_tenant_id_here # Azure AD → App registrations MS_CLIENT_ID=your_client_id_here MS_CLIENT_SECRET=your_client_secret # Jäta tühjaks → device_code interaktiivne # Directo BI Direct DIRECTO_KEY=your_directo_key DIRECTO_COMPANY_VFF=VFF DIRECTO_COMPANY_VZF2=VZF2 # Valikuline DRY_RUN=false LOG_LEVEL=INFO
Skills kataloog
23 unikaalset skilli · Drive + /mnt/skills/user/ · Migratsioon _KATUS/Skills/ alla (v1.2 F6)
Skills on laiali — Drive 4 erikohas + Cowork sandbox. Konsolideerimine
01_FORESTSENSE/_KATUS/Skills/ alla on Hybriid_arhitektuur v1.2 F6 prioriteet. Peaagent_opus47_max teostab.Kinnitatud skills (dokumenteeritud)
| Skill | Kategooria | Drive link | Versioon |
|---|---|---|---|
| harvesting-project-audit | Reports / TimberTrace | Drive | v1.1 (2026-04-18) |
| directo-erp-integration | Directo | Drive | v1.0 |
| raie-arve-verifitseerimine | RAK/Verify | Drive | v1.0 |
| hinnakirja-koefitsent | RAK | Drive | v1.0 |
| forestsense-evr | Reports | Drive | v1.0 |
| whatsapp-transport-agent | Reports | Drive | v0.1 |
| lvm-vizulis-inbox-monitor | Reports | Drive | v0.1 |
| v1-verification | Verify | Drive | v1.0 |
| forestsense-vaheaudit | Verify | Drive | v0.1 |
| forestsense-datasources | Datasources/HUB | Drive | v1.0 |
| ee-xml-gis-converter | Tehniline platvorm | Drive | v1.0 |
| directo_uhendus_SKILL | Directo / mini-NAS | 07_skriptid/directo_uhendus_SKILL_v1.md | v1 |
API viited
Microsoft Graph · Supabase REST · Directo BI Direct · StanForD2010
Microsoft Graph API (SharePoint + Outlook)
| Endpoint | Kasutus |
|---|---|
GET /drives/{driveId}/items/{itemId}/children | SharePoint kausta sisu loetlemine |
GET /drives/{driveId}/items/{itemId}/content | Faili allalaadimine (HPR/PRD/TMA) |
GET /users/{mailbox}/messages | Outlook e-mailid filtriga (sender, hasAttachments, date) |
GET /users/{mailbox}/messages/{id}/attachments | Manuste laadimine (contentBytes base64) |
| Konstant | Väärtus |
|---|---|
| VFF108_DRIVE_ID | b!XsQUW0kQxke0vpe6Q9XBzTV01xgkOfhJtx6GR3Q5rcm7m9m8T7y9SZLiBGsXRVlG |
| VFF harvester folder | 01EZHKEI47PYBJBAV4HVBYNA3KA7QEDKXR |
| VZF2 harvester folder | 01EZHKEI6A3GPOZ6URUVDJ53BDSARGRW5C |
| TARGET_MAILBOX | erki.unn@vestman.ee |
MSAL auth (mini-NAS)
# Client credentials (automaatne, mini-NAS .env):
app = msal.ConfidentialClientApplication(
client_id, authority=f"https://login.microsoftonline.com/{tenant_id}",
client_credential=client_secret,
)
result = app.acquire_token_for_client(scopes=["https://graph.microsoft.com/.default"])
# Device code (interaktiivne testimine, kui MS_CLIENT_SECRET tühi):
app = msal.PublicClientApplication(client_id, authority=...)
flow = app.initiate_device_flow(scopes=["Files.Read.All"])
print(flow['message']) # → login.microsoftonline.com/common/oauth2/deviceauth?code=...
Supabase REST (Python client)
from supabase import create_client
client = create_client(SUPABASE_URL, SUPABASE_SERVICE_KEY)
# SELECT
result = client.table("tma_files").select("id,source_name,raw_attributes") \
.not_.is_("raw_attributes->du_code", "null").execute()
# UPSERT (content_hash dedup)
client.table("tma_files").upsert(
{"source_uri": uri, "content_hash": sha256, ...},
on_conflict="content_hash"
).execute()
StanForD2010 XML
| Element | Kirjeldus |
|---|---|
hpr:HarvestingProcessorReport | Harvester raieraport — põhiformat |
prd:ProductionData | Tootmisandmed (tüvekaardid) |
tma:TimberMeasurementAct | Mõõdutunnistus |
stem/StemCoordinates | GPS koordinaadid (lat/lon) per tüvi |
| Namespace | urn:skogforsk:stanford2010 |
Deployment
Mini-NAS (Erki Windows 11 Pro Docker) + Supabase Edge Functions + GitHub priv-repo (plaanis)
Mini-NAS ülevaade
🖥️ Praegune NAS (Erki laptop)
Windows 11 Pro · Docker Desktop
Tailscale VPN: 100.116.204.116
pgAdmin: 100.116.204.116:5050
07_skriptid/ Docker konteinerites
Tailscale VPN: 100.116.204.116
pgAdmin: 100.116.204.116:5050
07_skriptid/ Docker konteinerites
🗄️ DS1825+ (planeeritud)
Synology DS1825+ migratsioon planeeritud v1.x→v2.0 puhul
Sama skriptide-arhitektuur
Tailscale + SSH tunnel
Sama skriptide-arhitektuur
Tailscale + SSH tunnel
VS_TASK_3 deployment sammud
| # | Samm | Blokaad |
|---|---|---|
| 1 | Azure AD app registration — portal.azure.com → App registrations → New → Sites.Read.All + Mail.Read.Shared | Erki teeb |
| 2 | Kopeeri MS_TENANT_ID, MS_CLIENT_ID, MS_CLIENT_SECRET → mini-NAS .env faili | pärast sammu 1 |
| 3 | pip install msal httpx supabase python-dotenv | — |
| 4 | python sync.py --heartbeat — testi Supabase ühendust | — |
| 5 | python sync.py --sharepoint --dry-run — testi SharePoint loetlemist | — |
| 6 | python sync.py --all — täis sünk | — |
| 7 | Docker cron — iga 30 min sync.py --all | — |
Supabase Edge Functions (aktiivsed)
| Funktsioon | Käivitus | Roll |
|---|---|---|
directo_sync | pg_cron iga 6h | Directo VFF+VZF2 → Supabase directo_* |
evr_sync | pg_cron daily | EVR veoselehed → evr_transport_docs |
watchdog_v2 | pg_cron daily | data_freshness_status uuendamine + alertid |
GitHub (plaanis)
Praegu: Käsitsi versioneerimine (HTML failid v8.4→v9, mitte git). Plaan (Hybriid_arhitektuur F6): GitHub priv-repo
forestsense-os — CI/CD Python skriptide jaoks, git history, pull requests. Peaagent audit id=424: "ForestSense EI kasuta git praegu! SOOVITUS: VS Code workspace + GitHub priv-repo."LVM Geo kaart
VZF2 kinnistud + eraldised + DU tööülesanded · Leaflet + PostGIS ·
lvm_geo_kaart_v1.htmlImport PASS 2026-05-03: VZF2 kinnistud on Supabase
features tabelis. VFF kinnistud import on järgmine samm. 7 kihti: parcels, compartments, du_work_orders, TMA by file, NFA stems.Changelog
ForestSense OS dokumentatsiooniportaal · Kõigi komponentide versiooniajalugu
Dokumentatsiooniportaal
v1.0
2026-05-04
Esmane dokumentatsiooniportaal — 9 sektsiooni, agent register (17), DB skeem (32 tabelit), ETL inventuur, andmeallikate integratsioon. Forbes 500 SaaS standard, sama disainikeel mis andmete universumi kaart.
Süsteemikomponentide ajalugu
v1.2
2026-04-26
Hybriid_arhitektuur LOCKED — peaagent_opus47_max audit (id=424–427). Skills migratsiooniplaan, 6 first-principles.
v2.0
2026-04-18
ForestSense Team arhitektuur v2.0 — Cowork = süda, brauser = strateegia/mobiil. Skills + Scheduled Tasks + püsiv mälu rõhk.
v0.2
2026-05-03
Andmete universumi kaart — 12 andmeallikat, reaalajas Supabase data_freshness_status, orbiitkaart. FS-UNIVERSE-v0.2.
v1.0
2026-05-03
LVM geo kaart — VZF2 kinnistud import PASS. 7 Leaflet kihti. PostGIS SRID=4326.
VS_TASK_3
2026-05-03/04
Harvester TMA ETL kood valmis — 6 faili: sync.py + sharepoint.py + email_capture.py + stanford2010.py + tma_writer.py + dedup.py. Deployment ootab Azure AD.
PR #60
2026-05-03
FINAL/INTER deduplikatsioon püsireegel — kumulatiivne INTER ignoreerida, ainult FINAL arvestada. Valideeritud C-01472 Pauguri/Graudiņi/Skaidiņas.
PR #54
2026-05-02
3-instantsi Eirik-pere — VS Eirik + CW Eirik + Chat Eirik. Crash-resistance, Supabase sünk kõigi vahel.
CLAUDE.md v1.4
2026-05-03
60 püsireegleid — PR #1..#60. VS_TASK_3 + harvester e-mail + FINAL/INTER lisatud.