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

📝 docs(story): add tenant base package creation and management story

- create story for tenant base package creation and management functionality
- define acceptance criteria for tenant module development
- outline tasks for copying merchant module and modifying to tenant module
- specify entity mapping from merchant to tenant
- design tenant context management approach
- detail testing requirements and standards
yourname пре 1 месец
родитељ
комит
35027daaeb
1 измењених фајлова са 130 додато и 0 уклоњено
  1. 130 0
      docs/stories/007.001.tenant-base-package-creation.md

+ 130 - 0
docs/stories/007.001.tenant-base-package-creation.md

@@ -0,0 +1,130 @@
+# Story 007.001: 租户基础包创建和租户管理
+
+## Status
+Draft
+
+## Story
+**As a** 系统管理员
+**I want** 创建租户基础包和租户管理功能
+**so that** 能够为多租户系统提供基础的租户管理和上下文支持
+
+## Acceptance Criteria
+1. 成功复制 `@d8d/merchant-module` 为 `@d8d/tenant-module-mt` 租户管理模块
+2. 修改商户实体为租户实体,调整字段和业务逻辑
+3. 实现租户管理API,包括租户的CRUD操作
+4. 创建租户上下文管理机制
+5. 验证租户管理功能正常工作
+6. 确保现有单租户系统功能完全不受影响
+
+## Tasks / Subtasks
+- [ ] 复制 `@d8d/merchant-module` 为 `@d8d/tenant-module-mt` (AC: 1)
+  - [ ] 创建新的包目录结构
+  - [ ] 复制并修改package.json配置
+  - [ ] 更新包名和描述信息
+- [ ] 修改商户实体为租户实体 (AC: 2)
+  - [ ] 重命名Merchant实体为TenantEntityMt
+  - [ ] 调整字段映射(商户名称→租户名称,用户名→租户代码等)
+  - [ ] 移除商户特定字段(登录统计、密码等)
+  - [ ] 添加租户特定字段(状态、配置等)
+- [ ] 实现租户管理API (AC: 3)
+  - [ ] 创建租户服务层,基于现有商户服务修改
+  - [ ] 实现租户CRUD路由
+  - [ ] 更新Schema定义
+  - [ ] 添加租户类型定义
+- [ ] 创建租户上下文管理 (AC: 4)
+  - [ ] 实现TenantContext类
+  - [ ] 添加AsyncLocalStorage支持
+  - [ ] 创建租户上下文中间件
+- [ ] 验证租户管理功能 (AC: 5)
+  - [ ] 编写API集成测试
+  - [ ] 验证租户数据隔离
+  - [ ] 验证现有单租户系统功能完整性 (AC: 6)
+
+## Dev Notes
+
+### 相关源树信息
+```
+packages/
+├── merchant-module/ (源包)
+│   ├── src/
+│   │   ├── entities/merchant.entity.ts
+│   │   ├── services/merchant.service.ts
+│   │   ├── routes/
+│   │   ├── schemas/
+│   │   └── types/
+│   └── package.json
+└── tenant-module-mt/ (目标包)
+    ├── src/
+    │   ├── entities/tenant.entity.ts
+    │   ├── services/tenant.service.ts
+    │   ├── routes/
+    │   ├── schemas/
+    │   └── types/
+    └── package.json
+```
+
+### 技术上下文
+- **现有系统**: TypeScript + Node.js + TypeORM + Hono
+- **数据库**: PostgreSQL
+- **包管理**: pnpm workspace
+- **架构模式**: 模块化架构,CRUD操作,认证中间件
+
+### 实体映射关系
+从商户实体到租户实体的字段映射:
+- `name` (商户名称) → `name` (租户名称)
+- `username` (用户名) → `code` (租户代码,唯一标识)
+- 移除:`password`, `loginNum`, `loginTime`, `loginIp`, `lastLoginTime`, `lastLoginIp`
+- 添加:`status` (租户状态), `config` (租户配置)
+
+### 租户上下文设计
+```typescript
+export class TenantContext {
+  private static readonly tenantIdStorage = new AsyncLocalStorage<number>();
+
+  static getCurrentTenantId(): number | undefined {
+    return this.tenantIdStorage.getStore();
+  }
+
+  static runWithTenant<T>(tenantId: number, fn: () => Promise<T>): Promise<T> {
+    return this.tenantIdStorage.run(tenantId, fn);
+  }
+}
+```
+
+### 依赖关系
+- 共享包依赖:`@d8d/shared-crud`, `@d8d/shared-types`, `@d8d/shared-utils`
+- 不依赖其他业务包,避免循环依赖
+- 保持与单租户系统相同的技术栈和架构模式
+
+### 测试
+#### 测试标准
+- **测试文件位置**: `tests/` 目录下
+- **测试框架**: Vitest
+- **测试模式**: API集成测试
+- **测试覆盖**: 租户管理API接口
+
+#### 具体测试要求
+- 租户CRUD操作API测试
+- 租户上下文管理集成测试
+- 租户数据隔离验证
+- 现有单租户系统回归测试
+
+## Change Log
+| Date | Version | Description | Author |
+|------|---------|-------------|---------|
+| 2025-11-13 | 1.0 | 初始故事创建 | Claude |
+
+## Dev Agent Record
+*此部分将由开发代理在实施过程中填写*
+
+### Agent Model Used
+{{agent_model_name_version}}
+
+### Debug Log References
+
+### Completion Notes List
+
+### File List
+
+## QA Results
+*此部分将由QA代理在QA审查后填写*