Commit f6bbb180acce4ddd8c2c3ed5ead9369816366061
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,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 | | **Repo** | https://github.com/reporkey/vibe-erp | | 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 | | **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 | | 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 | | **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). | | 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 | | **Plug-ins serving HTTP** | 1 (reference printing-shop, 7 endpoints + own DB schema + own metadata + own i18n bundles) | | 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,7 +44,7 @@ That target breaks down into roughly 30 work units across 8 phases. About **22 a | ||
| 44 | | P1.6 | ICU4J `Translator` implementation + locale resolution | ✅ DONE — `01c71a6` | | 44 | | P1.6 | ICU4J `Translator` implementation + locale resolution | ✅ DONE — `01c71a6` | |
| 45 | | P1.7 | Event bus + transactional outbox | ✅ DONE — `c2f2314` | | 45 | | P1.7 | Event bus + transactional outbox | ✅ DONE — `c2f2314` | |
| 46 | | P1.8 | JasperReports integration | 🔜 Pending | | 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 | | 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 | | 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 | ### Phase 2 — Embedded workflow engine | 50 | ### Phase 2 — Embedded workflow engine |