Commit f6bbb180acce4ddd8c2c3ed5ead9369816366061

Authored by zichun
1 parent f2156c5b

docs(progress): pin P1.9 file store commit ref

Showing 1 changed file with 5 additions and 5 deletions
PROGRESS.md
... ... @@ -10,11 +10,11 @@
10 10  
11 11 | | |
12 12 |---|---|
13   -| **Latest version** | v0.24.0 (P1.10 — Quartz scheduler + api.v1 JobHandler seam) |
14   -| **Latest commit** | `5d6a2f1 feat(jobs): P1.10 — Quartz scheduler + api.v1 JobHandler/JobScheduler/JobContext` |
  13 +| **Latest version** | v0.25.0 (P1.9 — FileStorage facade + LocalDiskFileStorage + HTTP surface) |
  14 +| **Latest commit** | `f2156c5 feat(files): P1.9 — FileStorage facade + LocalDiskFileStorage + HTTP surface` |
15 15 | **Repo** | https://github.com/reporkey/vibe-erp |
16   -| **Modules** | 22 |
17   -| **Unit tests** | 315, all green |
  16 +| **Modules** | 23 |
  17 +| **Unit tests** | 327, all green |
18 18 | **Real PBCs implemented** | **10 of 10** (pbc-identity, pbc-catalog, pbc-partners, pbc-inventory, pbc-warehousing, pbc-orders-sales, pbc-orders-purchase, pbc-finance, pbc-production, pbc-quality) — P5.x row of the implementation plan complete at minimal v1 scope |
19 19 | **End-to-end smoke runs** | An SO confirmed with 2 lines auto-spawns 2 draft work orders via `SalesOrderConfirmedSubscriber`; completing one credits the finished-good stock via `PRODUCTION_RECEIPT`, cancelling the other flips its status, and a manual WO can still be created with no source SO. All in one run: 6 outbox rows DISPATCHED across `orders_sales.SalesOrder` and `production.WorkOrder` topics; pbc-finance still writes its AR row for the underlying SO; the `inventory__stock_movement` ledger carries the production receipt tagged `WO:<code>`. First PBC that REACTS to another PBC's events by creating new business state (not just derived reporting state). |
20 20 | **Plug-ins serving HTTP** | 1 (reference printing-shop, 7 endpoints + own DB schema + own metadata + own i18n bundles) |
... ... @@ -44,7 +44,7 @@ That target breaks down into roughly 30 work units across 8 phases. About **22 a
44 44 | P1.6 | ICU4J `Translator` implementation + locale resolution | ✅ DONE — `01c71a6` |
45 45 | P1.7 | Event bus + transactional outbox | ✅ DONE — `c2f2314` |
46 46 | P1.8 | JasperReports integration | 🔜 Pending |
47   -| P1.9 | File store (local + S3) | 🔜 Pending |
  47 +| P1.9 | File store (local + S3) | ✅ Partial — `f2156c5` — api.v1 `FileStorage` + `FileHandle` + `FileReadResult`; new `platform-files` subproject with `LocalDiskFileStorage` (sidecar metadata files, atomic `put`, path-traversal guards); `PluginContext.files` with default-throw; `FileController` with multipart upload/download/list/delete. S3 backend still pending. |
48 48 | P1.10 | Job scheduler (Quartz) | ✅ DONE — `5d6a2f1` — new `platform-jobs` module with Quartz Spring Boot starter + JDBC job store against host Postgres; api.v1 `JobHandler`/`JobScheduler`/`JobContext`; owner-tagged `JobHandlerRegistry` parallel to `TaskHandlerRegistry`; `QuartzJobBridge` routes by key; `PrincipalContext.runAs("system:jobs:<key>")` wraps every execution; HTTP surface at `/api/v1/jobs/**` (list/trigger/schedule/unschedule); built-in `vibeerp.jobs.ping` diagnostic handler |
49 49  
50 50 ### Phase 2 — Embedded workflow engine
... ...