refactor: 🧬️优化查找准确度
This commit is contained in:
parent
3448b0f012
commit
c6bec78165
Binary file not shown.
@ -36,7 +36,7 @@ namespace AIProofread
|
||||
public class Config
|
||||
{
|
||||
public static readonly string APP_NAME = "AI校对王(公告版)";
|
||||
public static readonly string APP_VERSION = "2.2.3";
|
||||
public static readonly string APP_VERSION = "3.1.0";
|
||||
public static bool IS_WPS = false;
|
||||
public static bool UpgradeForcedNotice = false;
|
||||
public static readonly string APP_BASE_DIR = AppDomain.CurrentDomain.BaseDirectory;
|
||||
@ -52,9 +52,9 @@ namespace AIProofread
|
||||
/// <summary>
|
||||
/// 网页访问地址
|
||||
/// </summary>
|
||||
public static string WEB_PATH = AppServer.DEV; //pre-gm-plugin.gachafun.com localhost:5173 gm2-plugin.zverse.group
|
||||
public static string WEB_PATH = AppServer.TEST; //pre-gm-plugin.gachafun.com localhost:5173 gm2-plugin.zverse.group
|
||||
public static bool RUN_IN_DEBUG = true;
|
||||
public static AppEnvironment APP_ENV = AppEnvironment.Dev;
|
||||
public static AppEnvironment APP_ENV = AppEnvironment.Prod;
|
||||
#else
|
||||
public static string WEB_PATH = AppServer.TEST; // gm-plugin.gachafun.com pre-gm-plugin.gachafun.com
|
||||
public static bool RUN_IN_DEBUG = false;
|
||||
|
@ -1,4 +1,5 @@
|
||||
using AIProofread.Controls;
|
||||
using SixLabors.Fonts.Tables.AdvancedTypographic;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
@ -59,5 +60,15 @@ namespace AIProofread
|
||||
Globals.ThisAddIn.SendMessageToWeb("DEBUG-LOG", msg);
|
||||
}
|
||||
}
|
||||
|
||||
public static void Error(string v, Exception e)
|
||||
{
|
||||
Log("ERROR", v + "\n" + e.Message + "\n" + e.StackTrace);
|
||||
}
|
||||
|
||||
internal static void Info(string v)
|
||||
{
|
||||
Log("INFO", v);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1029,5 +1029,22 @@ namespace AIProofread.Model
|
||||
Logger.Log(CurrentDocument.FullName + $" TaskPane visible {PaneVisible} has " + (TaskPane == null ? "null" : "exists"));
|
||||
if (TaskPane == null) CreateTaskPane();
|
||||
}
|
||||
|
||||
public void GlobalCallback(string callbackId, string result)
|
||||
{
|
||||
ProofreadMainControl control = (ProofreadMainControl)TaskPane.Control;
|
||||
try
|
||||
{
|
||||
if (control.web.CoreWebView2 == null)
|
||||
{
|
||||
Thread.Sleep(1000);
|
||||
}
|
||||
control.web.CoreWebView2.ExecuteScriptAsync($"window.__global_callback_function('{callbackId}','{result}');");
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Log("GlobalCallback", "call web global function error \n" + ex.Message + "\n" + callbackId + result);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -142,5 +142,6 @@ namespace AIProofread.Model
|
||||
{
|
||||
documentList.ForEach(d => d.HidePane());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -7,10 +7,10 @@ using System.Security;
|
||||
// 控制。更改这些特性值可修改
|
||||
// 与程序集关联的信息。
|
||||
[assembly: AssemblyTitle("AI校对王(公告版)")]
|
||||
[assembly: AssemblyDescription("AI校对王(公告版) 1.0.0")]
|
||||
[assembly: AssemblyDescription("AI校对王(公告版) 1.1.0")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("果麦文化传媒股份有限公司")]
|
||||
[assembly: AssemblyProduct("AI校对王(公告版) 1.0.0")]
|
||||
[assembly: AssemblyProduct("AI校对王(公告版) 1.1.0")]
|
||||
[assembly: AssemblyCopyright("Copyright © 果麦文化传媒股份有限公司 2025")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
@ -33,6 +33,6 @@ using System.Security;
|
||||
//可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
|
||||
// 方法是按如下所示使用“*”: :
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
[assembly: AssemblyVersion("1.1.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.1.0.0")]
|
||||
|
||||
|
@ -8,19 +8,15 @@ using AIProofread.Controls;
|
||||
using UtilLib;
|
||||
using AIProofread.Model;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading.Tasks;
|
||||
using System.Text;
|
||||
//using CustomTaskPane = Microsoft.Office.Core.CustomTaskPane;
|
||||
//using CustomTaskPane = Microsoft.Office.Tools.CustomTaskPane;
|
||||
//using NPOI.SS.Formula.Functions;
|
||||
|
||||
|
||||
namespace AIProofread
|
||||
{
|
||||
|
||||
public partial class ThisAddIn
|
||||
{
|
||||
|
||||
// LogManager.GetLogger(typeof(ThisAddIn))
|
||||
//public ILog Logger = LogHelper.GetLogger(typeof(ThisAddIn));
|
||||
public static SynchronizationContext FmainThreadContext;
|
||||
|
||||
public string AddinName = " ";
|
||||
@ -98,7 +94,7 @@ namespace AIProofread
|
||||
{
|
||||
if (fromLawQuery == null || fromLawQuery.IsDisposed)
|
||||
{
|
||||
fromLawQuery = new FormWebView(Config.WebPath("laws-query?app_v=101"), 1300, 750);
|
||||
fromLawQuery = new FormWebView(Config.WebPath("laws-query?app_v=101"), 1300,800);
|
||||
}
|
||||
fromLawQuery.Show();
|
||||
// 显示在最前面
|
||||
@ -139,7 +135,7 @@ namespace AIProofread
|
||||
//formCommonsenseDetection.ShowInTaskbar = false;
|
||||
//formCommonsenseDetection.Show();
|
||||
|
||||
Logger.Log("ThisAddIn_Startup IS_WPS --> " + IsWPS);
|
||||
Logger.Log("ThisAddIn_Startup Platform --> " + (IsWPS?"WPS":"WORD"));
|
||||
// 捕获全局异常
|
||||
AppDomain.CurrentDomain.UnhandledException += ProcessApplicationException;
|
||||
System.Windows.Forms.Application.ThreadException += ProcessApplicationFormException;
|
||||
@ -217,7 +213,7 @@ namespace AIProofread
|
||||
// 可能出现另存问题 所以需要更新文件名称
|
||||
var oldName = item.fileName;
|
||||
var currentName = item.CurrentDocument.FullName;
|
||||
if(oldName != currentName)
|
||||
if (oldName != currentName)
|
||||
{
|
||||
item.fileName = currentName;
|
||||
}
|
||||
@ -281,7 +277,7 @@ namespace AIProofread
|
||||
|
||||
private void Application_DocumentBeforeSave(Document originDocument, ref bool SaveAsUI, ref bool Cancel)
|
||||
{
|
||||
Logger.Log("DocumentSave", originDocument.Name + "\r\n");
|
||||
//LogHelper.Log("DocumentSave", originDocument.Name + "\r\n");
|
||||
if (CurrentWordApplication.Documents.Count == 0)
|
||||
{
|
||||
return;
|
||||
@ -317,27 +313,24 @@ namespace AIProofread
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Log("Init WPS Error " + ex.Message);
|
||||
Logger.Log("Init WPS Error ",ex);
|
||||
}
|
||||
}
|
||||
// 如果启用直接有文档打开
|
||||
// 初始化面板
|
||||
try
|
||||
{
|
||||
var docList = CurrentWordApplication.Documents;
|
||||
if(docList.Count > 0)
|
||||
{
|
||||
foreach (Document item in docList)
|
||||
// 默认已经打开了文档 直接初始化
|
||||
if(CurrentWordApplication.Documents.Count > 0){
|
||||
foreach (Document item in CurrentWordApplication.Documents)
|
||||
{
|
||||
Logger.Log("Init Documentinfo ==> " + item.Name);
|
||||
var info = documentList.InitDocument(item);
|
||||
var info = documentList.InitDocument(item);
|
||||
// 直接初始化面板
|
||||
info.CheckPanel();
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Logger.Log("Init Documentinfo Error " + ex.Message);
|
||||
Logger.Error("Initialize documentlist Error ", ex);
|
||||
}
|
||||
string verTextFile = Config.APP_BASE_DIR + Path.GetFileName("app_version.txt");
|
||||
try
|
||||
@ -348,7 +341,6 @@ namespace AIProofread
|
||||
{
|
||||
Logger.Log("Write App Version Error " + ex.Message);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void InitAppByConfig()
|
||||
@ -358,7 +350,7 @@ namespace AIProofread
|
||||
if (File.Exists(Config.CONFIG_FILE))
|
||||
{
|
||||
string content = File.ReadAllText(Config.CONFIG_FILE);
|
||||
Logger.Log("INIT", "Found app.json " + content);
|
||||
//LogHelper.Log("INIT", "Found app.json " + content);
|
||||
if (content == null || content.Length == 0) return;
|
||||
AppConfig config = JsonConvert.DeserializeObject<AppConfig>(content);
|
||||
|
||||
@ -396,10 +388,11 @@ namespace AIProofread
|
||||
ActiveDocument = documentList.SetActiveDocument(CurrentWordApplication.ActiveDocument);
|
||||
ActiveDocument.CheckBtnStatus();
|
||||
CheckDocumentClosed(null, null);
|
||||
if (formCommonsenseDetection != null) {
|
||||
if (formCommonsenseDetection != null)
|
||||
{
|
||||
formCommonsenseDetection.SendMessageToWeb("document-change", null);
|
||||
}
|
||||
Logger.Log("Application_DocumentChange -- " + ActiveDocument.fileName);
|
||||
//LogHelper.Log("Application_DocumentChange -- " + ActiveDocument.fileName + " track is " + ActiveDocument.CurrentDocument.TrackRevisions);
|
||||
}
|
||||
|
||||
public void SetActiveDocument(Document doc)
|
||||
@ -424,8 +417,11 @@ namespace AIProofread
|
||||
/// <param name="Wn"></param>
|
||||
private void Application_WindowActivate(Document activeDoc, Window Wn)
|
||||
{
|
||||
ActiveDocument = documentList.SetActiveDocument(activeDoc);
|
||||
Logger.Log("Application_WindowActivate -- " + ActiveDocument.fileName);
|
||||
if (activeDoc != null && (ActiveDocument == null || activeDoc != ActiveDocument.CurrentDocument))
|
||||
{
|
||||
ActiveDocument = documentList.SetActiveDocument(activeDoc);
|
||||
Logger.Info("Application_WindowActivate -- " + ActiveDocument.fileName);
|
||||
}
|
||||
//// 当前文档添加书签集合
|
||||
//if (!allMarks.ContainsKey(activeDoc))
|
||||
//{
|
||||
@ -462,7 +458,7 @@ namespace AIProofread
|
||||
{
|
||||
doc.HidePane();
|
||||
}
|
||||
Logger.Log("DocumentBeforeClose", currentDoc.FullName);
|
||||
//LogHelper.Log("DocumentBeforeClose", currentDoc.FullName);
|
||||
//if (allMarks.ContainsKey(currentDoc))
|
||||
//{
|
||||
// allMarks.Remove(currentDoc);
|
||||
@ -484,12 +480,12 @@ namespace AIProofread
|
||||
|
||||
private void Application_NewDocument(Document doc)
|
||||
{
|
||||
Logger.Log("NewDocument" + doc.Name);
|
||||
//LogHelper.Log("NewDocument" + doc.Name);
|
||||
}
|
||||
|
||||
private void Application_DocumentOpen(Document doc)
|
||||
{
|
||||
Logger.Log("DocumentOpen " + doc.Name);
|
||||
//LogHelper.Log("DocumentOpen " + doc.Name);
|
||||
}
|
||||
|
||||
|
||||
@ -552,6 +548,11 @@ namespace AIProofread
|
||||
ActiveDocument?.SendMessageToWeb(msg, data);
|
||||
}
|
||||
|
||||
public void GlobalCallback(string callbackId, string result)
|
||||
{
|
||||
ActiveDocument?.GlobalCallback(callbackId, result);
|
||||
}
|
||||
|
||||
// 显示面板
|
||||
public void ShowPanel()
|
||||
{
|
||||
|
@ -391,7 +391,7 @@ namespace AIProofread
|
||||
return bookmark;
|
||||
}
|
||||
|
||||
private static Range FindBySentence(Range paraRange, CorrectContext c, CorrectItem item, Microsoft.Office.Interop.Word.Document document)
|
||||
private static Range FindBySentence(Range paraRange, CorrectContext c, CorrectItem item, Microsoft.Office.Interop.Word.Document document,int prevOffset)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -409,6 +409,7 @@ namespace AIProofread
|
||||
}
|
||||
//int count = 0;
|
||||
var range = document.Range(offset + item.Start, offset + item.End + 1);
|
||||
#region
|
||||
//while (true && count++ < 10)
|
||||
//{
|
||||
// //
|
||||
@ -433,6 +434,7 @@ namespace AIProofread
|
||||
// Logger.Log(dce);
|
||||
// }
|
||||
//}
|
||||
#endregion
|
||||
// 比对原始内容与校对原文是否一致
|
||||
if (range.Text == item.Origin)
|
||||
{
|
||||
@ -442,7 +444,7 @@ namespace AIProofread
|
||||
// 直接找
|
||||
var range1 = document.Range(offset + item.Start, offset + item.End + 1);
|
||||
// 兼容空格的全角与半角
|
||||
if(item.Origin == " " && (range1.Text == " " || range1.Text == " " || range1.Text.Trim().Length == 0))
|
||||
if (item.Origin == " " && (range1.Text == " " || range1.Text == " " || range1.Text.Trim().Length == 0))
|
||||
{
|
||||
return range1;
|
||||
}
|
||||
@ -452,7 +454,7 @@ namespace AIProofread
|
||||
return range1;
|
||||
}
|
||||
// 执行查找
|
||||
return FindTextInRange(sentence, item.Origin);
|
||||
return FindTextInRange(sentence, item.Origin, prevOffset);
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
@ -461,10 +463,15 @@ namespace AIProofread
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Range FindTextInRange(Range range, string searchText)
|
||||
public static Range FindTextInRange(Range range, string searchText,int findStart = -1)
|
||||
{
|
||||
try
|
||||
{
|
||||
// 设置起始位置
|
||||
if (findStart > 0)
|
||||
{
|
||||
range.Start = range.Start + findStart;
|
||||
}
|
||||
Find find = range.Find;
|
||||
if (range.Comments.Count > 0)
|
||||
{
|
||||
@ -477,7 +484,8 @@ namespace AIProofread
|
||||
find.Wrap = WdFindWrap.wdFindContinue;
|
||||
find.Execute();
|
||||
if (find.Found) return range;
|
||||
} catch (Exception) { }
|
||||
}
|
||||
catch (Exception) { }
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -493,7 +501,7 @@ namespace AIProofread
|
||||
//var offset = paraStart + c.SentenceOffset;
|
||||
////var cutLength = Math.Min(c.InsertLen, paraText.Length - offset);
|
||||
|
||||
var originFindRange = FindBySentence(paraRange, c, item, document);
|
||||
var originFindRange = FindBySentence(paraRange, c, item, document, prevOffset);
|
||||
if (originFindRange != null) return originFindRange;
|
||||
|
||||
// 如果是新增 则查找定位
|
||||
@ -616,7 +624,7 @@ namespace AIProofread
|
||||
|
||||
}
|
||||
|
||||
private static NPOI.SS.UserModel.ICell CreateCell(IRow row, int colIndex, IFont font, string text,ICellStyle style = null)
|
||||
private static NPOI.SS.UserModel.ICell CreateCell(IRow row, int colIndex, IFont font, string text, ICellStyle style = null)
|
||||
{
|
||||
var cell = row.CreateCell(colIndex);
|
||||
if (font != null)
|
||||
@ -629,7 +637,7 @@ namespace AIProofread
|
||||
{
|
||||
cell.SetCellValue(text);
|
||||
}
|
||||
if(style != null)
|
||||
if (style != null)
|
||||
{
|
||||
cell.CellStyle = style;
|
||||
|
||||
@ -674,7 +682,7 @@ namespace AIProofread
|
||||
};
|
||||
|
||||
// 设置表头筛选及冻结 2.0.5 2024-12-30修改
|
||||
sheet.CreateFreezePane(0, 1,0,1);
|
||||
sheet.CreateFreezePane(0, 1, 0, 1);
|
||||
sheet.SetAutoFilter(CellRangeAddress.ValueOf("A1:G1"));
|
||||
|
||||
// 设置表头为白色
|
||||
@ -683,13 +691,13 @@ namespace AIProofread
|
||||
headerFont.FontName = "黑体"; // 设置字体
|
||||
headerFont.FontHeightInPoints = 11; // 字体大小
|
||||
var themeColor = new XSSFColor(new byte[] { 214, 170, 105 }); // 首行背景色黑色,字体用主题金色
|
||||
((XSSFFont)headerFont).SetColor(themeColor);
|
||||
((XSSFFont)headerFont).SetColor(themeColor);
|
||||
headerStyle.SetFont(headerFont); // 应用字体
|
||||
|
||||
// 设置背景颜色为黑色
|
||||
headerStyle.FillForegroundColor = HSSFColor.Black.Index; // 设置前景色
|
||||
headerStyle.FillPattern = FillPattern.SolidForeground; // 使用实心填充模式
|
||||
|
||||
|
||||
// 对齐方式
|
||||
headerStyle.VerticalAlignment = VerticalAlignment.Center; // 垂直居中
|
||||
headerStyle.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; // 水平居中
|
||||
@ -848,7 +856,7 @@ namespace AIProofread
|
||||
{
|
||||
tag = "黑名单";
|
||||
}
|
||||
else if(it.Type == "fallen_officers")
|
||||
else if (it.Type == "fallen_officers")
|
||||
{
|
||||
tag = "落马官员";
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user