Fsdss-536 -
If you want, I can:
| Item | Description | |--------------------------|-------------| | | Add support for bulk import of transaction records from CSV files into the Financial‑Services‑Data‑Sync‑Service (FSDSS). | | Primary Goal | Enable users to upload a CSV (up to 50 k rows) and have the service parse, validate, and persist the records atomically, returning a detailed import report. | | Scope | – New REST endpoint /api/v1/transactions/import – CSV parser utility ( CsvTransactionParser ) – Validation layer ( TransactionValidator ) – Bulk‑insert service ( TransactionBulkService ) – Import‑report DTO ( ImportReportDto ) – Integration tests and Swagger documentation. | | Related Tickets | FSDSS‑421 (single‑record import), FSDSS‑487 (audit‑log enhancements). | | Branch | feature/FSDSS-536-bulk-import | FSDSS-536
| Sub‑System | Role | Main Technologies (examples) | Critical Guarantees | |------------|------|------------------------------|----------------------| | | Global namespace, object versioning, lease management. | etcd , Consul , Raft‑based KV . | Strong consistency (linearizable reads/writes). | | LogStore | Immutable write‑ahead log (WAL) + LSM compaction. | RocksDB , Pebble , LevelDB forks. | Write durability (≥ 2‑f + 1 replication). | | StreamEngine | Real‑time event ingestion & replay (pub/sub). | Apache Pulsar , Kafka‑compatible APIs , gRPC streams . | Exactly‑once delivery (transactional writes). | | Cache Layer | Hot‑data tier (in‑memory & NVMe‑tier). | Redis‑cluster , Memcached , Aerospike . | Sub‑ms read latency, automatic promotion/demotion. | | Storage Nodes | Persistent data (object + block). | Hybrid SSD/HDD , Erasure‑coded erasures (Reed‑Solomon) , NVMe‑over‑Fabric . | 99.999% durability, configurable R/W parity. | | Global Router | Multi‑region request routing + geo‑affinity. | Anycast DNS , BGP‑based Anycast , SD‑WAN . | < 2 ms cross‑region routing, fail‑over within 30 s. | | API Gateways | Unified REST, gRPC, S3‑compatible, Kafka‑compatible endpoints. | Envoy , Traefik , NGINX , Istio . | Auth / AuthZ (OAuth2, mTLS). | If you want, I can: | Item |
Born on , in Tokyo, Igarashi stands 163 cm tall and entered the industry with a natural, girl-next-door charm that juxtaposes powerfully with the intense scenarios she often portrays. Her approachable beauty and earnest acting style make her a beloved figure among fans. She is a dedicated exclusive performer for FALENO, with a filmography that includes numerous works exploring a variety of themes. | | Related Tickets | FSDSS‑421 (single‑record import),
| # | Action | Owner | Target | |---|--------|-------|--------| | 1 | Externalise batchSize to application.yml and expose it via a config property ( fsdss.import.batch-size ). | Dev Team | Sprint 2 | | 2 | Add performance test for 50 k‑row import and record baseline metrics. | QA | Sprint 2 | | 3 | Implement optional async import (Spring Batch) for files > 20 k rows. | Architecture | Future release | | 4 | Add rate‑limiting filter for the import endpoint (e.g., Bucket4j). | Security | Sprint 3 | | 5 | Commit a sample CSV file ( sample_transactions.csv ) and reference it in the README. | Docs | Immediate | | 6 | Review the ImportProcessingException mapping to ensure no stack traces leak to the client. | Backend Lead | Immediate |
★★★★☆ (4 / 5) – approve for merge after the minor items are resolved.
CREATE TABLE sync_jobs ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), user_id UUID NOT NULL, status TEXT NOT NULL, last_checked TIMESTAMP WITH TIME ZONE DEFAULT now(), details JSONB, created_at TIMESTAMP WITH TIME ZONE DEFAULT now(), updated_at TIMESTAMP WITH TIME ZONE DEFAULT now() ); CREATE INDEX ON sync_jobs(user_id);