// services/api/src/public-ov/storage-ov.provider.ts —— ov 侧 StoragePort 的 DI // 装配(P2 Task 6)。与 cn 侧 uploads/storage.provider 同一构造 // (createStorageFromEnv → MinioStorageAdapter),但**只读约定**: // · ov 公开读域只调用 presignGet(thumb/browse/banner 现签短期 GET 凭证); // cn 副本对象键与 ov 共用同一本地 MinIO(生产为同桶只读凭证/CDN,P5)。 // · 「只读」是约定而非凭证约束:本地仿真沿用同一对 access key,真实 OSS // 侧应发放只读凭证(presignGet/head)——登记为 P5 部署事项(计划 Task 6 // 执行注意:真实 OSS 只读凭证随 G1/P5)。 // 独立 DI token(STORAGE_PORT_OV)而非复用 STORAGE_PORT:uploads 模块属 cn // 角色装配(Redis 队列等),ov 入口不 import UploadsModule,token 不共享实例。 import { createStorageFromEnv, type StoragePort } from '@photo/storage'; /** ov 侧只读存储端口 DI token(public-ov Task 6;likes/visits 后续按需复用)。 */ export const STORAGE_PORT_OV = Symbol('STORAGE_PORT_OV'); export const storageOvProvider = { provide: STORAGE_PORT_OV, useFactory: (): StoragePort => createStorageFromEnv(), };