Преглед изворни кода

📋 docs: 更新史诗010 - 基于共享CRUD简化方案

更新史诗010文档,反映基于共享CRUD包的简化实现方案:
- 复用GenericCrudService自动获得多租户隔离和用户跟踪
- 使用createCrudRoutes一行代码生成完整CRUD API
- 简化故事范围,移除重复的租户隔离实现
- 更新技术实现细节和集成点说明

🤖 Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
yourname пре 1 месец
родитељ
комит
77c27f643c
1 измењених фајлова са 46 додато и 10 уклоњено
  1. 46 10
      docs/epic-010-system-config-multi-tenant.md

+ 46 - 10
docs/epic-010-system-config-multi-tenant.md

@@ -9,6 +9,7 @@
 ### Existing System Context
 
 **Current relevant functionality:**
+- **共享CRUD包**已提供完整的多租户支持,包括租户隔离、用户跟踪、数据权限
 - 文件模块已实现完整的CRUD路由、实体和Schema模式
 - 认证模块已实现小程序登录和手机号解密功能
 - 支付模块已实现微信小程序支付功能
@@ -20,24 +21,25 @@
 - Hono + Zod OpenAPI (API框架)
 - Redis (缓存)
 - 微信小程序SDK (认证和支付)
+- @d8d/shared-crud (共享CRUD工具包)
 
 **Integration points:**
+- 共享CRUD包的GenericCrudService和createCrudRoutes
 - 认证模块的MiniAuthService (小程序登录)
 - 支付模块的PaymentService (小程序支付)
-- 文件模块的CRUD模式 (系统配置实体)
 - Redis缓存工具 (配置缓存)
 
 ### Enhancement Details
 
 **What's being added/changed:**
-- 创建系统配置多租户模块包,包含实体、Schema、服务和路由
-- 实现基于租户ID的系统配置管理,支持key-value存储
+- 创建系统配置多租户模块包,包含实体、Schema定义
+- **复用共享CRUD包**自动获得多租户隔离、用户跟踪、完整CRUD API
 - 添加Redis缓存支持,提高配置访问性能
 - 创建系统配置UI包,集成到web admin管理后台
 - 修改认证和支付模块,使用系统配置获取租户相关参数
 
 **How it integrates:**
-- 遵循文件模块的CRUD模式创建系统配置模块
+- **直接复用共享CRUD包**的GenericCrudService和createCrudRoutes
 - 使用Redis缓存系统配置,减少数据库访问
 - 在认证和支付服务中通过租户ID获取配置
 - 在管理后台提供系统配置管理界面
@@ -50,8 +52,8 @@
 
 ## 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:** 集成系统配置到认证和支付模块 - 修改小程序登录和支付功能使用系统配置
 4. **Story 4:** 创建系统配置UI包并集成到管理后台 - 开发系统配置管理界面
 
@@ -88,7 +90,7 @@ export class SystemConfig {
   id!: number;
 
   @Column()
-  tenantId!: number;
+  tenantId!: number;  // 自动通过共享CRUD的tenantOptions设置
 
   @Column()
   configKey!: string;
@@ -99,6 +101,13 @@ export class SystemConfig {
   @Column()
   description?: string;
 
+  // 自动通过共享CRUD的userTracking设置
+  @Column()
+  createdBy?: number;
+
+  @Column()
+  updatedBy?: number;
+
   @Column()
   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缓存策略
 - 缓存键格式: `system_config:{tenantId}:{configKey}`
 - 默认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向后兼容
 - 每个故事必须包括验证现有功能保持完整的验证