thomas
f8734f79ca
feat(docker): update Dockerfile to include git and adjust file copying structure
...
fix(docs): update Garage image version in README and architecture documentation
fix(e2e): change default Garage image version in e2e tests and improve directory handling
fix(s3): skip adding inbox directory markers in S3 listing
fix(main): set HTTP address argument correctly for the application
2026-11-04 21:56:44 +01:00
thomas
320b030bde
fix(config): guard the emission-date probes against absent formats
...
The generic emissionDate rule ran unconditionally: on a document whose
date is not numeric (e.g. "le 19 janvier 2026"), date(firstMatch(...))
errored on the empty match and routed a correctly classified document to
pending/. Each format probe now checks for its own format first, and a
frDate fallback handles French natural-language dates.
2026-11-03 23:12:45 +01:00
thomas
4baf2f3368
feat(events): store before/after as diffs, not full snapshots
...
AppendEvent now reduces the before/after snapshots to the changed keys:
identical values on both sides are omitted, a key on one side only is an
addition or a deletion. The imported, corrected and validated payloads all
follow the same rule (an import is a diff from nothing, a validation keeps
carrying the status alone). arch.md section 4 updated accordingly.
2026-11-03 23:05:34 +01:00
thomas
5d09e7a780
feat(config): add frDate helper for French natural-language dates
...
Go date layouts only know English month names, so date(value, layout)
cannot parse "le 19 janvier 2026". frDate(text) extracts and parses such
dates (day optional, abbreviated months, accents optional) into a native
date; no match is a rule error routing the document to pending/.
Documented in arch.md §5, covered by unit tests.
2026-11-03 22:56:47 +01:00
thomas
09d0c9b99b
fix(pipeline): skip rule evaluation when PDF extraction fails (US-13)
...
An unreadable PDF was still passed to cfg.Evaluate with nil pages, producing
a cascade of spurious errors (index out of range on pages[0], missing
mandatory fields) in the imported event. Route straight to pending/ with the
extraction failure as the single error.
2026-11-03 22:53:16 +01:00
thomas
02f7fd99bb
Corrections after first run
2026-11-03 22:36:27 +01:00
thomas
6f94674fc9
archivist: migrate to PocketBase v0.41.1 (module ganigeorgiev.com/pocketbase/pocketbase); dbx moved to ganigeorgiev.com/pocketbase/dbx; go 1.27 and golang:1.27-alpine builder
2026-11-03 21:01:00 +01:00
thomas
7829d73cd4
archivist: scratch runtime Dockerfile (static binary only, non-root, CA bundle + tzdata); .dockerignore; README build section; arch.md packaging; fix ARCHIVIST_HTTP_ADDR doc row
2026-11-02 13:28:50 +01:00
thomas
233c153072
archivist: single-file E2E regression gate (Garage + image under test); superuser-only poll route; ARCHIVIST_S3_REGION
2026-11-02 12:28:58 +01:00
thomas
1cbe96b173
archivist: fix README spacing before Troubleshooting section
2026-11-02 11:27:57 +01:00
thomas
67c337eb14
archivist: runtime logs through PocketBase logger (Dashboard > Logs); stderr kept for pre-bootstrap fatals
2026-11-02 11:27:00 +01:00
thomas
61586a670a
archivist: clarify Remove() comment re optional versioning
2026-11-02 11:13:02 +01:00
thomas
3bba6a82db
archivist: versioning check becomes a startup warning in code
2026-11-02 11:12:31 +01:00
thomas
72fe21c9c1
archivist: brief aligned with versioning-optional decision
2026-11-02 11:12:23 +01:00
thomas
20385eafca
archivist: README aligned with versioning-optional decision
2026-11-02 11:12:15 +01:00
thomas
e667ee7203
archivist: US-01/US-12/US-17 aligned with versioning-optional decision
2026-11-02 11:12:08 +01:00
thomas
fd35991397
archivist: versioning no longer required, warning at startup instead (recommended)
2026-11-02 11:11:59 +01:00
thomas
24b22c5815
archivist: render template from stored fields when recovering interrupted filings
2026-11-01 23:02:52 +01:00
thomas
a9b4fa5eca
archivist: initial Go implementation of the written user stories (US-01..US-23)
2026-11-01 23:02:24 +01:00
thomas
7de824d797
archivist: correction and validation through the standard PocketBase UI via the update hook
2026-11-01 22:52:40 +01:00
thomas
ce19e97711
archivist: allow document correction and validation through the standard PocketBase UI via the update hook (US-22, US-23)
2026-11-01 22:52:32 +01:00
thomas
d04134d8cd
archivist: enforce document_events append-only via request hooks instead of API rules (superusers bypass rules)
2026-11-01 22:46:02 +01:00
thomas
a2f448873a
archivist: add user stories for startup, configuration, polling/classification and PocketBase UI visualization
2026-11-01 19:16:17 +01:00
thomas
a9d6af7f9c
archivist: add user-facing README (docker deployment, configuration, dashboard)
2026-11-01 18:43:34 +01:00
thomas
fe9ba799b9
archivist: document firstMatch empty-string semantics, interrupted-filing recovery, log-only duplicates
2026-11-01 18:37:27 +01:00
thomas
d6cf724878
archivist: move status into before/after snapshots in document_events payloads
2026-11-01 16:15:04 +01:00
thomas
b4e7c983a8
archivist: document document_events payload format (imported/corrected/validated)
2026-11-01 16:11:04 +01:00
thomas
348c69224d
archivist: drop original_filename and size columns
2026-11-01 11:54:40 +01:00
thomas
b6f23a30f9
archivist: firstMatch examples use pages expressions
2026-11-01 11:51:49 +01:00
thomas
bfc02c626f
archivist: firstMatch takes a pages expression, not page numbers
2026-11-01 11:51:42 +01:00
thomas
3b743345f1
archivist: update examples for pages array and firstMatch scope
2026-11-01 11:45:11 +01:00
thomas
7e1b53adf0
archivist: page-by-page text storage and firstMatch pages argument
2026-11-01 11:45:04 +01:00
thomas
e080bc3069
archivist: brief wording for page-based extraction
2026-11-01 11:44:57 +01:00
thomas
21d727c9a3
archivist: use backtick raw strings in expression examples
2026-11-01 11:37:51 +01:00
thomas
fe497fb6d8
archivist: document period() and use it in bank statement example
2026-11-01 11:23:48 +01:00
thomas
84557434d4
archivist: document period() helper for period-based naming
2026-11-01 11:23:40 +01:00
thomas
daa1d4f0b5
archivist: {expr} placeholder templates, rename date field to emissionDate
2026-11-01 11:13:36 +01:00
thomas
8eb69367c0
archivist: templates keep {expr} placeholders whose content is an expr expression
2026-11-01 11:13:29 +01:00
thomas
6a92127d20
archivist: fix date field type (string -> date) in example config
2026-11-01 11:07:37 +01:00
thomas
d6678aa1e3
archivist: use expr standard date(value, layout) builtin instead of custom parseDate
2026-11-01 11:07:19 +01:00
thomas
a17de3c004
archivist: drop custom parseDate helper, use expr standard date(value, layout) builtin
2026-11-01 11:07:12 +01:00
thomas
db90657598
archivist: field types in example config, native date via parseDate helper
2026-11-01 11:05:37 +01:00
thomas
36d79a188d
archivist: field types (text/number/date/boolean/enum), native time.Time dates, parseDate helper, enum vocabulary dropdown
2026-11-01 11:05:30 +01:00
thomas
7f1fbb7f4b
archivist: fix invalid JSON (unescaped quotes), use expr raw strings (backticks) in expressions
2026-10-31 12:58:25 +01:00
thomas
c5373da667
archivist: add example config.jsonc (banks, tax notices, invoices) with firstMatch extraction
2026-10-31 11:05:08 +01:00
thomas
105a762579
archivist: rule structure (when/set/delete/rules), eval expressions, firstMatch helper, date normalization
2026-10-31 11:05:04 +01:00
thomas
1417ceb4bf
archivist: simplify brief, remove redundancies
2026-10-30 16:49:24 +01:00
thomas
dd20b63a79
archivist: correction implies validation, save blocked on unresolvable template, template renders full path
2026-10-30 14:56:03 +01:00
thomas
99c3d4a050
archivist: explicit filing order, extraction failure reason in classified event, drop redundant timestamps
2026-10-30 14:45:18 +01:00
thomas
b01e19534c
archivist: template as a declared field, first-page-only rule context, duplicate handled via logs
2026-10-30 14:37:36 +01:00