merge: 集成V2.6 性能增强与小宝后台化

# Conflicts:
#	apps/server/prisma/schema.prisma
#	apps/server/src/app.module.ts
#	apps/web/components/layout/Sidebar.tsx
#	docs/architecture.md
#	docs/decisions.md
#	docs/roadmap.md
This commit is contained in:
2026-07-08 18:04:39 +08:00
60 changed files with 4933 additions and 46 deletions

View File

@@ -1,12 +1,16 @@
import { Module } from '@nestjs/common';
import { PrismaService } from '../../prisma/prisma.service';
import { WorkActivityModule } from '../work-activity/work-activity.module';
import { DevTaskController } from './dev-task.controller';
import { DevTaskService } from './dev-task.service';
import { DEV_TASK_PRISMA, DevTaskService } from './dev-task.service';
@Module({
imports: [WorkActivityModule],
controllers: [DevTaskController],
providers: [DevTaskService],
providers: [
{ provide: DEV_TASK_PRISMA, useExisting: PrismaService },
DevTaskService,
],
exports: [DevTaskService],
})
export class DevTaskModule {}

View File

@@ -1,14 +1,14 @@
import { BadRequestException, Injectable, NotFoundException } from '@nestjs/common';
import type { Prisma } from '@prisma/client';
import { PrismaService } from '../../prisma/prisma.service';
import { BadRequestException, Inject, Injectable, NotFoundException } from '@nestjs/common';
import { WorkActivityService } from '../work-activity/work-activity.service';
import { CreateDevTaskDto } from './dto/create-dev-task.dto';
import { UpdateDevTaskDto } from './dto/update-dev-task.dto';
export const DEV_TASK_PRISMA = 'DEV_TASK_PRISMA';
@Injectable()
export class DevTaskService {
constructor(
private readonly prisma: PrismaService,
@Inject(DEV_TASK_PRISMA) private readonly prisma: any,
private readonly workActivity: WorkActivityService,
) {}
@@ -46,6 +46,7 @@ export class DevTaskService {
where: { id_versionId: { id, versionId } },
data: this.toTaskData(dto),
});
await this.workActivity.markXiaobaoSummaryDirty(versionId);
return { item, activities: [] };
}
@@ -99,7 +100,9 @@ export class DevTaskService {
async remove(versionId: string, id: string) {
await this.ensureTaskInVersion(versionId, id);
return this.prisma.devTask.delete({ where: { id_versionId: { id, versionId } } });
const item = await this.prisma.devTask.delete({ where: { id_versionId: { id, versionId } } });
await this.workActivity.markXiaobaoSummaryDirty(versionId);
return item;
}
private toTaskData(dto: Partial<CreateDevTaskDto>) {
@@ -200,6 +203,6 @@ function parsePriority(value: string | number | null | undefined): number | unde
return Number.isFinite(parsed) ? Math.max(0, Math.min(4, Math.floor(parsed))) : undefined;
}
function toJsonInput(value: unknown): Prisma.InputJsonValue {
return value as Prisma.InputJsonValue;
function toJsonInput(value: unknown): any {
return value as any;
}