build: a need about another, answered from the board's own rows

`about: <need>` on a need puts its form on a page per record of the
other need (/status/<bucket>/[key]), links every row of the public
list to it, carries the record's id in a type: record field, takes a
signed-in person's address without asking, and lets `mails: { open:
owner }` reach whoever sent the record. The vel's plan uses it for
the lending board: notices stand from the moment they are sent, the
board hears, an answer goes straight to the poster, the queue is the
poster's inbox, and the redaktør or the clock takes down what stands.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GT37Z1Xtfd9pUuQtMTg6Yt
This commit is contained in:
Bendik Aagaard Lynghaug
2026-09-30 06:55:28 +02:00
co-authored by Claude Fable 5.1
parent 02235a7ef1
commit 4e1bc2027d
2 changed files with 231 additions and 39 deletions
+40 -13
View File
@@ -4,8 +4,12 @@
# som frivillig. Komiteene er gruppene: en søknad om plass i en
# komité velger blant de samme sju som har hver sin pult. Trafikk,
# anlegg og oppslagstavla kan alle lese; kontaktopplysninger vises
# ikke der. Nabohjelp begge veier, og oppslagstavla for deling av
# utstyr holdes lite: én melding, styret legger den ut og tar den ned.
# ikke der. Nabohjelp begge veier. Oppslagstavla for deling av utstyr
# står ute med en gang: en nabo som kan låne ut, eller vil låne, sier
# fra rett fra oppslaget, og den som la det ut hører fra dem. Køen er
# innboksen til den som la ut; siden holder ikke rede på hvem som ble
# valgt. Redaktøren, de som står som ansvarlige, tar ned det som står
# igjen.
business: Tomter Vel
language: no
contact: { name: Styret i Tomter Vel, email: post@tomtervel.no }
@@ -223,22 +227,26 @@ needs:
- { name: telefon, type: tel }
- { name: kan, type: select, multiple: true, options: [Snømåking, Handling, Kjøring, Småfiks i huset, En prat og litt selskap, Det som trengs] }
# Oppslagstavla, holdt lite: én melding.
# Oppslagstavla: ut med en gang, styret hører om det. Svar går
# rett til den som la ut; køen er innboksen deres. Tas ned av den
# som la ut, av redaktøren, eller av klokka etter en måned.
- id: dele-utstyr
who: en nabo som har noe å låne ut, eller trenger å låne noe
wants: et oppslag som naboene ser
wants: et oppslag naboene ser med en gang
lands_in: oppslag
door: naboer
handled_by: styret
stages: [open, lagt_ut, tatt_ned]
stages_text: { open: "mottatt", lagt_ut: "lagt ut", tatt_ned: "tatt ned" }
done_when: [lagt_ut, tatt_ned]
success: [lagt_ut]
# Den som la det ut kan ta det ned selv. Tavla er offentlig: det er
# den naboene leser; navn og e-post vises ikke der.
moves_by: { tatt_ned: [submitter, styret] }
mails: { lagt_ut: submitter }
handled_by: redaktor
stages: [open, tatt_ned]
stages_text: { open: "ute", tatt_ned: "tatt ned" }
done_when: [tatt_ned]
success: [tatt_ned]
moves_by: { tatt_ned: [submitter, redaktor] }
mails: { open: post@tomtervel.no }
deadlines: { open: { days: 30, to: tatt_ned } }
# Tavla er offentlig: det er den naboene leser; navn og e-post
# vises ikke der.
watched_by: [public]
public_states: [open]
max_fields: 4
collects:
- { name: navn, private: true }
@@ -246,6 +254,25 @@ needs:
- { name: har_eller_trenger, type: select, options: [Jeg har noe å låne ut, Jeg trenger å låne noe] }
- { name: hva, type: textarea }
# Svaret på et oppslag: fra oppslagets egen rad på tavla, med
# e-post eller innlogget, rett til den som la ut. Redaktøren ser
# svarene og merker dem lest.
- id: melde-seg
who: en nabo som kan låne ut, eller vil låne, det et oppslag gjelder
wants: at den som la ut oppslaget får vite det
about: dele-utstyr
lands_in: svar
handled_by: redaktor
stages: [open, lest]
stages_text: { open: "sendt", lest: "lest" }
done_when: [lest]
success: [lest]
mails: { open: owner }
max_fields: 2
collects:
- { name: email, type: email }
- { name: hilsen, type: textarea, optional: true }
- id: utlegg
who: en i en komité som har lagt ut for noe
wants: pengene tilbake