Product content quality checks

Updated 2026-09-05

Structural validity کو product meaning سے الگ کریں۔ Local 40-row Japanese اور German case میں field checks pass ہوئیں مگر AI review نے Japanese wording درست کی۔

Generation سے پہلے quality contract define کریں

ہر field کے لیے acceptance rules لکھیں۔ Identity اور revision fields source سے match ہوں۔ Editable text requested locale، required information اور destination format کا احترام کرے۔ Claims کو supporting evidence چاہیے۔ Single pass یا fail label یہ نہیں سمجھاتی کہ product کیوں block ہوئی۔

Machine-checkable defects کو editorial judgments سے الگ رکھیں۔ Missing text اور identifier drift deterministic طور پر localize ہو سکتے ہیں۔ Translation benefit کو overstate کرتی ہے یا نہیں، اس کے لیے context اور qualified review چاہیے۔ ہر issue اس شخص یا system تک پہنچائیں جو اسے resolve کر سکتا ہے، اور result candidate revision کے ساتھ رکھیں۔

CheckUseful evidenceFollow-up review
Identity اور source revisionExact field comparisonNatural translation
Protected valuesTyped scalar equalityCorrect source specification
Markup اور placeholdersParser اور token countsAccurate product claims
Claim reviewAssertion-to-source mappingStore import success
Destination read-backApproved-versus-stored comparisonCommercial performance

Assembly کے بعد protected values compare کریں

صرف permitted text fields generate کریں، پھر source سے copied protected values کے ساتھ candidate record assemble کریں۔ Assembled record پر دوسری comparison چلائیں۔ اس سے mapper mistakes اور review کے دوران accidental edits دونوں پکڑی جاتی ہیں۔

Illustrative JavaScript example schema-validated objects اور scalar protected values expect کرتی ہے۔ یہ missing، extra یا changed protected keys اور stale source revision detect کرتی ہے، stable issue codes واپس کرتی ہے۔ Schema اور value validation پہلے رکھیں اور structurally valid candidate کو اس helper کے بعد editorial review دیں۔

function checkProtected(source, candidate) {
  const issues = [];
  if (candidate.sourceRevision !== source.sourceRevision) {
    issues.push({ code: "STALE_SOURCE", field: "sourceRevision" });
  }
  const keys = new Set([
    ...Object.keys(source.protected),
    ...Object.keys(candidate.protected),
  ]);
  for (const field of keys) {
    const hasSource = Object.prototype.hasOwnProperty.call(source.protected, field);
    const hasCandidate = Object.prototype.hasOwnProperty.call(candidate.protected, field);
    if (!hasSource || !hasCandidate ||
        !Object.is(source.protected[field], candidate.protected[field])) {
      issues.push({ code: "PROTECTED_FIELD_CHANGED", field });
    }
  }
  return issues;
}

Number formatting کو values سے الگ رکھیں

Localized number مختلف دکھ سکتی ہے مگر stored quantity وہی ہو سکتی ہے۔ MDN locale-aware presentation کے لیے Intl.NumberFormat document کرتا ہے۔ Formatting authoritative value منتخب ہونے کے بعد apply کریں؛ rendered currency string سے price recreate کرنے کو language model سے نہ کہیں۔

Numeric values کے ساتھ units define کریں، ہر dimension کی unit سمیت۔ Conversion authorized ہو تو deterministic rule استعمال کریں اور original representation رکھیں۔ Sentence میں صرف digits compare نہ کریں: مختلف units کے ساتھ ایک جیسے numbers مختلف products بیان کر سکتے ہیں۔ Missing units approval روکیں جب تک source resolve نہ ہو۔

Placeholder multiplicity اور markup validate کریں

Application کے template parser سے source اور candidate کے placeholder tokens collect کریں۔ صرف names کا set نہیں، counts compare کریں؛ duplicated token sentence یا application توڑ سکتی ہے چاہے ہر original token موجود ہو۔ Format-specific escaping rules destination boundary پر رکھیں۔

نیچے والا چھوٹا check already extracted tokens لیتا ہے۔ یہ universal placeholder regular expression بنانے کی کوشش نہیں کرتا۔ HTML کے لیے document fragment parse کریں اور permitted structure اور links الگ compare کریں۔ WordPress escaping guidance custom rendering کے لیے relevant ہے، مگر escaping اکیلی intended meaning محفوظ ہونے کا proof نہیں۔

function samePlaceholderCounts(sourceTokens, candidateTokens) {
  const counts = new Map();
  for (const token of sourceTokens) {
    counts.set(token, (counts.get(token) ?? 0) + 1);
  }
  for (const token of candidateTokens) {
    if (!counts.has(token)) return false;
    counts.set(token, counts.get(token) - 1);
  }
  return [...counts.values()].every((count) => count === 0);
}

Case: fields valid، مگر wording correction کی محتاج

Translation agent نے gpt-5.6-luna کو xhigh reasoning کے ساتھ explicitly configure کر کے 20 synthetic products سے 20 Japanese اور 20 German patches بنائیں۔ Deterministic schema، identity اور protected-field checks تمام 40 assembled rows کے لیے pass ہوئیں۔ Price، currency، material اور dimensions source سے copy ہوئے؛ generated patches صرف identified SKU اور locale کے لیے title اور description بدل سکتی تھیں۔

