fix: 完全修復快取資料結構不一致問題和互動式單字查詢功能
- 修復快取API回應中sentenceMeaning大小寫不一致問題 - 完善ClickableTextV2組件對快取資料的屬性讀取相容性 - 新增前端快取狀態顯示(💾 快取結果 / 🤖 AI 分析) - 統一JSON序列化設定,使用camelCase命名策略 - 新增getWordProperty輔助函數,支援大小寫屬性名稱 - 修復單字彈窗中所有屬性的讀取邏輯 - 完善語法修正和詞彙分析的資料格式相容性 - 新增詳細的系統功能分析文檔 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
parent
c0edf93c8a
commit
63b1018d97
|
|
@ -536,8 +536,15 @@ public class AIController : ControllerBase
|
||||||
{
|
{
|
||||||
_logger.LogInformation("Using cached analysis for text hash: {TextHash}", cachedAnalysis.InputTextHash);
|
_logger.LogInformation("Using cached analysis for text hash: {TextHash}", cachedAnalysis.InputTextHash);
|
||||||
|
|
||||||
// 解析快取的分析結果
|
// 解析快取的分析結果 - 使用一致的命名策略
|
||||||
var cachedResult = System.Text.Json.JsonSerializer.Deserialize<object>(cachedAnalysis.AnalysisResult);
|
_logger.LogInformation("Cache raw JSON: {CacheJson}", cachedAnalysis.AnalysisResult);
|
||||||
|
|
||||||
|
var options = new JsonSerializerOptions
|
||||||
|
{
|
||||||
|
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
|
||||||
|
};
|
||||||
|
var cachedResult = System.Text.Json.JsonSerializer.Deserialize<object>(cachedAnalysis.AnalysisResult, options);
|
||||||
|
_logger.LogInformation("Cache deserialized result: {CachedResult}", System.Text.Json.JsonSerializer.Serialize(cachedResult, options));
|
||||||
|
|
||||||
return Ok(new
|
return Ok(new
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -75,8 +75,12 @@ public class AnalysisCacheService : IAnalysisCacheService
|
||||||
|
|
||||||
if (existing != null)
|
if (existing != null)
|
||||||
{
|
{
|
||||||
// 更新現有快取
|
// 更新現有快取 - 使用一致的命名策略
|
||||||
existing.AnalysisResult = JsonSerializer.Serialize(analysisResult);
|
var options = new JsonSerializerOptions
|
||||||
|
{
|
||||||
|
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
|
||||||
|
};
|
||||||
|
existing.AnalysisResult = JsonSerializer.Serialize(analysisResult, options);
|
||||||
existing.ExpiresAt = expiresAt;
|
existing.ExpiresAt = expiresAt;
|
||||||
existing.AccessCount++;
|
existing.AccessCount++;
|
||||||
existing.LastAccessedAt = DateTime.UtcNow;
|
existing.LastAccessedAt = DateTime.UtcNow;
|
||||||
|
|
@ -89,7 +93,10 @@ public class AnalysisCacheService : IAnalysisCacheService
|
||||||
Id = Guid.NewGuid(),
|
Id = Guid.NewGuid(),
|
||||||
InputTextHash = textHash,
|
InputTextHash = textHash,
|
||||||
InputText = inputText,
|
InputText = inputText,
|
||||||
AnalysisResult = JsonSerializer.Serialize(analysisResult),
|
AnalysisResult = JsonSerializer.Serialize(analysisResult, new JsonSerializerOptions
|
||||||
|
{
|
||||||
|
PropertyNamingPolicy = JsonNamingPolicy.CamelCase
|
||||||
|
}),
|
||||||
CreatedAt = DateTime.UtcNow,
|
CreatedAt = DateTime.UtcNow,
|
||||||
ExpiresAt = expiresAt,
|
ExpiresAt = expiresAt,
|
||||||
AccessCount = 1,
|
AccessCount = 1,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue