Synlighet mellan ägare — relationer med platsavgränsning (spec 2 av 2)

Created: Wed 15 Jul 2026 10:22:53 CEST Updated: Thu 16 Jul 2026 06:50:12 CEST — Korrekta ägarförhållanden i Långudden-scenariot (Paul 2026-07-16): de sex delägarna är Paul, Katja, Elisabeth, Nina, Kåre och Leiv; ägaren Långudden äger både marken och sommarstället Saltsjön. Document Version: 1.0 — utkast efter brainstorm med Paul 2026-07-15 Security Classification: Internal Technical Documentation Target Audience: Backend, iOS, Web Author: Paul Wisén (design), Claude (spec)

Systerspec: 2026-07-15-owner-invitations-and-transfers-design.md (byggs FÖRE denna). Denna spec designas nu för att arkitekturen ska hänga ihop, men implementeras som steg 2.

Sammanfattning

I dag är synlighet binär: medlem i ägaren ser allt, alla andra ser bara den publika skanningsvyn (namn, bild, status, ägarnamn, grov ~1 km-position — och bara med taggen i handen). Detta bygger relationer mellan ägare: en givare delar sina objekt med en mottagare på en nivå (Vän/Nära), valfritt avgränsat till en platsrot. Mottagarens medlemmar ärver relationen. Under huven är nivåerna buntar av kapabiliteter, så förfining senare (egna grupper, zon-undantag, “får låna/sälja”) kräver ingen ombyggnad.

Styrande scenarier (blir publika use-cases)

  1. Göran (Vän): Paul ser att Görans verktyg finns — men inte exakt var, utan att fråga.
  2. Långudden/Kåre (Nära, platsavgränsad, grupp): sex delägare — Paul, Katja, Elisabeth, Nina, Kåre och Leiv — samäger marken och sommarstället Saltsjön (ägaren Långudden äger det gemensamma; var och en äger sitt). Kåre delar sina saker under Saltsjön med Paul (eller hela Långudden) — Paul ser dem direkt, inklusive var de är. Kåres garage i Luleå förblir osynligt.
  3. Förskolan (Nära, platsavgränsad, organisation): Familjen delar sina saker under förskolans plats med ägaren Förskolan. Läraren Camilla skannar Kalles jacka och ser att den är Kalles och att dess normala plats är “Kalles plats i kapprummet”. Omvänt behöver familjen placerings-rätt på förskolans plats (kapabiliteten får lägga in objekt — byggs inte i v1 men bärs av modellen).
  4. VD-rummet (framtida zon-undantag, INOM en ägare): alla anställda ser verkstadens verktyg, men inte innehållet i VD:ns rum — utom saker som hör hemma i verkstaden och bara står (CURRENT) hos VD:n: de syns. Byggs inte nu; principen låser arkitekturvalet (per-objekt-kontroll, NORMAL/CURRENT-axeln).

Datamodell (Postgres)

Ny tabell owner_relations:

Kolumn Typ Anm
id uuid PK  
grantor_organization_id uuid FK givaren (vars objekt delas)
grantee_organization_id uuid FK mottagaren (vars medlemmar ärver)
level text CHECK ‘friend’/’close’ UI: Vän / Nära
scope_root_object_id uuid NULL platsrot; NULL = allt givaren äger
created_by / created_at uuid / timestamptz owner-grindad på givaren

Nivåer och kapabiliteter

Mappningen nivå → kapabiliteter ligger i kod (konstant i Plings-API), inte i schemat — nya nivåer/egna grupper senare är kod, inte migration:

Kapabilitet Vän Nära Medlem (idag)
Ser existens (namn, bild, status, ägare)
Ser grov plats (~1 km, som publika vyn)
Ser exakt plats + platsträd + senast sedd
Får låna (framtida mekanik, reserveras) (✅)
Får lägga in objekt (placeringsrätt, framtida)
Redigera/flytta/sälja/överlämna ✅ (owner)

Platsrotens semantik (NORMAL/CURRENT-reglerna)

Relationen med platsrot R täcker givarens objekt som:

  1. Hör hemma under R (NORMAL_IN-subträd): syns även när de är borta — men exakt CURRENT-position visas bara medan objektet står under R. Utanför R maskas positionen till “inte på plats” (skyddar Kåres hemadress i Luleå och familjens hem i förskole-fallet). Det här är låne-informationen: “borren finns, Kåre har tagit hem den”.
  2. Står under R tillfälligt (CURRENT_IN under R, NORMAL utanför): syns medan de står där, försvinner när de åker hem.

Utan platsrot (NULL) gäller relationen allt givaren äger, med nivåns kapabiliteter.

Frågeytor (Plings-API)

UI (Plings-iOS, v1)

Avgränsningar v1

Öppna frågor (utflöden)