Untouched Japanese patches بھی structural validator pass کرتی ہیں۔ پھر بھی AI review نے نیچے کے دو wording issues پکڑے اور descriptions revise کیں۔ Protected material field check کرنا prose میں material درست بیان ہونے کا proof نہیں۔ ہر consequential assertion کو schema green ہونے کے بعد بھی source سے compare کریں۔

Local synthetic-product review report کا screenshot جس میں schema یا identity violations zero، native-speaker اور merchant review pending، اور corrected DEMO-003 draft visible ہے۔
Luna xhigh case کی local synthetic-catalog review report۔ تمام 40 rows نے recorded schema اور identity checks pass کیں؛ Japanese AI-review corrections کے بعد semantic approval ابھی pending ہے۔
Actual Japanese drafts میں changes کی English explanations؛ raw-ja.json original output محفوظ رکھتی ہے۔
Synthetic productSource meaningJapanese AI-review correction
DEMO-003: sketch padCardboard backingCorrugated cardboard کا unsupported implication ہٹایا
DEMO-010: storage basketTotal دو side handlesAmbiguity ختم کرنے کے لیے total handle count واضح کیا

Review export اور import دونوں test کریں

OWASP spreadsheet formula injection اور مختلف consumers میں safety transformations کے فرق کو document کرتا ہے۔ Supplier اور generated cells کو untrusted سمجھیں۔ Actual spreadsheet tool کے لیے reviewed serialization policy استعمال کریں اور saved artifact inspect کریں، صرف in-memory table نہیں۔

Machine imports کو review files سے الگ رکھیں۔ Human viewing کے لیے add کیا گیا prefix import کے دوران identifier یا public description خاموشی سے نہ بدلے۔ Encoding، quote handling اور expected row identities parser سے validate کریں۔ Untouched source رکھیں تاکہ spreadsheet editor کی changes identify اور correct ہو سکیں۔

Approval کو exact candidate سے bind کریں

Factual approval اور language approval کے ساتھ candidate revision یا hash store کریں۔ بعد کی ہر edit متعلقہ approval invalidate کرے جب تک review نہ ہو۔ Final publisher current source revision بھی compare کرے، کیونکہ product specification بدلنے کے بعد unchanged translation stale ہو سکتی ہے۔

Case artifacts میں corrected Japanese patches اور German patches review_status: unreviewed rows میں assemble ہوتے ہیں۔ دونوں reports translation_semantic_review: pending رکھتی ہیں۔ AI-assisted correction revision step ہے، native-speaker یا merchant sign-off نہیں۔ Raw اور revised candidates محفوظ کریں، پھر exact import text کو مناسب reviewer سے approve کرائیں۔

Checks reproduce کریں اور scope واضح رکھیں

Local case test source-field preservation، duplicate SKU، missing SKU اور forbidden price override exercise کرتی ہے۔ Saved Japanese اور German patches کی read-only reassembly دونوں validated outputs reproduce کرتی ہے۔ Broader catalog کے لیے اپنی placeholder grammar، markup اور revision policy کے checks add کریں؛ اوپر کے helpers الگ examples ہیں، ان 40 rows کا validator نہیں۔

یہ Luna-configured local translation case تھا، Astra یا gateway call اور real store import نہیں ہوا۔ Tool نے API usage، request IDs یا billing expose نہیں کیے؛ دونوں outputs null usage اور cost رکھتی ہیں۔ Structural result کے بعد semantic review کریں اور authorized store adapter کو الگ test کریں۔

node --test examples/commerce-localization-case/case.test.mjs

عمومی سوالات

کیا JSON-valid response پھر بھی import کے لیے unsafe ہو سکتی ہے؟

ہاں۔ Valid syntax identifiers، source freshness، supported fields، accurate claims یا approval ثابت نہیں کرتی۔ ان contracts کو independently validate کریں۔

اگر model انہیں edit نہیں کر سکتی تو protected fields compare کیوں؟

Assembly، mapping اور review stages پھر بھی mistakes لا سکتی ہیں۔ Post-assembly comparison delivery کے لیے تیار اصل record check کرتی ہے۔

کیا allowed words کی list سے claims validate ہو سکتے ہیں؟

Word list کچھ issues flag کر سکتی ہے، مگر assertion کا meaning یا strength ثابت نہیں کرتی۔ Sentence کو product evidence کے خلاف review کریں۔

کیا placeholder names match ہونا کافی ہے؟

Real template parser سے multiplicity بھی compare کریں۔ Repeated یا missing token defect ہو سکتی ہے، چاہے names کا set familiar لگے۔

40-row case نے کیا establish کیا؟

Saved patches structural failures کے بغیر assemble ہوئیں اور source-controlled product fields محفوظ رہے۔ Japanese wording میں دو AI-review corrections پھر بھی درکار تھیں، اور دونوں languages کی semantic approval pending ہے۔