refactor(architecture): harden module boundaries
Some checks failed
ci / release-gate (push) Has been cancelled

This commit is contained in:
2026-08-04 12:10:36 +08:00
parent b38f12e60b
commit 33375a38d7
218 changed files with 5124 additions and 3828 deletions

View File

@@ -17,7 +17,7 @@ internal sealed class HandbookManagementService(DirectContentServiceDependencies
{
var scope = await RequireDataScopeAsync(actor, cancellationToken);
var regionIds = scope.RegionIds.ToArray();
var query = dbContext.HandbookSubjects.AsNoTracking()
var query = contentAssetPersistence.HandbookSubjects.AsNoTracking()
.Where(item => item.TenantId == actor.TenantId)
.ApplyDataScope(scope, null, item => item.RegionId.HasValue && regionIds.Contains(item.RegionId.Value));
if (filter.RegionId.HasValue) query = query.Where(item => item.RegionId == filter.RegionId.Value);
@@ -62,7 +62,7 @@ internal sealed class HandbookManagementService(DirectContentServiceDependencies
await AssertReferenceAsync<ContentNode>(actor.TenantId, command.ContentNodeId, "node_not_found",
cancellationToken);
var item = await ResolveByIdOrLegacyAsync(dbContext.HandbookSubjects, actor.TenantId, command.Id,
var item = await ResolveByIdOrLegacyAsync(contentAssetPersistence.HandbookSubjects, actor.TenantId, command.Id,
command.LegacyId, cancellationToken);
var isNew = item is null;
EnsureRegionWriteAllowed(scope, actor, item?.RegionId, command.RegionId, isNew, "handbook_subject_not_found");
@@ -81,9 +81,9 @@ internal sealed class HandbookManagementService(DirectContentServiceDependencies
item.SortOrder = command.Order ?? item.SortOrder;
item.IsActive = command.IsActive ?? item.IsActive;
item.Metadata = JsonObjectOrDefault(command.Metadata);
if (isNew) dbContext.HandbookSubjects.Add(item);
if (isNew) contentAssetPersistence.HandbookSubjects.Add(item);
await dbContext.SaveChangesAsync(cancellationToken);
await unitOfWork.SaveChangesAsync(cancellationToken);
return new ContentManagementResult<HandbookSubject>(item);
}
@@ -92,7 +92,7 @@ internal sealed class HandbookManagementService(DirectContentServiceDependencies
AdminLimitFilter filter,
CancellationToken cancellationToken = default)
{
var query = dbContext.HandbookChapters.AsNoTracking().Where(item => item.TenantId == actor.TenantId);
var query = contentAssetPersistence.HandbookChapters.AsNoTracking().Where(item => item.TenantId == actor.TenantId);
if (filter.SubjectId.HasValue) query = query.Where(item => item.SubjectId == filter.SubjectId.Value);
if (filter.EntryId.HasValue) query = query.Where(item => item.EntryId == filter.EntryId.Value);
@@ -129,7 +129,7 @@ internal sealed class HandbookManagementService(DirectContentServiceDependencies
await AssertReferenceAsync<ContentNode>(actor.TenantId, command.ContentNodeId, "node_not_found",
cancellationToken);
var item = await ResolveByIdOrLegacyAsync(dbContext.HandbookChapters, actor.TenantId, command.Id,
var item = await ResolveByIdOrLegacyAsync(contentAssetPersistence.HandbookChapters, actor.TenantId, command.Id,
command.LegacyId, cancellationToken);
var isNew = item is null;
item ??= new HandbookChapter { Id = command.Id ?? Guid.NewGuid(), TenantId = actor.TenantId };
@@ -148,9 +148,9 @@ internal sealed class HandbookManagementService(DirectContentServiceDependencies
item.SortOrder = command.Order ?? item.SortOrder;
item.IsActive = command.IsActive ?? item.IsActive;
item.Metadata = JsonObjectOrDefault(command.Metadata);
if (isNew) dbContext.HandbookChapters.Add(item);
if (isNew) contentAssetPersistence.HandbookChapters.Add(item);
await dbContext.SaveChangesAsync(cancellationToken);
await unitOfWork.SaveChangesAsync(cancellationToken);
return new ContentManagementResult<HandbookChapter>(item);
}
@@ -159,7 +159,7 @@ internal sealed class HandbookManagementService(DirectContentServiceDependencies
AdminLimitFilter filter,
CancellationToken cancellationToken = default)
{
var query = dbContext.HandbookEntries.AsNoTracking().Where(item => item.TenantId == actor.TenantId);
var query = contentAssetPersistence.HandbookEntries.AsNoTracking().Where(item => item.TenantId == actor.TenantId);
if (filter.ChapterId.HasValue) query = query.Where(item => item.ChapterId == filter.ChapterId.Value);
if (filter.EntryId.HasValue) query = query.Where(item => item.EntryId == filter.EntryId.Value);
@@ -196,7 +196,7 @@ internal sealed class HandbookManagementService(DirectContentServiceDependencies
await AssertReferenceAsync<ContentNode>(actor.TenantId, command.ContentNodeId, "node_not_found",
cancellationToken);
var item = await ResolveByIdOrLegacyAsync(dbContext.HandbookEntries, actor.TenantId, command.Id,
var item = await ResolveByIdOrLegacyAsync(contentAssetPersistence.HandbookEntries, actor.TenantId, command.Id,
command.LegacyId, cancellationToken);
var isNew = item is null;
item ??= new HandbookEntry { Id = command.Id ?? Guid.NewGuid(), TenantId = actor.TenantId };
@@ -217,9 +217,9 @@ internal sealed class HandbookManagementService(DirectContentServiceDependencies
item.SortOrder = command.Order ?? item.SortOrder;
item.IsActive = command.IsActive ?? item.IsActive;
item.Metadata = JsonObjectOrDefault(command.Metadata);
if (isNew) dbContext.HandbookEntries.Add(item);
if (isNew) contentAssetPersistence.HandbookEntries.Add(item);
await dbContext.SaveChangesAsync(cancellationToken);
await unitOfWork.SaveChangesAsync(cancellationToken);
return new ContentManagementResult<HandbookEntry>(item);
}
}