mirror of
https://github.com/Afilmory/afilmory
synced 2026-02-01 22:48:17 +00:00
feat: implement managed storage plans and provider settings
- Added new UI schema for managing storage plans, including catalog, pricing, and product configurations. - Introduced StoragePlanService to handle storage plan operations and integrate with existing billing services. - Updated SuperAdmin settings to include managed storage provider configurations. - Enhanced localization files with new keys for storage plan management. - Implemented API endpoints for fetching and updating storage plans. Signed-off-by: Innei <tukon479@gmail.com>
This commit is contained in:
@@ -275,6 +275,25 @@
|
||||
"photos.library.tags.toast.success-description": "Storage paths have been updated for the new tag structure.",
|
||||
"photos.page.description": "Sync and manage photo assets on the server.",
|
||||
"photos.page.title": "Photo Library",
|
||||
"photos.storage.managed.actions.cancel": "Cancel managed storage",
|
||||
"photos.storage.managed.actions.current": "Current plan",
|
||||
"photos.storage.managed.actions.loading": "Updating…",
|
||||
"photos.storage.managed.actions.retry": "Try again",
|
||||
"photos.storage.managed.actions.subscribe": "Subscribe",
|
||||
"photos.storage.managed.actions.switch": "Switch to this plan",
|
||||
"photos.storage.managed.capacity.label": "Storage capacity: {{value}}",
|
||||
"photos.storage.managed.capacity.unknown": "Capacity information is not available.",
|
||||
"photos.storage.managed.capacity.unlimited": "Unlimited storage capacity",
|
||||
"photos.storage.managed.description": "Subscribe to managed storage plans powered by the platform’s shared provider—no self-hosted bucket required.",
|
||||
"photos.storage.managed.empty": "No managed storage plans are currently available.",
|
||||
"photos.storage.managed.error.load": "Failed to load managed storage plans.",
|
||||
"photos.storage.managed.price.free": "Included in your current plan",
|
||||
"photos.storage.managed.price.label": "{{price}} / month",
|
||||
"photos.storage.managed.provider": "Backed by provider {{provider}}",
|
||||
"photos.storage.managed.title": "Managed storage",
|
||||
"photos.storage.managed.toast.error": "Failed to update managed storage: {{reason}}",
|
||||
"photos.storage.managed.toast.success": "Managed storage plan updated.",
|
||||
"photos.storage.managed.unavailable": "Managed storage hasn’t been enabled for this workspace yet.",
|
||||
"photos.sync.actions.button.apply": "Sync photos",
|
||||
"photos.sync.actions.button.preview": "Preview sync",
|
||||
"photos.sync.actions.toast.apply-success": "Photo sync completed",
|
||||
@@ -716,11 +735,46 @@
|
||||
"superadmin.nav.settings": "System Settings",
|
||||
"superadmin.nav.tenants": "Tenants",
|
||||
"superadmin.plans.description": "Manage plan quotas, pricing, and Creem product mappings. Only super admins can edit these settings.",
|
||||
"superadmin.plans.storage.actions.add": "Add plan",
|
||||
"superadmin.plans.storage.actions.remove": "Remove",
|
||||
"superadmin.plans.storage.actions.save": "Save storage plans",
|
||||
"superadmin.plans.storage.description": "Create managed storage plans without editing JSON. One plan per tenant; capacity stacks with app plan bundled storage.",
|
||||
"superadmin.plans.storage.empty": "No storage plans yet. Add one to get started.",
|
||||
"superadmin.plans.storage.error": "Failed to load storage plans: {{reason}}",
|
||||
"superadmin.plans.storage.fields.active": "Expose this plan",
|
||||
"superadmin.plans.storage.fields.capacity": "Capacity (GB)",
|
||||
"superadmin.plans.storage.fields.creem": "Creem product ID",
|
||||
"superadmin.plans.storage.fields.currency": "Currency",
|
||||
"superadmin.plans.storage.fields.description": "Description",
|
||||
"superadmin.plans.storage.fields.id": "Plan ID",
|
||||
"superadmin.plans.storage.fields.name": "Display name",
|
||||
"superadmin.plans.storage.fields.placeholder.description": "Who is this plan for? What's included?",
|
||||
"superadmin.plans.storage.fields.placeholder.name": "Managed B2 • 5GB",
|
||||
"superadmin.plans.storage.fields.price": "Monthly price",
|
||||
"superadmin.plans.storage.saved": "Storage plans updated",
|
||||
"superadmin.plans.storage.title": "Storage plans",
|
||||
"superadmin.plans.storage.validation.block": "Fix validation errors before saving.",
|
||||
"superadmin.plans.storage.validation.capacity": "Capacity must be a number in GB.",
|
||||
"superadmin.plans.storage.validation.id": "Plan ID is required.",
|
||||
"superadmin.plans.storage.validation.name": "Display name is required.",
|
||||
"superadmin.plans.storage.validation.price": "Price must be a number.",
|
||||
"superadmin.plans.tabs.app": "App plans",
|
||||
"superadmin.plans.tabs.storage": "Storage plans",
|
||||
"superadmin.plans.title": "Plan Configuration",
|
||||
"superadmin.settings.button.loading": "Saving…",
|
||||
"superadmin.settings.button.save": "Save changes",
|
||||
"superadmin.settings.description": "Control platform-wide registration policies and local sign-in channels. Managed centrally by super admins.",
|
||||
"superadmin.settings.error.loading": "Unable to load super admin settings: {{reason}}",
|
||||
"superadmin.settings.managed-storage.actions.edit": "Edit",
|
||||
"superadmin.settings.managed-storage.actions.save": "Save managed provider",
|
||||
"superadmin.settings.managed-storage.actions.select": "Set as managed",
|
||||
"superadmin.settings.managed-storage.actions.selected": "Selected",
|
||||
"superadmin.settings.managed-storage.current": "Managed",
|
||||
"superadmin.settings.managed-storage.description": "Configure the storage provider used for built-in managed storage (e.g., B2).",
|
||||
"superadmin.settings.managed-storage.empty": "No storage providers yet. Add one to use as managed storage.",
|
||||
"superadmin.settings.managed-storage.error": "Failed to load storage providers: {{reason}}",
|
||||
"superadmin.settings.managed-storage.title": "Managed storage provider",
|
||||
"superadmin.settings.managed-storage.type": "Type: {{type}}",
|
||||
"superadmin.settings.message.dirty": "You have unsaved changes",
|
||||
"superadmin.settings.message.error": "Failed to save settings: {{reason}}",
|
||||
"superadmin.settings.message.idle": "All settings are up to date",
|
||||
@@ -730,6 +784,8 @@
|
||||
"superadmin.settings.stats.remaining": "Remaining registration slots",
|
||||
"superadmin.settings.stats.total-users": "Total users",
|
||||
"superadmin.settings.stats.unlimited": "Unlimited",
|
||||
"superadmin.settings.tabs.general": "General",
|
||||
"superadmin.settings.tabs.managed-storage": "Managed storage",
|
||||
"superadmin.settings.title": "System Settings",
|
||||
"superadmin.tenants.button.ban": "Ban",
|
||||
"superadmin.tenants.button.processing": "Working…",
|
||||
|
||||
@@ -275,6 +275,25 @@
|
||||
"photos.library.tags.toast.success-description": "已根据新标签更新存储路径。",
|
||||
"photos.page.description": "在此同步和管理服务器中的照片资产。",
|
||||
"photos.page.title": "照片库",
|
||||
"photos.storage.managed.actions.cancel": "取消托管存储",
|
||||
"photos.storage.managed.actions.current": "当前方案",
|
||||
"photos.storage.managed.actions.loading": "处理中…",
|
||||
"photos.storage.managed.actions.retry": "重试",
|
||||
"photos.storage.managed.actions.subscribe": "立即订阅",
|
||||
"photos.storage.managed.actions.switch": "切换到此方案",
|
||||
"photos.storage.managed.capacity.label": "可用容量:{{value}}",
|
||||
"photos.storage.managed.capacity.unknown": "暂无法获取该方案的容量信息。",
|
||||
"photos.storage.managed.capacity.unlimited": "容量无限制",
|
||||
"photos.storage.managed.description": "订阅由平台托管的存储方案,无需自建对象存储即可扩容。",
|
||||
"photos.storage.managed.empty": "当前没有可订阅的托管存储方案。",
|
||||
"photos.storage.managed.error.load": "无法加载托管存储方案。",
|
||||
"photos.storage.managed.price.free": "包含在当前订阅内",
|
||||
"photos.storage.managed.price.label": "{{price}} / 月",
|
||||
"photos.storage.managed.provider": "托管服务提供方:{{provider}}",
|
||||
"photos.storage.managed.title": "托管存储",
|
||||
"photos.storage.managed.toast.error": "更新托管存储方案失败:{{reason}}",
|
||||
"photos.storage.managed.toast.success": "托管存储方案已更新。",
|
||||
"photos.storage.managed.unavailable": "托管存储尚未启用,请联系管理员。",
|
||||
"photos.sync.actions.button.apply": "同步照片",
|
||||
"photos.sync.actions.button.preview": "预览同步",
|
||||
"photos.sync.actions.toast.apply-success": "照片同步完成",
|
||||
@@ -715,11 +734,46 @@
|
||||
"superadmin.nav.settings": "系统设置",
|
||||
"superadmin.nav.tenants": "租户管理",
|
||||
"superadmin.plans.description": "管理各个订阅计划的资源配额、定价信息与 Creem Product 连接,仅超级管理员可编辑。",
|
||||
"superadmin.plans.storage.actions.add": "新增计划",
|
||||
"superadmin.plans.storage.actions.remove": "删除",
|
||||
"superadmin.plans.storage.actions.save": "保存存储计划",
|
||||
"superadmin.plans.storage.description": "直接编辑托管存储方案,无需填 JSON。每个租户仅一份存储计划,会与应用计划的赠送存储叠加。",
|
||||
"superadmin.plans.storage.empty": "还没有存储计划,请先新增一条。",
|
||||
"superadmin.plans.storage.error": "加载存储计划失败:{{reason}}",
|
||||
"superadmin.plans.storage.fields.active": "在前台展示该计划",
|
||||
"superadmin.plans.storage.fields.capacity": "容量 (GB)",
|
||||
"superadmin.plans.storage.fields.creem": "Creem 商品 ID",
|
||||
"superadmin.plans.storage.fields.currency": "币种",
|
||||
"superadmin.plans.storage.fields.description": "描述",
|
||||
"superadmin.plans.storage.fields.id": "计划 ID",
|
||||
"superadmin.plans.storage.fields.name": "展示名称",
|
||||
"superadmin.plans.storage.fields.placeholder.description": "适用人群与包含的内容",
|
||||
"superadmin.plans.storage.fields.placeholder.name": "托管 B2 · 5GB",
|
||||
"superadmin.plans.storage.fields.price": "月费",
|
||||
"superadmin.plans.storage.saved": "存储计划已更新",
|
||||
"superadmin.plans.storage.title": "存储计划",
|
||||
"superadmin.plans.storage.validation.block": "请先修复校验错误后再保存。",
|
||||
"superadmin.plans.storage.validation.capacity": "容量必须是数字(GB)。",
|
||||
"superadmin.plans.storage.validation.id": "计划 ID 必填。",
|
||||
"superadmin.plans.storage.validation.name": "展示名称必填。",
|
||||
"superadmin.plans.storage.validation.price": "价格必须是数字。",
|
||||
"superadmin.plans.tabs.app": "应用计划",
|
||||
"superadmin.plans.tabs.storage": "存储计划",
|
||||
"superadmin.plans.title": "订阅计划配置",
|
||||
"superadmin.settings.button.loading": "保存中...",
|
||||
"superadmin.settings.button.save": "保存修改",
|
||||
"superadmin.settings.description": "管理整个平台的注册策略与本地登录渠道,由超级管理员统一维护。",
|
||||
"superadmin.settings.error.loading": "无法加载超级管理员设置:{{reason}}",
|
||||
"superadmin.settings.managed-storage.actions.edit": "编辑",
|
||||
"superadmin.settings.managed-storage.actions.save": "保存托管 Provider",
|
||||
"superadmin.settings.managed-storage.actions.select": "设为托管",
|
||||
"superadmin.settings.managed-storage.actions.selected": "已选择",
|
||||
"superadmin.settings.managed-storage.current": "托管使用",
|
||||
"superadmin.settings.managed-storage.description": "配置用于内置托管存储的 Provider(例如 B2)。",
|
||||
"superadmin.settings.managed-storage.empty": "还没有存储提供商,请先新增。",
|
||||
"superadmin.settings.managed-storage.error": "加载存储提供商失败:{{reason}}",
|
||||
"superadmin.settings.managed-storage.title": "托管存储 Provider",
|
||||
"superadmin.settings.managed-storage.type": "类型:{{type}}",
|
||||
"superadmin.settings.message.dirty": "您有尚未保存的变更",
|
||||
"superadmin.settings.message.error": "保存失败:{{reason}}",
|
||||
"superadmin.settings.message.idle": "所有设置已同步",
|
||||
@@ -729,6 +783,8 @@
|
||||
"superadmin.settings.stats.remaining": "剩余可注册名额",
|
||||
"superadmin.settings.stats.total-users": "当前用户总数",
|
||||
"superadmin.settings.stats.unlimited": "不限",
|
||||
"superadmin.settings.tabs.general": "通用",
|
||||
"superadmin.settings.tabs.managed-storage": "托管存储",
|
||||
"superadmin.settings.title": "系统设置",
|
||||
"superadmin.tenants.button.ban": "封禁",
|
||||
"superadmin.tenants.button.processing": "处理中…",
|
||||
|
||||
Reference in New Issue
Block a user