fix: address Copilot review comments on PR #739
- query_sanitizer: require matching quote pair in _strip_wrapping_quotes - query_sanitizer: re-check MIN_QUERY_LENGTH after trim in tail_sentence path - migrate: neutral confirmation message accurate for both migrate and repair - cli: os.path.normpath instead of rstrip to handle '/' root edge case
This commit is contained in:
+1
-1
@@ -225,7 +225,7 @@ def cmd_repair(args):
|
|||||||
print(f" Extracted {len(all_ids)} drawers")
|
print(f" Extracted {len(all_ids)} drawers")
|
||||||
|
|
||||||
# Backup and rebuild
|
# Backup and rebuild
|
||||||
palace_path = palace_path.rstrip(os.sep)
|
palace_path = os.path.normpath(palace_path)
|
||||||
backup_path = palace_path + ".backup"
|
backup_path = palace_path + ".backup"
|
||||||
if os.path.exists(backup_path):
|
if os.path.exists(backup_path):
|
||||||
if not contains_palace_database(backup_path):
|
if not contains_palace_database(backup_path):
|
||||||
|
|||||||
@@ -117,7 +117,7 @@ def confirm_destructive_action(
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
print(f"\n {operation_name} will replace data in: {palace_path}")
|
print(f"\n {operation_name} will replace data in: {palace_path}")
|
||||||
print(" A backup will be created first, but the original directory will be deleted.")
|
print(" A backup will be created first, then the palace will be rebuilt.")
|
||||||
try:
|
try:
|
||||||
answer = input(" Continue? [y/N]: ").strip().lower()
|
answer = input(" Continue? [y/N]: ").strip().lower()
|
||||||
except EOFError:
|
except EOFError:
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ def sanitize_query(raw_query: str) -> dict:
|
|||||||
def _strip_wrapping_quotes(candidate: str) -> str:
|
def _strip_wrapping_quotes(candidate: str) -> str:
|
||||||
candidate = candidate.strip()
|
candidate = candidate.strip()
|
||||||
while (
|
while (
|
||||||
len(candidate) >= 2 and candidate[:1] in QUOTE_CHARS and candidate[-1:] in QUOTE_CHARS
|
len(candidate) >= 2 and candidate[:1] in QUOTE_CHARS and candidate[:1] == candidate[-1:]
|
||||||
):
|
):
|
||||||
candidate = candidate[1:-1].strip()
|
candidate = candidate[1:-1].strip()
|
||||||
if not candidate:
|
if not candidate:
|
||||||
@@ -158,6 +158,8 @@ def sanitize_query(raw_query: str) -> dict:
|
|||||||
seg = seg.strip()
|
seg = seg.strip()
|
||||||
if len(seg) >= MIN_QUERY_LENGTH:
|
if len(seg) >= MIN_QUERY_LENGTH:
|
||||||
candidate = _trim_candidate(seg)
|
candidate = _trim_candidate(seg)
|
||||||
|
if len(candidate) < MIN_QUERY_LENGTH:
|
||||||
|
continue
|
||||||
logger.warning(
|
logger.warning(
|
||||||
"Query sanitized: %d → %d chars (method=tail_sentence)",
|
"Query sanitized: %d → %d chars (method=tail_sentence)",
|
||||||
original_length,
|
original_length,
|
||||||
|
|||||||
Reference in New Issue
Block a user