چیت‌شیت

میزهای کار جریان کاری متنی

Text Workflow Desks

دسته‌بندی ایمیل، استخراج وظایف، بازنویسی متن، گروه‌بندی بازخوردها و نوشتن گزارش تغییرات. هر خروجی منتظر بررسی می‌ماند.

  • ۱۲ بخش
  • کد و دستورها عیناً از دوره‌ی اصلی
فهرست مطالب
  1. آنچه هر میز کار می‌سازد
  2. اجرای هر میز کار
  3. پایپ‌لاین میز صندوق دریافت
  4. حلقه‌ی بررسی جلسه
  5. گزارش تغییرات از یک بازه‌ی Git
  6. توابع پروژه
  7. خط مبنا و گزینه‌ی مدل
  8. پیش‌فرض‌ها و محدودیت‌ها
  9. خطاها و راه‌حل‌ها
  10. قواعد در کد
  11. پرسش‌ها
  12. نکات

آنچه هر میز کار می‌سازد

مفهوم‌ها
میز دسته‌بندی صندوق دریافت
ورودی پوشه‌ی .eml. خروجی index.html، triage.json و پیش‌نویس‌های .eml ارسال‌نشده.
تبدیل یادداشت‌های جلسه به اقدام‌ها
ورودی notes.txt. خروجی actions.json، actions.html و approved.csv.
میز بازنویسی به زبان ساده
ورودی JSON متن. خروجی Markdown پذیرفته‌شده و revision-decisions.json.
برد مضامین بازخورد
ورودی JSONL بازخورد و مضامین. خروجی برد شواهد و پیش‌نویس Issueها.
نویسنده‌ی تغییرات از گیت
ورودی بازه‌ای از Git. خروجی release.md و رسید release.json.
محیط‌های اجرا
پایتون 3.10 برای صندوق دریافت و جلسه. نود 22.18 برای بازنویسی. گو 1.22 برای گزارش تغییرات.

اجرای هر میز کار

دستورها
دستورکاری که انجام می‌دهد
python3 scripts/project_test.py <project> --init <workspace>یک فضای کاری می‌سازد. مرحله‌ی اول ناموفق می‌شود
python3 scripts/project_test.py <project> --all --solution --strictبررسی راه‌حل مرجع
python3 main.py --input ./fixtures --out ./inbox-outputمیز بررسی صندوق دریافت را می‌سازد
python3 cli.py samples/notes.txt --today 2026-09-29 --output actions.json --html actions.html --csv approved.csvاقدام‌ها را پیشنهاد می‌دهد. فقط ردیف‌های تاییدشده را صادر می‌کند
node cli.ts sample.json outputبازنویسی‌ها را مقایسه می‌کند. فایل output/report.html را می‌نویسد
node cli.ts sample.jsonl themes.json outputبازخوردها را در مضامین گروه‌بندی می‌کند
go run .از یک مجموعه‌داده‌ی نمونه دو-commit گزارش تغییرات می‌نویسد

پایپ‌لاین میز صندوق دریافت

معماری
پوشه‌ی .emlحداکثر 1 مگابایت برای هر کدامparse_messageمتن ساده، Message-IDgroup_threadsReferences و In-Reply-Totriageقواعد عبارتی به‌همراه شواهدbuild_draftپاسخ X-Unsentindex.htmlمرتب‌شده بر اساس اولویتtriage.jsonرشته‌گفتگوها و ورودی‌ها

حلقه‌ی بررسی جلسه

گام‌به‌گام
  1. parse_notesخواندن خطوط ACTION owner | due | task همراه با شماره‌ی خط.
  2. proposalsافزودن خطوط NAME will TASK by YYYY-MM-DD به‌صورت پیشنهاد.
  3. validate_actionمقدار "?" برای مسئول یا موعد، needs_owner یا needs_date را اضافه می‌کند.
  4. deduplicateتبدیل حروف مسئول، موعد و وظیفه به کوچک (casefold). merge خطوط مبدأ آن‌ها.
  5. inboxاختصاص شناسه‌ی 16 کاراکتری هگز از SHA-256 به هر اقدام.
  6. Reviewerانتخاب در انتظار، تأییدشده یا ردشده. دانلود decisions.json.
  7. Rerunپرچم --decisions decisions.json فقط اقدام‌های کاملِ تأییدشده را صادر می‌کند.

گزارش تغییرات از یک بازه‌ی Git

کد
bash
cd projects/changelog-writer-from-git/solution
go run . --repo <path> --from <rev> --to HEAD        # بازه‌ی تغییرناپذیر
go run . --input <file>                              # خروجی با جداکننده‌ی NUL
git log --format=%H%x00%s%x00%b%x00 FROM..TO         # فرمت خروجی
go run . --output release.md --receipt release.json  # فایل‌های با قابلیت استفاده مجدد

توابع پروژه

کار و کد
وظیفهکد
طبقه‌بندی یک پیامtriage(message, rules)
نوشتن پاسخ ارسال‌نشدهbuild_draft(message: dict, decision: dict)
انتشار چک‌لیستpublish(actions, today)
سنجش یک پاراگرافmeasures(text:string)
صادر کردن متن پذیرفته‌شدهexportRevisions(comparisons,value?)
تطبیق یک اسپن عبارتیfindEvidence(row: Feedback, phrase: string)
ساخت برد مضامینbuildBoard(rows: Feedback[], themes: Theme[])
رندر یادداشت‌های انتشارRelease(label string, commits []Commit, max int)

