|
|
@@ -22,47 +22,71 @@ Draft
|
|
|
- [ ] 创建`allin-packages/channel-module`目录结构 (AC: 1)
|
|
|
- [ ] 创建`allin-packages/channel-module/`目录
|
|
|
- [ ] 创建`package.json`文件,配置包名`@d8d/allin-channel-module`和workspace依赖
|
|
|
+ - **参考文件**: `packages/advertisements-module/package.json`
|
|
|
+ - **修改点**: 包名改为`@d8d/allin-channel-module`,依赖调整
|
|
|
- [ ] 创建`tsconfig.json`文件,配置TypeScript编译选项
|
|
|
+ - **参考文件**: `packages/advertisements-module/tsconfig.json`
|
|
|
- [ ] 创建`vitest.config.ts`文件,配置测试环境
|
|
|
+ - **参考文件**: `packages/advertisements-module/vitest.config.ts`
|
|
|
- [ ] 创建`src/`目录结构:`entities/`, `services/`, `routes/`, `schemas/`, `types/`
|
|
|
+ - **参考结构**: `packages/advertisements-module/src/`目录结构
|
|
|
- [ ] 完成实体转换:`Channel`实体从下划线命名转换为驼峰命名 (AC: 2)
|
|
|
- [ ] 分析源实体`allin_system-master/server/src/channel_info/channel.entity.ts`
|
|
|
+ - **源文件**: `allin_system-master/server/src/channel_info/channel.entity.ts`
|
|
|
- [ ] 创建转换后的实体文件`src/entities/channel.entity.ts`
|
|
|
+ - **参考文件**: `packages/advertisements-module/src/entities/advertisement.entity.ts`
|
|
|
+ - **转换要点**: 下划线命名 → 驼峰命名,添加详细TypeORM配置
|
|
|
- [ ] 将下划线字段名转换为驼峰命名:`channel_id` → `channelId`, `channel_name` → `channelName`等
|
|
|
- [ ] 添加详细的TypeORM装饰器配置:`@Column({ name: 'channel_name', type: 'varchar', length: 100 })`
|
|
|
- [ ] 保持数据库表名不变:`@Entity('channel_info')`
|
|
|
- [ ] 添加必要的索引和约束配置
|
|
|
- [ ] 完成服务层转换:从NestJS自定义Service转换为GenericCrudService继承 (AC: 3)
|
|
|
- [ ] 分析源服务`allin_system-master/server/src/channel_info/channel.service.ts`
|
|
|
+ - **源文件**: `allin_system-master/server/src/channel_info/channel.service.ts`
|
|
|
- [ ] 创建转换后的服务文件`src/services/channel.service.ts`
|
|
|
+ - **参考文件**: `packages/advertisements-module/src/services/advertisement.service.ts`
|
|
|
+ - **架构**: 继承`GenericCrudService<Channel>`
|
|
|
- [ ] 继承`GenericCrudService<Channel>`,配置搜索字段
|
|
|
+ - **参考**: `packages/shared-crud/src/services/generic-crud.service.ts`
|
|
|
- [ ] 转换自定义业务方法:`createChannel`, `deleteChannel`, `updateChannel`, `searchByName`
|
|
|
+ - **业务逻辑**: 保持源服务中的重复检查、分页查询等逻辑
|
|
|
- [ ] 保持原有业务逻辑,适配新的服务架构
|
|
|
- [ ] 添加错误处理和日志记录
|
|
|
- [ ] 完成路由层转换:从NestJS控制器转换为Hono路由 (AC: 4)
|
|
|
- [ ] 分析源控制器`allin_system-master/server/src/channel_info/channel.controller.ts`
|
|
|
+ - **源文件**: `allin_system-master/server/src/channel_info/channel.controller.ts`
|
|
|
- [ ] 创建转换后的路由文件`src/routes/channel.routes.ts`
|
|
|
+ - **参考文件**: `packages/advertisements-module/src/routes/advertisements.ts`
|
|
|
+ - **架构**: 使用`OpenAPIHono`创建路由
|
|
|
- [ ] 使用`OpenAPIHono`创建路由实例
|
|
|
- [ ] 转换所有端点:`createChannel`, `deleteChannel`, `updateChannel`, `getAllChannels`, `searchChannels`, `getChannel`
|
|
|
+ - **端点映射**: 保持相同的功能,适配Hono路由语法
|
|
|
- [ ] 添加认证中间件集成
|
|
|
+ - **参考**: `packages/auth-module/src/middleware/auth.middleware.ts`
|
|
|
- [ ] 配置OpenAPI文档和参数验证
|
|
|
- [ ] 完成验证系统转换:从class-validator DTO转换为Zod Schema (AC: 5)
|
|
|
- [ ] 分析源DTO`allin_system-master/server/src/channel_info/channel.dto.ts`
|
|
|
+ - **源文件**: `allin_system-master/server/src/channel_info/channel.dto.ts`
|
|
|
- [ ] 创建转换后的Schema文件`src/schemas/channel.schema.ts`
|
|
|
+ - **参考文件**: `packages/advertisements-module/src/schemas/advertisement.schema.ts`
|
|
|
- [ ] 使用`z.object()`定义`CreateChannelSchema`, `UpdateChannelSchema`, `DeleteChannelSchema`
|
|
|
- [ ] 添加详细的验证规则:字符串长度、必填字段、可选字段
|
|
|
- [ ] 创建对应的TypeScript类型定义
|
|
|
- [ ] 配置package.json:使用`@d8d/allin-channel-module`包名,workspace依赖 (AC: 6)
|
|
|
- [ ] 配置`package.json`中的`name`字段为`@d8d/allin-channel-module`
|
|
|
+ - **参考文件**: `packages/advertisements-module/package.json`
|
|
|
- [ ] 设置`type: "module"`和主入口`src/index.ts`
|
|
|
- [ ] 添加workspace依赖:`@d8d/core-module`, `@d8d/shared-crud`, `@d8d/shared-utils`
|
|
|
- [ ] 添加外部依赖:`@hono/zod-openapi`, `typeorm`, `zod`
|
|
|
- [ ] 配置导出路径:`services`, `schemas`, `routes`, `entities`
|
|
|
- [ ] 编写API集成测试:覆盖所有路由端点,验证CRUD操作 (AC: 7)
|
|
|
- [ ] 创建测试文件`tests/integration/channel.integration.test.ts`
|
|
|
+ - **参考文件**: `packages/advertisements-module/tests/integration/advertisements.integration.test.ts`
|
|
|
- [ ] 参考`advertisements-module`的集成测试模式
|
|
|
+ - **测试模式**: 使用`testClient`, `setupIntegrationDatabaseHooksWithEntities`
|
|
|
- [ ] 使用`testClient`创建测试客户端
|
|
|
- [ ] 使用`setupIntegrationDatabaseHooksWithEntities`设置测试数据库
|
|
|
+ - **工具**: `@d8d/shared-test-util`中的测试基础设施
|
|
|
- [ ] 编写测试用例覆盖所有端点:创建、查询、更新、删除、搜索
|
|
|
- [ ] 添加认证测试、数据验证测试、错误处理测试
|
|
|
- [ ] 包含边界条件和异常场景测试
|
|
|
@@ -71,6 +95,7 @@ Draft
|
|
|
- [ ] 运行`pnpm test`确保所有测试通过
|
|
|
- [ ] 运行`pnpm test:integration`验证集成测试
|
|
|
- [ ] 检查测试覆盖率是否满足要求
|
|
|
+ - **标准**: 集成测试 ≥ 60% [Source: architecture/testing-strategy.md#测试覆盖率标准]
|
|
|
- [ ] 验证模块可以正确导入和使用
|
|
|
|
|
|
## Dev Notes
|
|
|
@@ -123,12 +148,24 @@ Draft
|
|
|
|
|
|
### 文件位置
|
|
|
- **包目录**:`allin-packages/channel-module/` (根据史诗007的目录结构决策)
|
|
|
-- **实体文件**:`src/entities/channel.entity.ts`
|
|
|
-- **服务文件**:`src/services/channel.service.ts`
|
|
|
-- **路由文件**:`src/routes/channel.routes.ts`
|
|
|
-- **Schema文件**:`src/schemas/channel.schema.ts`
|
|
|
-- **测试文件**:`tests/integration/channel.integration.test.ts`
|
|
|
-- **包配置**:`package.json`, `tsconfig.json`, `vitest.config.ts`
|
|
|
+- **源文件位置**:
|
|
|
+ - **实体源文件**: `allin_system-master/server/src/channel_info/channel.entity.ts`
|
|
|
+ - **服务源文件**: `allin_system-master/server/src/channel_info/channel.service.ts`
|
|
|
+ - **控制器源文件**: `allin_system-master/server/src/channel_info/channel.controller.ts`
|
|
|
+ - **DTO源文件**: `allin_system-master/server/src/channel_info/channel.dto.ts`
|
|
|
+- **目标文件位置**:
|
|
|
+ - **实体文件**: `src/entities/channel.entity.ts`
|
|
|
+ - **参考文件**: `packages/advertisements-module/src/entities/advertisement.entity.ts`
|
|
|
+ - **服务文件**: `src/services/channel.service.ts`
|
|
|
+ - **参考文件**: `packages/advertisements-module/src/services/advertisement.service.ts`
|
|
|
+ - **路由文件**: `src/routes/channel.routes.ts`
|
|
|
+ - **参考文件**: `packages/advertisements-module/src/routes/advertisements.ts`
|
|
|
+ - **Schema文件**: `src/schemas/channel.schema.ts`
|
|
|
+ - **参考文件**: `packages/advertisements-module/src/schemas/advertisement.schema.ts`
|
|
|
+ - **测试文件**: `tests/integration/channel.integration.test.ts`
|
|
|
+ - **参考文件**: `packages/advertisements-module/tests/integration/advertisements.integration.test.ts`
|
|
|
+ - **包配置**: `package.json`, `tsconfig.json`, `vitest.config.ts`
|
|
|
+ - **参考文件**: `packages/advertisements-module/`中的对应配置文件
|
|
|
|
|
|
### 测试要求
|
|
|
- **测试框架**:Vitest [Source: architecture/testing-strategy.md#单元测试]
|