diff --git a/RMuseum/Controllers/GanjoorController.cs b/RMuseum/Controllers/GanjoorController.cs
index 356ff519..fabfd1b4 100644
--- a/RMuseum/Controllers/GanjoorController.cs
+++ b/RMuseum/Controllers/GanjoorController.cs
@@ -4464,28 +4464,32 @@ namespace RMuseum.Controllers
///
/// fill couplet summaries using open ai
///
+ ///
+ ///
///
[HttpPut("ai/generate/summaries")]
[Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + SecurableItem.ModifyOperationShortName)]
[ProducesResponseType((int)HttpStatusCode.OK)]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
- public IActionResult OpenAIStartFillingCoupletSummaries()
+ public IActionResult OpenAIStartFillingCoupletSummaries(int startFrom = 0, int count = 0)
{
- _ganjoorService.OpenAIStartFillingCoupletSummaries();
+ _ganjoorService.OpenAIStartFillingCoupletSummaries(startFrom, count);
return Ok();
}
///
/// fill poem summaries using open ai
///
+ ///
+ ///
///
[HttpPut("ai/generate/poem/summaries")]
[Authorize(Policy = RMuseumSecurableItem.GanjoorEntityShortName + ":" + SecurableItem.ModifyOperationShortName)]
[ProducesResponseType((int)HttpStatusCode.OK)]
[ProducesResponseType((int)HttpStatusCode.BadRequest, Type = typeof(string))]
- public IActionResult OpenAIStartFillingPoemSummaries()
+ public IActionResult OpenAIStartFillingPoemSummaries(int startFrom = 0, int count = 0)
{
- _ganjoorService.OpenAIStartFillingPoemSummaries();
+ _ganjoorService.OpenAIStartFillingPoemSummaries(startFrom, count);
return Ok();
}
diff --git a/RMuseum/RMuseum.xml b/RMuseum/RMuseum.xml
index f9437ffb..39b87af8 100644
--- a/RMuseum/RMuseum.xml
+++ b/RMuseum/RMuseum.xml
@@ -2289,16 +2289,20 @@
-
+
fill couplet summaries using open ai
+
+
-
+
fill poem summaries using open ai
+
+
@@ -16985,15 +16989,19 @@
-
+
fill couplet summaries using open ai
+
+
-
+
fill poem summaries using open ai
+
+
@@ -18919,15 +18927,19 @@
number of synched items
-
+
fill couplet summaries using open ai
+
+
-
+
fill poem summaries using open ai
+
+
diff --git a/RMuseum/Services/IGanjoorService.cs b/RMuseum/Services/IGanjoorService.cs
index b5ec9da1..b01281a6 100644
--- a/RMuseum/Services/IGanjoorService.cs
+++ b/RMuseum/Services/IGanjoorService.cs
@@ -1533,13 +1533,17 @@ namespace RMuseum.Services
///
/// fill couplet summaries using open ai
///
- void OpenAIStartFillingCoupletSummaries();
+ ///
+ ///
+ void OpenAIStartFillingCoupletSummaries(int startFrom, int count);
///
/// fill poem summaries using open ai
///
- void OpenAIStartFillingPoemSummaries();
+ ///
+ ///
+ void OpenAIStartFillingPoemSummaries(int startFrom, int count);
}
}
diff --git a/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-OpenAI-CoupletSummaries.cs b/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-OpenAI-CoupletSummaries.cs
index 494739e5..a8c52ea5 100644
--- a/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-OpenAI-CoupletSummaries.cs
+++ b/RMuseum/Services/Implementation/GanjoorService-Partials/GanjoorService-OpenAI-CoupletSummaries.cs
@@ -20,7 +20,9 @@ namespace RMuseum.Services.Implementation
///
/// fill couplet summaries using open ai
///
- public void OpenAIStartFillingCoupletSummaries()
+ ///
+ ///
+ public void OpenAIStartFillingCoupletSummaries(int startFrom, int count)
{
_backgroundTaskQueue.QueueBackgroundWorkItem
(
@@ -29,7 +31,7 @@ namespace RMuseum.Services.Implementation
using (RMuseumDbContext context = new RMuseumDbContext(new DbContextOptions())) //this is long running job, so _context might be already been freed/collected by GC
{
LongRunningJobProgressServiceEF jobProgressServiceEF = new LongRunningJobProgressServiceEF(context);
- var job = (await jobProgressServiceEF.NewJob($"OpenAIFillCoupletSummaries", "Open AI initialization")).Result;
+ var job = (await jobProgressServiceEF.NewJob($"OpenAIFillCoupletSummaries - start: {startFrom} - count: {count}", "Open AI initialization")).Result;
try
{
@@ -41,7 +43,10 @@ namespace RMuseum.Services.Implementation
await jobProgressServiceEF.UpdateJob(job.Id, 0, "Query data");
- var verses = await context.GanjoorVerses.AsNoTracking()
+ var verses =
+ count == 0 ?
+ startFrom == 0 ?
+ await context.GanjoorVerses.AsNoTracking()
.Where(v =>
(
v.VersePosition == VersePosition.Right
@@ -55,7 +60,42 @@ namespace RMuseum.Services.Implementation
&&
string.IsNullOrEmpty(v.CoupletSummary)
)
- .ToListAsync();
+ .ToListAsync()
+ :
+ await context.GanjoorVerses.AsNoTracking()
+ .Where(v =>
+ (
+ v.VersePosition == VersePosition.Right
+ ||
+ v.VersePosition == VersePosition.CenteredVerse1
+ ||
+ v.VersePosition == VersePosition.Paragraph
+ )
+ &&
+ v.CoupletIndex != null
+ &&
+ string.IsNullOrEmpty(v.CoupletSummary)
+ )
+ .Skip(startFrom)
+ .ToListAsync()
+ :
+ await context.GanjoorVerses.AsNoTracking()
+ .Where(v =>
+ (
+ v.VersePosition == VersePosition.Right
+ ||
+ v.VersePosition == VersePosition.CenteredVerse1
+ ||
+ v.VersePosition == VersePosition.Paragraph
+ )
+ &&
+ v.CoupletIndex != null
+ &&
+ string.IsNullOrEmpty(v.CoupletSummary)
+ )
+ .Skip(startFrom).Take(count)
+ .ToListAsync()
+ ;
await jobProgressServiceEF.UpdateJob(job.Id, 0, $"Verse count = {verses.Count}");
for ( var i = 0; i < verses.Count; i++ )
@@ -128,7 +168,9 @@ namespace RMuseum.Services.Implementation
///
/// fill poem summaries using open ai
///
- public void OpenAIStartFillingPoemSummaries()
+ ///
+ ///
+ public void OpenAIStartFillingPoemSummaries(int startFrom, int count)
{
_backgroundTaskQueue.QueueBackgroundWorkItem
(
@@ -137,7 +179,7 @@ namespace RMuseum.Services.Implementation
using (RMuseumDbContext context = new RMuseumDbContext(new DbContextOptions())) //this is long running job, so _context might be already been freed/collected by GC
{
LongRunningJobProgressServiceEF jobProgressServiceEF = new LongRunningJobProgressServiceEF(context);
- var job = (await jobProgressServiceEF.NewJob($"OpenAIStartFillingPoemSummaries", "Open AI initialization")).Result;
+ var job = (await jobProgressServiceEF.NewJob($"OpenAIStartFillingPoemSummaries - start: {startFrom} - count: {count}", "Open AI initialization")).Result;
try
{
@@ -149,10 +191,28 @@ namespace RMuseum.Services.Implementation
await jobProgressServiceEF.UpdateJob(job.Id, 0, "Query data");
- var poems = await context.GanjoorPoems.AsNoTracking()
+ var poems =
+ count == 0 ?
+ startFrom == 0 ?
+ await context.GanjoorPoems.AsNoTracking()
.Where(
p => string.IsNullOrEmpty(p.PoemSummary)
)
+ .ToListAsync()
+ :
+ await context.GanjoorPoems.AsNoTracking()
+ .Where(
+ p => string.IsNullOrEmpty(p.PoemSummary)
+ )
+ .Skip(startFrom)
+ .ToListAsync()
+ :
+ await context.GanjoorPoems.AsNoTracking()
+ .Where(
+ p => string.IsNullOrEmpty(p.PoemSummary)
+ )
+ .Skip(startFrom)
+ .Take(count)
.ToListAsync();
await jobProgressServiceEF.UpdateJob(job.Id, 0, $"Poems count = {poems.Count}");
@@ -162,7 +222,7 @@ namespace RMuseum.Services.Implementation
if (!string.IsNullOrEmpty(poem.PlainText))
{
- await jobProgressServiceEF.UpdateJob(job.Id, i, $"{i} از {poems.Count}");
+ await jobProgressServiceEF.UpdateJob(job.Id, i, $"{i} از {poems.Count} - {poem.FullTitle}");
string command = "به فارسی روان خلاصه کن:";
var completionResult = await openAiService.ChatCompletion.CreateCompletion(new ChatCompletionCreateRequest
{