خط مبنا و گزینه‌ی مدل

مقایسه
عاملصندوق دریافتجلسهبازنویسیبازخورد
خط مبناقواعد عبارتی صریحخطوط ACTIONجایگزینی‌های عبارتیعبارات کلمه‌ای
گزینه‌ی مدل--provider-urlنداردپیشنهادهای ثبت‌شده--suggest
خروجی مدلmodel-proposals.jsonنداردپیشنهاد نویسندهthemes.proposed.json
دروازه‌ی بررسیهر پیش‌نویس نیاز به بررسی داردتصمیم صریحنویسنده می‌پذیردبررسی قبل از استفاده
هرگز انجام نمی‌دهدارسال پاسخ‌هاثبت وظایفاثبات معناارسال به ردیاب

پیش‌فرض‌ها و محدودیت‌ها

پیش‌فرض‌ها
تنظیمپیش‌فرضیادداشت
Label flagv0.2.0عنوان انتشار
To flagHEADنسخه‌ی پایانی فراگیر
Commits per release1000بیشتر منجر به budget exceeded می‌شود
Inbox `--model`local-modelفقط ارائه‌دهنده‌ی اختیاری
Message size1 MBبه ازای هر فایل .eml
Feedback input2 MBحداکثر 10000 رکورد
Model theme input50رکوردهای بازخورد برای --suggest
Long word8حروف بیشتر طولانی شمرده می‌شوند

خطاها و راه‌حل‌ها

عیب‌یابی
  • "Conflicting duplicate Message-ID"

    علت
    دو فایل شناسه‌ی یکسان دارند
    راه‌حل
    یک نسخه از پیام را نگه دارید
  • دسته‌بندی نامشخص است

    علت
    قواعد تعارض دارند یا هیچ‌کدام مطابقت نمی‌کنند
    راه‌حل
    عبارات را در --rules ویرایش کنید
  • وضعیت متن no-plain-body

    علت
    پیام فقط-HTML
    راه‌حل
    به‌صورت دستی آن را بررسی کنید
  • "unknown or stale action ids"

    علت
    خطوط منبع تغییر کرده‌اند
    راه‌حل
    صندوق دریافت را مجدداً بسازید. دوباره بررسی کنید
  • "cannot approve missing owner or due date"

    علت
    مسئول یا تاریخ موعد "?" است
    راه‌حل
    آن را در یادداشت‌ها پر کنید
  • "Resolve factual issues before accepting"

    علت
    اعداد یا اصطلاحات محافظت‌شده تغییر کرده‌اند
    راه‌حل
    ابتدا پیشنهاد را اصلاح کنید
  • "Provide 1 to 30 themes"

    علت
    فهرست مضامین خالی یا طولانی است
    راه‌حل
    بین 1 تا 30 مضمون نگه دارید
  • "changelog: budget exceeded"

    علت
    بازه بیش از 1000 commit دارد
    راه‌حل
    محدوده‌ی --from و --to را کوچک‌تر کنید

قواعد در کد

مفهوم‌ها
اولویت دسته‌بندی
اقدام 0، نامشخص 1، اطلاعات 2.
عبارات اقدام
please، can you، could you، confirm.
بازنویسی‌ها
"in order to" به "to"، "utilize" به "use"، "prior to" به "before".
تکراری‌ها
مبدأ و متن حروف کوچک NFKC یکسان، یک بار شمرده می‌شوند.
ترتیب مضامین
ابتدا متمایزترین منابع، سپس شناسه.
گروه‌ها
تغییرات ساختارشکن (Breaking changes)، ویژگی‌ها (Features)، رفع نقص‌ها (Fixes)، سایر (Other).
تغییرات ساختارشکن
پانویس BREAKING CHANGE: یا ! بعد از نوع.
بازگردانی
"This reverts commit" با یک شناسه‌ی 40 کاراکتری هگز.

پرسش‌ها

پرسش و پاسخ
آیا میز صندوق دریافت ایمیل ارسال می‌کند؟
خیر. هرگز به صندوق پستی متصل نمی‌شود.
چه چیزی در یادداشت‌ها بدون انتصاب باقی می‌ماند؟
پیشنهادهای خارج از آن دو ساختار نحوی.
آیا بررسی‌های بازنویسی صحت حقایق را اثبات می‌کنند؟
خیر. آن‌ها حفاظ‌های لغوی هستند. نویسنده معنا را بررسی می‌کند.
آیا تعداد منابع تقاضا را می‌سنجد؟
خیر. برچسب‌ها هویت تأییدشده‌ی افراد یا اندازه‌ی بازار نیستند.
گزارش تغییرات از کدام هش پشتیبانی می‌کند؟
شناسه‌های commit از نوع SHA-1. برای SHA-256 نیاز به افزونه است.

نکات

نکته‌ها
  • پیش از اجرای خروجی گرفتن نهایی، نتیجه‌ی مورد انتظار را یادداشت کنید.
  • ورودی را کنار خروجی نگه دارید تا دیگران بتوانند آن را بازتولید کنند.
  • رسید JSON را بخوانید و پیش از یکپارچه‌سازی، یک ورودی جدید را آزمایش کنید.
  • ارائه‌دهندگان راه‌دور به HTTPS نیاز دارند. پروتکل HTTP فقط برای loopback کار می‌کند.
  • فایل integration.go را بعد از مراحل اصلی بخوانید.