forked from datawhale/whale-town-end
CRITICAL ISSUES: Database management service with major problems
WARNING: This commit contains code with significant issues that need immediate attention: 1. Type Safety Issues: - Unused import ZulipAccountsService causing compilation warnings - Implicit 'any' type in formatZulipAccount method parameter - Type inconsistencies in service injections 2. Service Integration Problems: - Inconsistent service interface usage - Missing proper type definitions for injected services - Potential runtime errors due to type mismatches 3. Code Quality Issues: - Violation of TypeScript strict mode requirements - Inconsistent error handling patterns - Missing proper interface implementations Files affected: - src/business/admin/database_management.service.ts (main issue) - Multiple test files and service implementations - Configuration and documentation updates Next steps required: 1. Fix TypeScript compilation errors 2. Implement proper type safety 3. Resolve service injection inconsistencies 4. Add comprehensive error handling 5. Update tests to match new implementations Impact: High - affects admin functionality and system stability Priority: Urgent - requires immediate review and fixes Author: moyin Date: 2026-01-10
This commit is contained in:
@@ -64,7 +64,11 @@
|
||||
- **AI标识替换**:只有AI标识(kiro、ChatGPT、Claude、AI等)才可替换为用户名称
|
||||
- **判断示例**:`@author kiro` → 可替换,`@author 张三` → 必须保留
|
||||
- **版本号递增**:规范优化/Bug修复→修订版本+1,功能变更→次版本+1,重构→主版本+1
|
||||
- **时间更新**:只有真正修改了文件内容时才更新@lastModified字段,仅检查不修改内容时不更新日期
|
||||
- **时间更新规则**:
|
||||
- **仅检查不修改**:如果只是进行代码检查而没有实际修改文件内容,不更新@lastModified字段
|
||||
- **实际修改才更新**:只有真正修改了文件内容(功能代码、注释内容、结构调整等)时才更新@lastModified字段
|
||||
- **检查规范强调**:注释规范检查本身不是修改,除非发现需要修正的问题并进行了实际修改
|
||||
- **Git变更检测**:通过git status和git diff检查文件是否有实际变更,只有git显示文件被修改时才需要添加修改记录和更新时间戳
|
||||
|
||||
### 步骤3:代码质量检查
|
||||
- **清理未使用**:导入、变量、方法
|
||||
@@ -98,11 +102,22 @@
|
||||
- ❌ **DTO类**:数据传输对象不需要测试文件
|
||||
- ❌ **Interface文件**:接口定义不需要测试文件
|
||||
- ❌ **Utils工具类**:简单工具函数不需要测试文件(复杂工具类需要)
|
||||
- **测试代码检查严格要求**:
|
||||
- **一对一映射**:每个测试文件必须严格对应一个源文件,不允许一个测试文件测试多个源文件
|
||||
- **测试范围限制**:测试内容必须严格限于对应源文件的功能测试,不允许跨文件测试
|
||||
- **集成测试分离**:所有集成测试、E2E测试、性能测试必须移动到顶层test/目录的对应子文件夹
|
||||
- **测试文件命名**:测试文件名必须与源文件名完全对应(除.spec.ts后缀外)
|
||||
- **禁止混合测试**:单元测试文件中不允许包含集成测试或E2E测试代码
|
||||
- **顶层test目录结构**:
|
||||
- `test/integration/` - 所有集成测试文件
|
||||
- `test/e2e/` - 所有端到端测试文件
|
||||
- `test/performance/` - 所有性能测试文件
|
||||
- `test/property/` - 所有属性测试文件(管理员模块)
|
||||
- **实时通信测试**:WebSocket Gateway必须有连接、断开、消息处理的完整测试
|
||||
- **双模式测试**:内存服务和数据库服务都需要完整测试覆盖
|
||||
- **属性测试应用**:管理员模块使用fast-check进行属性测试
|
||||
- **集成测试要求**:复杂Service需要.integration.spec.ts
|
||||
- **E2E测试要求**:关键业务流程需要端到端测试
|
||||
- **属性测试应用**:管理员模块使用fast-check进行属性测试,放在test/property/目录
|
||||
- **集成测试要求**:复杂Service的集成测试放在test/integration/目录
|
||||
- **E2E测试要求**:关键业务流程的端到端测试放在test/e2e/目录
|
||||
- **测试执行**:必须执行测试命令验证通过
|
||||
|
||||
### 步骤6:功能文档生成
|
||||
@@ -206,8 +221,9 @@ export class LocationBroadcastService {
|
||||
|
||||
### 测试覆盖
|
||||
```typescript
|
||||
// 游戏服务器测试示例
|
||||
// 游戏服务器测试示例 - 严格一对一映射
|
||||
describe('LocationBroadcastGateway', () => {
|
||||
// 只测试LocationBroadcastGateway的功能,不测试其他类
|
||||
describe('handleConnection', () => {
|
||||
it('should accept valid WebSocket connection', () => {}); // 正常情况
|
||||
it('should reject unauthorized connection', () => {}); // 异常情况
|
||||
@@ -220,12 +236,29 @@ describe('LocationBroadcastGateway', () => {
|
||||
});
|
||||
});
|
||||
|
||||
// 双模式服务测试
|
||||
describe('UsersService vs UsersMemoryService', () => {
|
||||
it('should have identical behavior in both modes', () => {}); // 一致性测试
|
||||
// ❌ 错误:在单元测试中包含集成测试代码
|
||||
describe('LocationBroadcastGateway', () => {
|
||||
it('should integrate with database and redis', () => {}); // 应该移到test/integration/
|
||||
});
|
||||
|
||||
// 属性测试示例(管理员模块)
|
||||
// ✅ 正确:集成测试放在顶层test目录
|
||||
// 文件位置:test/integration/location_broadcast_integration.spec.ts
|
||||
describe('LocationBroadcast Integration', () => {
|
||||
it('should integrate gateway with core service and database', () => {
|
||||
// 测试多个模块间的集成
|
||||
});
|
||||
});
|
||||
|
||||
// ✅ 正确:E2E测试放在顶层test目录
|
||||
// 文件位置:test/e2e/location_broadcast_e2e.spec.ts
|
||||
describe('LocationBroadcast E2E', () => {
|
||||
it('should handle complete user position update flow', () => {
|
||||
// 端到端业务流程测试
|
||||
});
|
||||
});
|
||||
|
||||
// ✅ 正确:属性测试放在顶层test目录
|
||||
// 文件位置:test/property/admin_property.spec.ts
|
||||
describe('AdminService Properties', () => {
|
||||
it('should handle any valid user status update',
|
||||
fc.property(fc.integer(), fc.constantFrom(...Object.values(UserStatus)),
|
||||
@@ -234,6 +267,14 @@ describe('AdminService Properties', () => {
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
// ✅ 正确:性能测试放在顶层test目录
|
||||
// 文件位置:test/performance/websocket_performance.spec.ts
|
||||
describe('WebSocket Performance', () => {
|
||||
it('should handle 1000 concurrent connections', () => {
|
||||
// 性能测试逻辑
|
||||
});
|
||||
});
|
||||
```
|
||||
|
||||
### API文档规范
|
||||
@@ -301,4 +342,5 @@ describe('AdminService Properties', () => {
|
||||
- **日期使用**:所有日期字段使用用户提供的真实日期
|
||||
- **作者字段保护**:@author字段中的人名不得修改,只有AI标识才可替换
|
||||
- **修改记录强制**:每次修改文件必须添加修改记录和更新@lastModified
|
||||
- **API文档强制**:business模块如开放API接口,README中必须列出所有API并用一句话解释功能
|
||||
- **API文档强制**:business模块如开放API接口,README中必须列出所有API并用一句话解释功能
|
||||
- **测试代码严格要求**:每个测试文件必须严格对应一个源文件,集成测试等必须移动到顶层test/目录统一管理
|
||||
Reference in New Issue
Block a user