|
@@ -9,6 +9,7 @@
|
|
|
### Existing System Context
|
|
### Existing System Context
|
|
|
|
|
|
|
|
**Current relevant functionality:**
|
|
**Current relevant functionality:**
|
|
|
|
|
+- **共享CRUD包**已提供完整的多租户支持,包括租户隔离、用户跟踪、数据权限
|
|
|
- 文件模块已实现完整的CRUD路由、实体和Schema模式
|
|
- 文件模块已实现完整的CRUD路由、实体和Schema模式
|
|
|
- 认证模块已实现小程序登录和手机号解密功能
|
|
- 认证模块已实现小程序登录和手机号解密功能
|
|
|
- 支付模块已实现微信小程序支付功能
|
|
- 支付模块已实现微信小程序支付功能
|
|
@@ -20,24 +21,25 @@
|
|
|
- Hono + Zod OpenAPI (API框架)
|
|
- Hono + Zod OpenAPI (API框架)
|
|
|
- Redis (缓存)
|
|
- Redis (缓存)
|
|
|
- 微信小程序SDK (认证和支付)
|
|
- 微信小程序SDK (认证和支付)
|
|
|
|
|
+- @d8d/shared-crud (共享CRUD工具包)
|
|
|
|
|
|
|
|
**Integration points:**
|
|
**Integration points:**
|
|
|
|
|
+- 共享CRUD包的GenericCrudService和createCrudRoutes
|
|
|
- 认证模块的MiniAuthService (小程序登录)
|
|
- 认证模块的MiniAuthService (小程序登录)
|
|
|
- 支付模块的PaymentService (小程序支付)
|
|
- 支付模块的PaymentService (小程序支付)
|
|
|
-- 文件模块的CRUD模式 (系统配置实体)
|
|
|
|
|
- Redis缓存工具 (配置缓存)
|
|
- Redis缓存工具 (配置缓存)
|
|
|
|
|
|
|
|
### Enhancement Details
|
|
### Enhancement Details
|
|
|
|
|
|
|
|
**What's being added/changed:**
|
|
**What's being added/changed:**
|
|
|
-- 创建系统配置多租户模块包,包含实体、Schema、服务和路由
|
|
|
|
|
-- 实现基于租户ID的系统配置管理,支持key-value存储
|
|
|
|
|
|
|
+- 创建系统配置多租户模块包,包含实体、Schema定义
|
|
|
|
|
+- **复用共享CRUD包**自动获得多租户隔离、用户跟踪、完整CRUD API
|
|
|
- 添加Redis缓存支持,提高配置访问性能
|
|
- 添加Redis缓存支持,提高配置访问性能
|
|
|
- 创建系统配置UI包,集成到web admin管理后台
|
|
- 创建系统配置UI包,集成到web admin管理后台
|
|
|
- 修改认证和支付模块,使用系统配置获取租户相关参数
|
|
- 修改认证和支付模块,使用系统配置获取租户相关参数
|
|
|
|
|
|
|
|
**How it integrates:**
|
|
**How it integrates:**
|
|
|
-- 遵循文件模块的CRUD模式创建系统配置模块
|
|
|
|
|
|
|
+- **直接复用共享CRUD包**的GenericCrudService和createCrudRoutes
|
|
|
- 使用Redis缓存系统配置,减少数据库访问
|
|
- 使用Redis缓存系统配置,减少数据库访问
|
|
|
- 在认证和支付服务中通过租户ID获取配置
|
|
- 在认证和支付服务中通过租户ID获取配置
|
|
|
- 在管理后台提供系统配置管理界面
|
|
- 在管理后台提供系统配置管理界面
|
|
@@ -50,8 +52,8 @@
|
|
|
|
|
|
|
|
## Stories
|
|
## Stories
|
|
|
|
|
|
|
|
-1. **Story 1:** 创建系统配置多租户模块包 - 实现系统配置实体、Schema、服务和基础CRUD路由
|
|
|
|
|
-2. **Story 2:** 实现系统配置Redis缓存和租户隔离 - 添加Redis缓存支持,实现租户ID隔离的配置管理
|
|
|
|
|
|
|
+1. **Story 1:** 创建系统配置多租户模块包 - 实现系统配置实体、Schema定义,复用共享CRUD包自动获得完整CRUD功能
|
|
|
|
|
+2. **Story 2:** 实现系统配置Redis缓存 - 添加Redis缓存支持,优化配置访问性能
|
|
|
3. **Story 3:** 集成系统配置到认证和支付模块 - 修改小程序登录和支付功能使用系统配置
|
|
3. **Story 3:** 集成系统配置到认证和支付模块 - 修改小程序登录和支付功能使用系统配置
|
|
|
4. **Story 4:** 创建系统配置UI包并集成到管理后台 - 开发系统配置管理界面
|
|
4. **Story 4:** 创建系统配置UI包并集成到管理后台 - 开发系统配置管理界面
|
|
|
|
|
|
|
@@ -88,7 +90,7 @@ export class SystemConfig {
|
|
|
id!: number;
|
|
id!: number;
|
|
|
|
|
|
|
|
@Column()
|
|
@Column()
|
|
|
- tenantId!: number;
|
|
|
|
|
|
|
+ tenantId!: number; // 自动通过共享CRUD的tenantOptions设置
|
|
|
|
|
|
|
|
@Column()
|
|
@Column()
|
|
|
configKey!: string;
|
|
configKey!: string;
|
|
@@ -99,6 +101,13 @@ export class SystemConfig {
|
|
|
@Column()
|
|
@Column()
|
|
|
description?: string;
|
|
description?: string;
|
|
|
|
|
|
|
|
|
|
+ // 自动通过共享CRUD的userTracking设置
|
|
|
|
|
+ @Column()
|
|
|
|
|
+ createdBy?: number;
|
|
|
|
|
+
|
|
|
|
|
+ @Column()
|
|
|
|
|
+ updatedBy?: number;
|
|
|
|
|
+
|
|
|
@Column()
|
|
@Column()
|
|
|
createdAt!: Date;
|
|
createdAt!: Date;
|
|
|
|
|
|
|
@@ -107,6 +116,32 @@ export class SystemConfig {
|
|
|
}
|
|
}
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
|
+### 共享CRUD集成(核心简化)
|
|
|
|
|
+```typescript
|
|
|
|
|
+// 服务实现 - 复用GenericCrudService
|
|
|
|
|
+const systemConfigService = new GenericCrudService(dataSource, SystemConfig, {
|
|
|
|
|
+ tenantOptions: {
|
|
|
|
|
+ enabled: true,
|
|
|
|
|
+ tenantIdField: 'tenantId',
|
|
|
|
|
+ autoExtractFromContext: true
|
|
|
|
|
+ },
|
|
|
|
|
+ userTracking: {
|
|
|
|
|
+ createdByField: 'createdBy',
|
|
|
|
|
+ updatedByField: 'updatedBy'
|
|
|
|
|
+ }
|
|
|
|
|
+});
|
|
|
|
|
+
|
|
|
|
|
+// 路由生成 - 一行代码获得完整CRUD API
|
|
|
|
|
+const systemConfigRoutes = createCrudRoutes({
|
|
|
|
|
+ entity: SystemConfig,
|
|
|
|
|
+ createSchema: CreateSystemConfigSchema,
|
|
|
|
|
+ updateSchema: UpdateSystemConfigSchema,
|
|
|
|
|
+ getSchema: SystemConfigSchema,
|
|
|
|
|
+ listSchema: SystemConfigSchema,
|
|
|
|
|
+ tenantOptions: { enabled: true }
|
|
|
|
|
+});
|
|
|
|
|
+```
|
|
|
|
|
+
|
|
|
### Redis缓存策略
|
|
### Redis缓存策略
|
|
|
- 缓存键格式: `system_config:{tenantId}:{configKey}`
|
|
- 缓存键格式: `system_config:{tenantId}:{configKey}`
|
|
|
- 默认TTL: 1小时
|
|
- 默认TTL: 1小时
|
|
@@ -148,9 +183,10 @@ export class SystemConfig {
|
|
|
|
|
|
|
|
"请为这个棕地史诗开发详细的用户故事。关键考虑因素:
|
|
"请为这个棕地史诗开发详细的用户故事。关键考虑因素:
|
|
|
|
|
|
|
|
-- 这是对运行TypeORM + PostgreSQL + Hono + Redis的现有系统的增强
|
|
|
|
|
-- 集成点:认证模块的MiniAuthService、支付模块的PaymentService、Redis缓存
|
|
|
|
|
-- 要遵循的现有模式:文件模块的CRUD模式、多租户实体模式
|
|
|
|
|
|
|
+- 这是对运行TypeORM + PostgreSQL + Hono + Redis + @d8d/shared-crud的现有系统的增强
|
|
|
|
|
+- **核心简化**: 直接复用共享CRUD包,自动获得多租户隔离、用户跟踪、完整CRUD API
|
|
|
|
|
+- 集成点:共享CRUD包的GenericCrudService和createCrudRoutes、认证模块的MiniAuthService、支付模块的PaymentService、Redis缓存
|
|
|
|
|
+- 要遵循的现有模式:共享CRUD包的通用模式、文件模块的CRUD模式、多租户实体模式
|
|
|
- 关键兼容性要求:现有API保持不变,数据库schema向后兼容
|
|
- 关键兼容性要求:现有API保持不变,数据库schema向后兼容
|
|
|
- 每个故事必须包括验证现有功能保持完整的验证
|
|
- 每个故事必须包括验证现有功能保持完整的验证
|
|
|
|
|
|