In the Japanese adult video (AV) market, each release is identified by a catalog number that typically includes an abbreviation of the label or distributor followed by a sequential number.
| Element | Interpretation | |---------|-----------------| | SV | Usually denotes the production label S1 No. 1 Style or a closely affiliated studio. In some cataloging systems the “S” can also stand for “Soft” or “S‑Series”, but the most common usage in recent years points to S1. | | DVD | Indicates the format of the release (DVD). In the era when Blu‑ray and digital streaming began to dominate, many companies kept the “DVD” suffix for legacy cataloging continuity. | | 349 | The 349th title released under that label’s DVD line. The number increments with each new product, making it a straightforward way for retailers, distributors, and fans to locate a specific film. | SVDVD-349
Thus, SVDVD‑349 is simply the 349th DVD‑format title from the S1 (or a related) studio. In the Japanese adult video (AV) market, each
| # | Task | Owner | Estimate |
|---|------|-------|----------|
| T‑1 | Add UI button, tooltip, loading state | Frontend (React) | 2 d |
| T‑2 | Implement useDownloadAll hook + error handling | Frontend | 1 d |
| T‑3 | Write unit & e2e tests for frontend | QA/Frontend | 1 d |
| T‑4 | Create backend endpoint, permission checks | Backend (Java) | 2 d |
| T‑5 | Implement streaming ZIP with manifest generation | Backend | 2 d |
| T‑6 | Add size‑limit guard & proper error codes | Backend | 0.5 d |
| T‑7 | Update API documentation (OpenAPI) | Docs | 0.5 d |
| T‑8 | Add audit‑log entry | Backend | 0.5 d |
| T‑9 | Performance testing (large payload) | Performance Engineer | 1 d |
| T‑10 | Review, security scan, merge | All | 1 d |
| Total | | | ~11 person‑days | | # | Task | Owner | Estimate
| Risk | Impact | Mitigation |
|------|--------|------------|
| Large ZIP generation may consume CPU / memory. | Performance degradation on busy servers. | Use streaming, cap size at 500 MB, monitor via metrics, autoscale zip‑service if needed. |
| Mobile browsers sometimes block programmatic downloads. | Users get “download blocked”. | Use a hidden <a> element with href set to object URL and download attribute; fallback to opening in new tab. |
| Users may expect folder hierarchy that does not exist. | Confusion over flat file list. | Include manifest.txt with original ordering; optionally add a “Preserve folder hierarchy” flag in a future iteration. |
| Permission edge‑cases (some attachments private). | 403 errors may be unexpected. | Disable button entirely if any attachment is not downloadable; show tooltip explaining why. |
| # | As a … | I want … | So that … |
|---|--------|----------|-----------|
| US‑1 | Power user | a “Download All Attachments” button appears in the Document Viewer toolbar when a document has 2+ attachments. | I can retrieve everything with one click. |
| US‑2 | Mobile user | the download works on iOS/Android browsers and respects device‑specific download handling (e.g., opens the “Share” sheet). | I can get the ZIP without leaving the app. |
| US‑3 | Compliance officer | the generated ZIP includes a manifest.txt listing each file’s original name, size, and checksum. | Auditors can verify the package’s integrity. |
| US‑4 | System admin | the backend limits zip creation to 500 MB total payload, returning a friendly error if exceeded. | The service stays performant and does not exhaust resources. |
| US‑5 | Developer | the feature is exposed via a REST endpoint (GET /api/v1/documents/docId/attachments/zip) that respects existing auth & RBAC. | I can reuse it in other tools (CLI, automation). |