fc04578818
feat(parties): suggestion pipeline from ledger keys and linked documents ( #2172 )
...
* feat(parties): phase 1 substrate, one party per counterpart
Adds the identity layer above customers and suppliers, which keep their
tables and every foreign key and gain a nullable party_id.
- parties: company-scoped identity with status (suggested | confirmed),
kind, alias keys, origin and merged_into. One live party per org number
and company, enforced by a partial unique index; merged losers leave the
index so a merge can be undone. This is the unique key the
duplicate-invoice guard has lacked, since suppliers never had one.
- party_facts: statements with a source, a rank (preferred | normal |
deprecated) and two time axes, never overwritten.
- party_identities: bankgiro, plusgiro, IBAN and friends per party, with
seen and paid counts and a known | unverified status.
- party_decisions: every human action on a party as a labelled example.
- normalize_org_number(text): SQL mirror of lib/invariants/org-number.ts
(strip separators, drop the century on 12 digits, Luhn check, 10 digits).
- ensure_party(): find by org number inside the company, else create.
Name-only rows never merge at insert time; a name merge is a recorded
human decision.
- Backfill: one party per existing supplier and customer, merged on org
number, suppliers first so both roles land on one party.
- Archive contract: the four tables are master data in the full archive.
Observed parties (keys derived from voucher and bank text) are not stored;
they stay computed by the ledger-context RPC. No posted entry is touched.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
* feat(parties): observed parties from voucher text, ledger_key and its mirror
Migrants arrive with vouchers, not bank transactions, so the bank-keyed
ledger context is empty for them. This adds the description-keyed twin.
- public.ledger_key(text): legibility key on top of the frozen
normalize_counterparty_key mirror: strips AP-register prefixes (levfakt,
leverantörsfaktura från N, levbet, faktura, kvitto, utgift), the supplier
number that follows them, and trailing 1-3 digit runs, never "inköp".
Mirrored by lib/parties/ledger-key.ts; the pair is pinned by a shared
fixture list in the pg test.
- public.get_observed_parties(company, from_date, limit): posted vouchers
grouped by ledger_key(description) with occurrences, variants, expense
and revenue SEK from the lines, first/last seen, median cadence and the
Laplace-smoothed dominant result account. Excludes storno, opening
balance, year-end and VAT settlement, and vouchers that carry a bank
merchant name (those stay with get_ledger_deep_context). SECURITY
INVOKER, so RLS scopes it. Never stored.
- lib/parties/classify.ts: the deterministic pre-classifier moved out of
the evaluation script so product and evaluation share one implementation
(0.965 agreement with the founder labels, party recall 0.99).
- lib/parties/observed.ts: RPC wrapper that classifies each row and
derives a display rhythm from the cadence.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
* fix(parties): tenant-safe composite foreign keys on every party link
Facts, identities, decisions, customers.party_id, suppliers.party_id and
parties.merged_into now reference parties(id, company_id), so a row can
only point at a party in its own company. ON DELETE SET NULL names
party_id so role rows keep their company_id. Adds a pg-real test that
rejects every cross-company link and checks company_id survives a party
delete.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
* feat(parties): suggestion pipeline from ledger keys and linked documents
Phase 1c of the parties plan. Fills a migrant's register with suggested
parties from what the ledger already knows, never as facts:
- get_ledger_key_evidence(company): hard keys per ledger_key from the
documents linked to posted vouchers (org number via normalize_org_number,
VAT, bankgiro, plusgiro, printed name). Documents whose supplier org is
the company's own are the company's sales invoices and only count in
self_docs.
- apply_party_suggestions(company, user, items): upserts suggestions.
Attaches by explicit party_id, org number or an exact alias key; never
by name. Identities become known at two sightings. Idempotent.
- decide_parties(company, user, ids, kind, note): bulk confirm or dismiss
with one party_decisions row each.
- parties.suggested_reason: the evidence summary the queue shows per row.
- lib/parties/suggest.ts: buildSuggestions (pure) and
suggestPartiesForCompany. Keys that mix two org numbers keep neither the
hard key nor identities; same-core live parties are reported as
similar_to for a person to decide. coreKey() moves into ledger-key.ts.
55 unit tests and 14 pg-real tests pass locally.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
* fix(parties): decide_parties dismisses suggested parties only
Dismiss is the queue's answer to a suggestion; a confirmed party is never
archived through it. Superagent P2 on #2172 .
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
* test(parties): type the rpc mock with its args so the ratchet stays clean
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com >
---------
Co-authored-by: Jakob Wennberg <311770904+jakobwennberg-oss@users.noreply.github.com >
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com >
2026-09-02 18:18:12 +02:00
..
2026-08-22 10:49:07 +02:00
2026-06-08 09:41:36 +02:00
2026-02-13 15:39:13 +01:00
2026-02-13 15:39:13 +01:00
2026-02-13 15:39:13 +01:00
2026-02-13 15:39:13 +01:00
2026-02-13 15:39:13 +01:00
2026-02-13 15:39:13 +01:00
2026-02-13 15:39:13 +01:00
2026-02-13 15:39:13 +01:00
2026-02-13 15:39:13 +01:00
2026-02-18 09:33:30 +01:00
2026-02-26 20:53:57 +01:00
2026-03-06 10:16:22 +01:00
2026-02-19 09:48:02 +01:00
2026-02-19 09:48:02 +01:00
2026-02-19 09:48:02 +01:00
2026-02-19 09:48:02 +01:00
2026-02-19 09:48:02 +01:00
2026-03-11 14:54:53 +01:00
2026-02-19 09:48:02 +01:00
2026-02-26 20:53:57 +01:00
2026-02-20 12:23:17 +01:00
2026-02-19 14:32:54 +01:00
2026-03-06 10:16:22 +01:00
2026-02-20 12:23:17 +01:00
2026-02-26 20:53:57 +01:00
2026-02-20 12:23:17 +01:00
2026-02-20 12:23:17 +01:00
2026-02-20 14:21:28 +01:00
2026-02-20 17:16:22 +01:00
2026-02-21 14:57:15 +01:00
2026-02-21 14:57:15 +01:00
2026-02-21 14:57:15 +01:00
2026-02-21 17:14:08 +01:00
2026-02-26 20:53:57 +01:00
2026-02-21 17:14:08 +01:00
2026-02-21 17:14:08 +01:00
2026-02-21 17:14:08 +01:00
2026-02-21 17:14:08 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-11 14:54:53 +01:00
2026-03-06 10:16:22 +01:00
2026-03-06 10:16:22 +01:00
2026-03-11 14:54:53 +01:00
2026-03-11 18:05:37 +01:00
2026-03-16 14:21:32 +01:00
2026-03-16 14:21:32 +01:00
2026-03-18 17:53:54 +01:00
2026-03-21 12:57:14 +01:00
2026-03-21 12:57:14 +01:00
2026-03-23 13:00:37 +01:00
2026-03-23 13:00:37 +01:00
2026-03-24 13:41:12 +01:00
2026-03-24 13:41:12 +01:00
2026-03-25 14:54:53 +01:00
2026-03-26 10:07:36 +01:00
2026-03-26 10:07:36 +01:00
2026-03-26 10:07:36 +01:00
2026-03-26 13:30:26 +01:00
2026-03-29 23:49:09 +02:00
2026-03-30 13:20:07 +02:00
2026-03-31 16:41:52 +02:00
2026-03-31 16:41:52 +02:00
2026-03-31 16:41:52 +02:00
2026-03-31 16:41:52 +02:00
2026-03-31 16:41:52 +02:00
2026-03-31 16:41:52 +02:00
2026-04-01 14:46:41 +02:00
2026-04-01 14:46:41 +02:00
2026-04-01 17:08:00 +02:00
2026-04-01 17:08:00 +02:00
2026-04-09 16:22:51 +02:00
2026-04-02 10:48:13 +02:00
2026-04-01 17:08:00 +02:00
2026-04-01 17:08:00 +02:00
2026-04-01 17:08:00 +02:00
2026-04-03 16:45:17 +02:00
2026-04-14 15:35:50 +02:00
2026-04-15 11:17:39 +02:00
2026-04-15 11:17:39 +02:00
2026-04-15 10:52:00 +02:00
2026-04-15 11:17:39 +02:00
2026-04-18 10:05:32 +02:00
2026-04-18 10:26:02 +02:00
2026-04-18 13:26:41 +02:00
2026-04-18 13:26:41 +02:00
2026-04-18 14:32:22 +02:00
2026-04-20 21:50:07 +02:00
2026-04-20 13:42:37 +02:00
2026-04-21 12:55:43 +02:00
2026-04-20 21:03:23 +02:00
2026-04-20 21:50:07 +02:00
2026-04-20 21:50:07 +02:00
2026-04-20 21:50:07 +02:00
2026-04-21 13:25:13 +02:00
2026-04-21 12:55:43 +02:00
2026-04-21 17:08:38 +02:00
2026-04-21 14:33:38 +02:00
2026-04-21 14:33:38 +02:00
2026-04-22 18:14:01 +02:00
2026-04-22 18:14:01 +02:00
2026-04-21 22:28:41 +02:00
2026-04-22 18:14:01 +02:00
2026-04-21 21:39:57 +02:00
2026-04-22 18:14:01 +02:00
2026-04-22 18:14:01 +02:00
2026-04-23 11:57:12 +02:00
2026-04-23 11:57:12 +02:00
2026-05-14 01:10:44 +02:00
2026-04-27 10:32:15 +02:00
2026-04-27 10:32:15 +02:00
2026-04-27 10:32:15 +02:00
2026-04-27 10:32:15 +02:00
2026-04-27 10:32:15 +02:00
2026-04-27 16:29:58 +02:00
2026-04-27 16:29:58 +02:00
2026-04-27 16:29:58 +02:00
2026-04-27 20:55:56 +02:00
2026-04-28 18:26:03 +02:00
2026-04-28 18:26:03 +02:00
2026-04-28 21:55:51 +02:00
2026-05-04 11:12:29 +02:00
2026-05-04 11:12:29 +02:00
2026-05-04 11:12:29 +02:00
2026-05-04 11:12:29 +02:00
2026-05-04 11:12:29 +02:00
2026-05-05 09:53:37 +02:00
2026-05-04 19:01:21 +02:00
2026-05-04 19:01:21 +02:00
2026-05-04 19:01:21 +02:00
2026-05-05 09:53:37 +02:00
2026-05-05 17:08:29 +02:00
2026-05-05 13:48:53 +02:00
2026-05-06 10:24:57 +02:00
2026-05-06 11:12:02 +02:00
2026-05-06 10:24:57 +02:00
2026-05-06 10:24:57 +02:00
2026-05-06 10:24:57 +02:00
2026-05-06 10:24:57 +02:00
2026-05-06 10:24:57 +02:00
2026-05-06 10:24:57 +02:00
2026-05-06 14:08:38 +02:00
2026-05-06 16:41:36 +02:00
2026-05-06 14:08:38 +02:00
2026-05-06 16:41:36 +02:00
2026-05-06 18:24:52 +02:00
2026-05-09 12:41:16 +02:00
2026-05-09 12:41:16 +02:00
2026-05-09 12:41:16 +02:00
2026-05-11 16:34:07 +02:00
2026-05-10 14:21:26 +02:00
2026-05-10 14:21:26 +02:00
2026-05-10 14:21:26 +02:00
2026-05-10 19:09:57 +02:00
2026-05-11 17:12:00 +02:00
2026-05-12 13:12:17 +02:00
2026-05-12 13:12:17 +02:00
2026-05-12 13:12:17 +02:00
2026-05-12 01:10:01 +02:00
2026-05-12 01:10:01 +02:00
2026-05-12 17:16:39 +02:00
2026-05-12 20:47:13 +02:00
2026-05-13 00:26:04 +02:00
2026-05-13 00:26:04 +02:00
2026-05-13 00:26:04 +02:00
2026-05-13 09:33:06 +02:00
2026-05-14 01:10:44 +02:00
2026-05-13 09:33:06 +02:00
2026-05-13 10:45:08 +02:00
2026-05-13 10:45:08 +02:00
2026-05-13 11:54:06 +02:00
2026-05-13 11:54:06 +02:00
2026-05-13 20:16:27 +02:00
2026-05-13 19:15:31 +02:00
2026-05-14 01:10:44 +02:00
2026-05-14 01:10:44 +02:00
2026-05-13 21:53:22 +02:00
2026-05-15 00:49:59 +02:00
2026-05-14 16:39:56 +02:00
2026-05-14 16:39:38 +02:00
2026-05-15 00:49:59 +02:00
2026-05-15 14:00:04 +02:00
2026-05-15 14:00:04 +02:00
2026-05-15 14:00:04 +02:00
2026-05-15 14:00:04 +02:00
2026-05-15 20:38:19 +02:00
2026-05-15 20:38:19 +02:00
2026-05-15 20:38:19 +02:00
2026-05-16 11:42:47 +02:00
2026-05-16 15:55:27 +02:00
2026-06-08 09:41:39 +02:00
2026-05-16 15:55:27 +02:00
2026-05-17 14:50:48 +02:00
2026-05-17 14:50:48 +02:00
2026-05-17 23:52:49 +02:00
2026-05-17 23:52:49 +02:00
2026-05-17 23:52:49 +02:00
2026-05-17 23:52:49 +02:00
2026-05-17 23:52:49 +02:00
2026-05-17 23:52:49 +02:00
2026-05-17 15:38:36 +02:00
2026-05-17 16:25:43 +02:00
2026-05-17 15:38:36 +02:00
2026-05-17 15:38:36 +02:00
2026-05-28 11:27:01 +02:00
2026-05-28 11:27:01 +02:00
2026-05-28 11:27:01 +02:00
2026-05-28 11:27:01 +02:00
2026-05-28 11:27:01 +02:00
2026-05-28 11:27:01 +02:00
2026-05-28 11:27:01 +02:00
2026-05-28 11:27:01 +02:00
2026-05-18 19:02:42 +02:00
2026-05-28 11:27:01 +02:00
2026-05-19 13:48:32 +02:00
2026-05-28 11:27:01 +02:00
2026-05-28 11:27:01 +02:00
2026-05-28 11:27:01 +02:00
2026-05-28 11:27:01 +02:00
2026-05-19 16:10:18 +02:00
2026-05-19 16:10:18 +02:00
2026-05-19 16:10:18 +02:00
2026-05-19 16:10:18 +02:00
2026-05-19 16:10:18 +02:00
2026-05-19 16:10:18 +02:00
2026-05-19 16:10:18 +02:00
2026-05-19 17:52:11 +02:00
2026-05-19 17:52:11 +02:00
2026-05-21 01:25:18 +02:00
2026-05-28 11:27:01 +02:00
2026-05-21 21:33:22 +02:00
2026-05-21 21:33:22 +02:00
2026-05-21 16:44:09 +02:00
2026-05-22 10:12:21 +02:00
2026-05-26 22:29:41 +02:00
2026-05-26 22:29:41 +02:00
2026-05-22 11:09:46 +02:00
2026-05-22 12:22:15 +02:00
2026-05-22 15:21:05 +02:00
2026-05-28 11:27:01 +02:00
2026-05-28 11:27:01 +02:00
2026-05-28 11:27:01 +02:00
2026-05-26 22:29:41 +02:00
2026-05-28 11:27:01 +02:00
2026-05-28 11:27:01 +02:00
2026-05-26 22:29:41 +02:00
2026-05-26 22:29:41 +02:00
2026-05-26 22:29:41 +02:00
2026-05-26 22:29:41 +02:00
2026-05-26 22:29:41 +02:00
2026-05-26 22:29:41 +02:00
2026-05-26 22:29:41 +02:00
2026-05-26 22:29:41 +02:00
2026-05-26 22:29:41 +02:00
2026-05-26 22:29:41 +02:00
2026-05-28 11:27:01 +02:00
2026-05-28 11:27:01 +02:00
2026-05-26 22:29:41 +02:00
2026-05-26 22:29:41 +02:00
2026-05-28 11:27:01 +02:00
2026-05-28 11:27:01 +02:00
2026-05-27 11:01:53 +02:00
2026-05-27 17:07:27 +02:00
2026-05-27 14:19:30 +02:00
2026-05-27 17:07:27 +02:00
2026-05-28 11:27:01 +02:00
2026-05-28 11:27:01 +02:00
2026-05-28 11:27:01 +02:00
2026-05-28 21:09:43 +02:00
2026-05-28 21:09:43 +02:00
2026-05-28 21:09:43 +02:00
2026-05-28 21:09:43 +02:00
2026-05-28 21:09:43 +02:00
2026-05-28 21:09:43 +02:00
2026-05-28 21:09:43 +02:00
2026-05-28 21:09:43 +02:00
2026-05-29 12:31:19 +02:00
2026-05-29 13:45:41 +02:00
2026-05-29 12:31:19 +02:00
2026-05-29 12:31:19 +02:00
2026-05-29 13:45:41 +02:00
2026-05-29 13:45:41 +02:00
2026-05-30 01:28:41 +02:00
2026-05-30 01:28:41 +02:00
2026-05-30 01:28:41 +02:00
2026-05-30 01:28:41 +02:00
2026-05-29 14:55:24 +02:00
2026-05-29 14:55:24 +02:00
2026-05-29 16:30:42 +02:00
2026-05-29 16:30:42 +02:00
2026-05-29 16:30:42 +02:00
2026-05-29 16:30:42 +02:00
2026-05-30 10:23:14 +02:00
2026-05-30 10:23:14 +02:00
2026-06-08 09:47:33 +02:00
2026-05-30 13:36:46 +02:00
2026-05-30 13:36:46 +02:00
2026-05-30 13:36:46 +02:00
2026-06-01 14:45:49 +02:00
2026-06-01 18:26:13 +02:00
2026-06-01 14:45:49 +02:00
2026-06-01 18:26:13 +02:00
2026-06-01 18:26:13 +02:00
2026-06-01 18:26:13 +02:00
2026-06-01 21:08:06 +02:00
2026-06-01 21:08:06 +02:00
2026-06-02 09:37:30 +02:00
2026-06-02 10:24:18 +02:00
2026-06-02 10:24:18 +02:00
2026-06-02 10:24:18 +02:00
2026-06-02 13:25:48 +02:00
2026-06-02 13:25:48 +02:00
2026-06-04 13:14:57 +02:00
2026-06-04 13:14:57 +02:00
2026-06-03 10:52:01 +02:00
2026-06-03 10:52:01 +02:00
2026-06-04 15:32:39 +02:00
2026-06-04 15:32:39 +02:00
2026-06-16 11:26:26 +02:00
2026-06-04 16:16:27 +02:00
2026-06-05 10:11:37 +02:00
2026-06-05 15:47:13 +02:00
2026-06-05 15:47:13 +02:00
2026-06-06 10:05:48 +02:00
2026-06-06 10:42:41 +02:00
2026-06-06 10:42:41 +02:00
2026-06-06 11:13:35 +02:00
2026-06-08 12:43:15 +02:00
2026-06-10 13:52:24 +02:00
2026-06-10 13:52:24 +02:00
2026-06-09 21:05:37 +02:00
2026-06-09 21:05:37 +02:00
2026-06-12 10:05:10 +02:00
2026-06-18 11:49:33 +02:00
2026-06-18 11:49:33 +02:00
2026-06-18 11:49:33 +02:00
2026-06-12 16:35:30 +02:00
2026-06-12 16:35:30 +02:00
2026-06-12 16:35:30 +02:00
2026-06-12 16:35:30 +02:00
2026-06-14 23:40:26 +02:00
2026-06-16 10:42:37 +02:00
2026-06-16 10:42:37 +02:00
2026-06-16 18:22:09 +02:00
2026-06-26 15:29:58 +02:00
2026-06-26 15:30:03 +02:00
2026-06-29 15:56:19 +02:00
2026-06-29 15:56:19 +02:00
2026-06-29 15:56:19 +02:00
2026-06-29 16:34:51 +02:00
2026-06-29 21:47:42 +02:00
2026-07-01 18:13:00 +02:00
2026-06-29 22:59:58 +02:00
2026-06-29 22:59:58 +02:00
2026-06-30 08:58:01 +02:00
2026-07-01 18:13:00 +02:00
2026-07-03 13:57:59 +02:00
2026-07-02 11:27:07 +02:00
2026-07-03 13:57:59 +02:00
2026-07-02 12:26:42 +02:00
2026-07-02 13:36:45 +02:00
2026-07-02 16:05:13 +02:00
2026-07-02 17:02:34 +02:00
2026-07-02 17:02:34 +02:00
2026-07-02 21:21:01 +02:00
2026-07-02 21:21:01 +02:00
2026-07-02 22:21:46 +02:00
2026-07-02 23:28:42 +02:00
2026-07-03 13:57:59 +02:00
2026-07-03 13:57:59 +02:00
2026-07-03 09:41:31 +02:00
2026-07-03 09:42:02 +02:00
2026-07-03 10:56:14 +02:00
2026-07-03 11:48:29 +02:00
2026-07-03 11:48:09 +02:00
2026-07-04 15:58:06 +02:00
2026-07-05 03:05:09 +02:00
2026-07-05 03:05:09 +02:00
2026-07-03 16:50:28 +02:00
2026-07-05 03:05:09 +02:00
2026-07-05 03:05:09 +02:00
2026-07-05 03:05:09 +02:00
2026-07-05 03:05:09 +02:00
2026-07-05 03:05:09 +02:00
2026-07-05 03:05:09 +02:00
2026-07-06 11:20:34 +02:00
2026-07-07 01:14:59 +02:00
2026-07-07 01:14:59 +02:00
2026-07-07 01:50:18 +02:00
2026-07-08 23:54:49 +02:00
2026-07-08 13:48:04 +02:00
2026-07-08 02:14:15 +02:00
2026-07-08 09:54:46 +02:00
2026-07-08 15:04:25 +02:00
2026-07-08 23:54:49 +02:00
2026-07-08 23:54:49 +02:00
2026-07-12 00:56:16 +02:00
2026-07-09 12:19:57 +02:00
2026-07-09 12:19:57 +02:00
2026-07-09 21:27:03 +02:00
2026-07-10 11:05:40 +02:00
2026-07-10 11:05:40 +02:00
2026-07-10 11:05:40 +02:00
2026-07-11 23:13:50 +02:00
2026-07-12 19:14:12 +02:00
2026-07-12 19:14:12 +02:00
2026-07-12 19:14:12 +02:00
2026-07-12 19:14:12 +02:00
2026-07-12 19:14:12 +02:00
2026-07-12 19:14:12 +02:00
2026-07-12 19:14:12 +02:00
2026-07-12 19:14:12 +02:00
2026-07-12 19:14:12 +02:00
2026-07-12 19:14:12 +02:00
2026-07-12 19:14:12 +02:00
2026-07-12 21:04:39 +02:00
2026-07-12 21:25:34 +02:00
2026-07-16 16:00:05 +02:00
2026-07-16 16:00:05 +02:00
2026-07-16 16:00:01 +02:00
2026-07-13 22:54:33 +02:00
2026-07-13 22:54:33 +02:00
2026-07-13 22:54:33 +02:00
2026-07-13 22:54:33 +02:00
2026-07-13 22:54:33 +02:00
2026-07-13 22:54:33 +02:00
2026-07-13 22:54:33 +02:00
2026-07-15 15:53:15 +02:00
2026-07-15 15:53:15 +02:00
2026-07-15 15:53:15 +02:00
2026-07-15 15:53:15 +02:00
2026-07-15 15:53:15 +02:00
2026-07-16 16:04:06 +02:00
2026-07-17 00:52:57 +02:00
2026-07-17 00:52:57 +02:00
2026-07-16 18:13:39 +02:00
2026-07-16 18:15:20 +02:00
2026-07-17 00:52:57 +02:00
2026-07-17 14:13:53 +02:00
2026-07-17 14:13:53 +02:00
2026-07-17 15:48:25 +02:00
2026-07-17 16:04:05 +02:00
2026-07-17 17:02:49 +02:00
2026-07-17 17:09:31 +02:00
2026-07-19 13:35:52 +02:00
2026-07-20 13:38:14 +02:00
2026-07-20 13:38:14 +02:00
2026-07-20 13:38:14 +02:00
2026-07-20 13:38:14 +02:00
2026-07-20 13:38:14 +02:00
2026-07-20 13:00:53 +02:00
2026-07-20 13:00:53 +02:00
2026-07-20 13:38:14 +02:00
2026-07-20 16:17:43 +02:00
2026-07-21 23:00:15 +02:00
2026-07-21 23:00:15 +02:00
2026-07-21 23:00:15 +02:00
2026-07-21 23:00:15 +02:00
2026-07-21 23:00:15 +02:00
2026-07-21 23:00:15 +02:00
2026-07-21 23:00:15 +02:00
2026-07-21 23:00:15 +02:00
2026-07-21 23:00:15 +02:00
2026-07-21 23:00:15 +02:00
2026-07-22 00:43:46 +02:00
2026-07-21 16:54:14 +02:00
2026-07-21 23:00:15 +02:00
2026-07-21 23:00:15 +02:00
2026-07-21 23:00:15 +02:00
2026-07-21 23:00:15 +02:00
2026-07-22 15:58:45 +02:00
2026-07-22 18:49:57 +02:00
2026-07-22 18:33:49 +02:00
2026-07-22 18:49:57 +02:00
2026-07-23 09:54:02 +02:00
2026-07-23 09:54:02 +02:00
2026-07-23 09:54:02 +02:00
2026-07-23 09:54:02 +02:00
2026-07-23 09:54:02 +02:00
2026-07-23 11:41:14 +02:00
2026-07-23 21:28:07 +02:00
2026-07-23 16:16:55 +02:00
2026-07-23 16:16:55 +02:00
2026-07-23 16:16:55 +02:00
2026-07-23 16:16:55 +02:00
2026-07-23 16:16:55 +02:00
2026-07-23 16:16:55 +02:00
2026-07-24 01:16:20 +02:00
2026-07-24 01:16:20 +02:00
2026-07-24 01:16:20 +02:00
2026-07-24 01:16:20 +02:00
2026-07-24 15:03:50 +02:00
2026-07-24 16:36:35 +02:00
2026-07-25 22:56:17 +02:00
2026-07-26 17:48:18 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 03:54:42 +02:00
2026-07-27 03:34:56 +02:00
2026-07-27 14:49:22 +02:00
2026-07-27 16:58:48 +02:00
2026-07-27 18:04:15 +02:00
2026-07-28 18:34:55 +02:00
2026-07-28 19:50:16 +02:00
2026-07-29 18:15:06 +02:00
2026-07-29 09:38:52 +02:00
2026-07-29 09:39:23 +02:00
2026-07-30 09:03:05 +02:00
2026-07-30 09:03:05 +02:00
2026-07-30 18:52:24 +02:00
2026-07-30 18:51:41 +02:00
2026-07-31 08:58:27 +02:00
2026-08-02 20:44:59 +02:00
2026-08-02 20:39:29 +02:00
2026-08-02 20:39:29 +02:00
2026-08-05 14:36:00 +02:00
2026-08-05 14:36:00 +02:00
2026-08-05 14:36:00 +02:00
2026-08-05 15:27:00 +02:00
2026-08-05 15:47:23 +02:00
2026-08-03 18:49:46 +02:00
2026-08-03 17:56:37 +02:00
2026-08-04 09:59:52 +02:00
2026-08-04 09:59:52 +02:00
2026-08-04 11:43:58 +02:00
2026-08-04 11:43:58 +02:00
2026-08-04 11:43:58 +02:00
2026-08-03 18:55:59 +02:00
2026-08-04 10:00:03 +02:00
2026-08-04 19:35:02 +02:00
2026-08-04 19:34:54 +02:00
2026-08-06 10:04:20 +02:00
2026-08-06 10:04:58 +02:00
2026-08-06 15:43:54 +02:00
2026-08-06 23:00:05 +02:00
2026-08-06 23:00:05 +02:00
2026-08-06 23:00:05 +02:00
2026-08-06 23:30:00 +02:00
2026-08-06 23:30:00 +02:00
2026-08-07 14:17:21 +02:00
2026-08-07 11:45:11 +02:00
2026-08-07 11:45:11 +02:00
2026-08-07 14:17:21 +02:00
2026-08-07 14:17:21 +02:00
2026-08-10 12:23:42 +02:00
2026-08-07 14:17:21 +02:00
2026-08-07 14:17:21 +02:00
2026-08-07 13:51:01 +02:00
2026-08-07 14:37:28 +02:00
2026-08-07 14:37:28 +02:00
2026-08-07 15:18:59 +02:00
2026-08-07 16:05:46 +02:00
2026-08-08 16:04:58 +02:00
2026-08-08 11:58:51 +02:00
2026-08-08 11:58:51 +02:00
2026-08-09 12:44:08 +02:00
2026-08-09 12:44:08 +02:00
2026-08-10 14:04:08 +02:00
2026-08-10 14:04:08 +02:00
2026-08-10 14:11:09 +02:00
2026-08-10 14:18:23 +02:00
2026-08-10 14:18:23 +02:00
2026-08-10 19:53:39 +02:00
2026-08-10 21:19:44 +02:00
2026-08-12 15:08:13 +02:00
2026-08-12 15:08:13 +02:00
2026-08-12 15:08:13 +02:00
2026-08-12 15:08:13 +02:00
2026-08-11 23:12:18 +02:00
2026-08-12 15:08:13 +02:00
2026-08-12 15:08:13 +02:00
2026-08-12 15:08:13 +02:00
2026-08-12 16:45:41 +02:00
2026-08-12 20:52:47 +02:00
2026-08-12 21:48:01 +02:00
2026-08-13 09:39:23 +02:00
2026-08-13 15:29:32 +02:00
2026-08-13 15:12:32 +02:00
2026-08-13 23:12:27 +02:00
2026-08-13 15:55:01 +02:00
2026-08-13 15:55:01 +02:00
2026-08-13 16:53:19 +02:00
2026-08-13 16:53:19 +02:00
2026-08-13 17:03:35 +02:00
2026-08-14 00:36:33 +02:00
2026-08-14 00:36:33 +02:00
2026-08-13 19:44:32 +02:00
2026-08-13 19:44:32 +02:00
2026-08-13 19:44:32 +02:00
2026-08-13 19:44:32 +02:00
2026-08-13 19:44:32 +02:00
2026-08-13 23:12:27 +02:00
2026-08-13 23:57:53 +02:00
2026-08-14 08:21:57 +02:00
2026-08-15 23:07:29 +02:00
2026-08-15 23:45:04 +02:00
2026-08-15 23:45:04 +02:00
2026-08-15 23:45:04 +02:00
2026-08-15 23:45:04 +02:00
2026-08-17 12:02:43 +02:00
2026-08-17 13:18:32 +02:00
2026-08-17 13:18:32 +02:00
2026-08-17 14:52:58 +02:00
2026-08-17 14:52:58 +02:00
2026-08-17 22:07:53 +02:00
2026-08-17 22:20:52 +02:00
2026-08-17 21:36:16 +02:00
2026-08-19 12:04:24 +02:00
2026-08-19 12:04:24 +02:00
2026-08-19 12:04:24 +02:00
2026-08-19 11:09:10 +02:00
2026-08-19 12:04:24 +02:00
2026-08-19 12:04:24 +02:00
2026-08-19 20:09:23 +02:00
2026-08-20 10:08:04 +02:00
2026-08-20 10:27:52 +02:00
2026-08-20 10:22:13 +02:00
2026-08-20 10:22:13 +02:00
2026-08-26 09:50:25 +02:00
2026-08-20 21:25:18 +02:00
2026-08-21 15:55:26 +02:00
2026-08-21 16:56:32 +02:00
2026-08-21 17:27:45 +02:00
2026-08-22 10:49:07 +02:00
2026-08-23 00:07:30 +02:00
2026-08-23 00:07:30 +02:00
2026-08-23 03:03:23 +02:00
2026-08-24 13:55:08 +02:00
2026-08-24 14:03:20 +02:00
2026-08-24 14:03:20 +02:00
2026-08-24 14:07:58 +02:00
2026-08-24 14:07:58 +02:00
2026-08-24 14:07:58 +02:00
2026-08-24 13:19:32 +02:00
2026-08-24 16:09:16 +02:00
2026-08-24 17:05:00 +02:00
2026-08-24 17:05:00 +02:00
2026-08-25 10:32:12 +02:00
2026-08-25 08:30:54 +02:00
2026-08-25 09:34:05 +02:00
2026-08-25 09:34:05 +02:00
2026-08-25 09:03:43 +02:00
2026-08-25 09:03:43 +02:00
2026-08-25 12:41:02 +02:00
2026-08-25 14:23:56 +02:00
2026-08-25 14:23:56 +02:00
2026-08-25 14:36:18 +02:00
2026-08-25 15:15:33 +02:00
2026-08-25 17:03:57 +02:00
2026-08-25 19:30:39 +02:00
2026-08-25 19:30:39 +02:00
2026-08-26 09:58:25 +02:00
2026-08-26 15:14:49 +02:00
2026-08-26 16:56:39 +02:00
2026-08-26 16:56:39 +02:00
2026-08-26 16:56:39 +02:00
2026-08-26 16:56:39 +02:00
2026-08-26 16:56:39 +02:00
2026-08-26 16:56:39 +02:00
2026-08-26 16:56:39 +02:00
2026-08-27 14:35:19 +02:00
2026-08-27 22:24:36 +02:00
2026-08-27 18:32:52 +02:00
2026-08-28 12:12:47 +02:00
2026-08-28 17:38:36 +02:00
2026-08-28 17:45:10 +02:00
2026-08-28 18:14:31 +02:00
2026-08-28 18:14:31 +02:00
2026-08-29 00:29:11 +02:00
2026-08-28 22:12:20 +02:00
2026-08-28 23:51:27 +02:00
2026-08-30 12:19:03 +02:00
2026-08-30 12:19:03 +02:00
2026-08-30 11:51:27 +02:00
2026-08-30 12:19:03 +02:00
2026-08-30 16:06:00 +02:00
2026-08-30 16:38:30 +02:00
2026-08-30 16:38:30 +02:00
2026-08-30 16:54:35 +02:00
2026-08-30 16:57:28 +02:00
2026-08-30 16:57:28 +02:00
2026-08-30 21:43:23 +02:00
2026-08-30 21:43:23 +02:00
2026-08-31 08:39:04 +01:00
2026-08-31 08:39:04 +01:00
2026-08-31 14:15:31 +02:00
2026-08-31 14:15:31 +02:00
2026-08-31 15:53:53 +01:00
2026-08-31 15:34:06 +02:00
2026-08-31 16:01:11 +02:00
2026-08-31 17:55:29 +02:00
2026-08-31 17:55:29 +02:00
2026-08-31 20:51:17 +02:00
2026-08-31 21:46:50 +02:00
2026-09-01 11:29:12 +02:00
2026-09-01 11:29:12 +02:00
2026-09-01 11:29:12 +02:00
2026-09-01 14:00:36 +02:00
2026-09-01 20:31:10 +02:00
2026-09-01 20:31:10 +02:00
2026-09-01 14:14:09 +02:00
2026-09-01 14:14:45 +02:00
2026-09-01 14:23:05 +02:00
2026-09-01 14:29:47 +02:00
2026-09-01 16:16:29 +02:00
2026-09-01 21:58:02 +02:00
2026-09-02 08:50:42 +02:00
2026-09-02 11:38:30 +02:00
2026-09-02 11:38:30 +02:00
2026-09-02 11:38:30 +02:00
2026-09-02 11:38:30 +02:00
2026-09-02 14:33:45 +02:00
2026-09-02 15:25:34 +02:00
2026-09-02 15:25:34 +02:00
2026-09-02 18:14:49 +02:00
2026-09-02 18:14:49 +02:00
2026-09-02 18:14:49 +02:00
2026-09-02 17:17:41 +02:00
2026-09-02 18:14:32 +02:00
2026-09-02 17:33:30 +02:00
2026-09-02 18:14:49 +02:00
2026-09-02 18:18:12 +02:00