| name | description | disable-model-invocation |
|---|---|---|
| fp-mtms-version-checklist | Updates the FP-MTMS Version Programs and Functions Checklist Excel on each developer's synced SharePoint folder. Overflow beyond Latest+3 previous versions is appended to the Archive long-table Excel. Use only when the user explicitly invokes this skill or asks to update the FP-MTMS version control checklist, page/program version sheet, function version sheet, or archive. | true |
Maintain the team FP-MTMS System Version Control Checklist: page/program level and function-level version history in a shared SharePoint Excel file.
Keep Excel column headers exactly as in the file (English).
All written cell values must be Traditional Chinese + English (中英對照), using i18n labels where they exist.
Exception — do NOT bilingualize:
Functions in Page&Program column G — Name of Function within
Program (English symbol + source path only; see Column G rule)v1.0.0 2026-07-14)Short labels (subsystem / page names):
批號追溯 / Item Tracing
倉庫管理 / Store Management
Longer prose (purpose, highlights, major changes): Chinese first, then English on the next line. For usage/呼叫來源, keep it on its own line(s) as well:
工單提料執行頁面(/jodetail)。
Job Order Pick Execution page (/jodetail).
使用/呼叫來源:批號追溯(單據深連結開啟已完成提料紀錄)。
Used / called from: Item Tracing (doc deep-link to open completed pick record).
Major Changes (Page col F / history I,L,O and Functions col J / history M,P,S) must also list file + line range + short per-line explanation — see Major Changes: file, lines, explanation below.
Prefer EN/ZH pairs from src/i18n/en/* and src/i18n/zh/* for menu and
feature terms. Enable Excel wrap text when a cell has multiple lines.
Path varies by Windows user / OneDrive sync root. Resolve in this order:
If the user provides a full path, use it.
Else try under the user profile home:
{USERPROFILE}/2Fi Business Solutions Limited/2Fi Business Solutions Limited - FP-MTMS VERSION CONTROL/FP-MTMS Version Programs and Functions Checklist v0.1.xlsx
If missing, search under {USERPROFILE} for
FP-MTMS Version Programs and Functions Checklist v0.1.xlsx (real .xlsx only).
Always confirm the resolved path with the user before writing.
Same folder as the main checklist. Default:
{USERPROFILE}/2Fi Business Solutions Limited/2Fi Business Solutions Limited - FP-MTMS VERSION CONTROL/FP-MTMS Version Programs and Functions Checklist v0.1 - Archive.xlsx
If the user provides an archive path, use it. Confirm both main and archive
paths before writing. Do not edit .url shortcuts or Downloads copies unless
the user explicitly asks.
Use openpyxl to read/write. If either file is locked (PermissionError), ask
the user to close Excel / Excel Online sync lock, then retry.
Never ask the user one question per cell / column.
Instead:
openpyxl and save.If the preview is wrong, adjust and show a revised preview; do not write until approved.
If critical facts are truly unknown (e.g. version number or developer name cannot be inferred), ask at most a short batch of missing items — never walk the sheet column by column.
Before drafting or writing any row:
Page&Program Name (or be included in the same preview as a new page row).
Set Page Ref. No. (B) to that page row’s Ref. No.NEW ROW.Each page or function keeps Latest plus up to 3 previous history slots (1st, 2nd, 3rd). On every new change to an existing row, push history rightward before writing the new Latest:
| Before write | After shift |
|---|---|
| Latest | → 1st previous |
| 1st previous | → 2nd previous |
| 2nd previous | → 3rd previous |
| 3rd previous | → Archive Excel (append long-table row; then clear 3rd on main) |
Then write the new change into Latest (version/date, highlights, Developed By).
If the old 3rd previous slot is empty, skip archive append for that shift.
Treat each “slot” as a triple:
Shift: (D,F,G) → (H,I,J) → (K,L,M) → (N,O,P) then archive old 3rd
(N/O/P) to the Archive Excel long table if filled; clear N/O/P on main; write
new into D/F/G.
Leave identity columns A–C and purpose E unchanged unless the user asked to
change them (purpose may be refreshed if the preview says so).
Shift: (I,J,K) → (L,M,N) → (O,P,Q) → (R,S,T) then archive old 3rd
(R/S/T) to the Archive Excel long table if filled; clear R/S/T on main; write
new into I/J/K.
Leave A–H (Ref, Page Ref. No., subsystem, page, page version/purpose,
function name/highlight) unchanged unless the preview explicitly updates them.
Always show the shift and any archive appends in the preview (old Latest → new 1st, old 3rd → Archive, etc.).
Page Ref. No. (B) on every Functions row must equal the parent row’s
Ref. No. (A) on sheet Page&Program Name.
Rules:
Page Ref. No. = <n> → Page sheet Ref <n> (<page name>).Page sheet columns A–P are unchanged by this field (Page sheet has no Page Ref column).
When a filled 3rd previous is pushed off the main checklist, append one row to the Archive workbook (never overwrite existing archive rows).
Data starts at row 5 (rows 1–3 title/notes, row 4 headers).
Page&Program Name (archive)| Col | Header |
|---|---|
| A | Ref. No. |
| B | Name of Subsystem / Module / Menu Selection |
| C | System Page / Program Name |
| D | Version & Date |
| E | Major Changes Highlights |
| F | Developed By |
| G | Archived At |
| H | Source |
Map from main page row 3rd slot: A←A, B←B, C←C, D←N, E←O, F←P.
Archived At = today’s date (YYYY-MM-DD).
Source = overflow from 3rd previous (unless the user specifies another reason).
Functions in Page&Program (archive)| Col | Header |
|---|---|
| A | Ref. No. |
| B | Page Ref. No. |
| C | Name of Subsystem / Module / Menu Selection |
| D | System Page / Program Name |
| E | Name of Function within Program |
| F | Version & Date |
| G | Major Changes Highlights |
| H | Developed By |
| I | Archived At |
| J | Source |
Map from main functions row 3rd slot:
A←A, B←B (Page Ref. No.), C←C, D←D, E←G, F←R, G←S, H←T.
Archived At / Source same rules as page archive.
Always copy Page Ref. No. so archive rows stay linked to the parent page.
Do not push or invent a Functions-sheet history slot for a commit / release that did not change the symbols listed in column G for that row.
Example: page Latest = v1.0.3 (backend TRF fix). Frontend transfer UI row last changed at v1.0.2 → keep function I = v1.0.2; optional E = v1.0.3; no fake v1.0.3 function history slot.
For every Major Changes Highlights cell written into Excel (Page sheet Latest F and history I/L/O; Functions sheet Latest J and history M/P/S), include concrete code locations from the commit / diff — not only a summary sentence.
Required content (中英對照 for prose; paths/lines stay as-is):
start–end; single line OK). Re-resolve with git show / Read / Grep;
do not guess.Cell layout example:
轉倉出庫批次 ledger 餘額鏈結修正。
TRF stock-out batch ledger balance chaining fix.
StockOutLineService.kt
L1518: ledger 查詢改為 findFirstByItemIdAndDeletedFalseOrderByDateDescIdDesc。
L1518: ledger lookup → findFirstByItemIdAndDeletedFalseOrderByDateDescIdDesc.
L2318–2347 (createStockOutBatch): 同 batch 多行依 runningLedgerBalance 扣帳,不再每次用 onHandQty。
L2318–2347 (createStockOutBatch): chain per-item running ledger balance within a batch instead of onHandQty each line.
StockInLineService.kt
L269 / L312: assignLotNo / assignLotNoForJo 改為 open fun(無邏輯變更)。
L269 / L312: assignLotNo / assignLotNoForJo marked open (no logic change).
Rules:
createStockOutBatch, assignLotNo).InventoryLotLineTable.tsx L508–518: success message by API code).Many rows may change in one invocation (multiple pages and/or functions).
Data starts at row 5 (rows 1–4 are title/headers).
Page&Program Name| Col | Header |
|---|---|
| A | Ref. No. |
| B | Name of Subsystem / Module / Menu Selection |
| C | System Page / Program Name |
| D | Latest Page Version & Date |
| E | Page Purpose Highlights |
| F | Major Changes Highlights |
| G | Developed By |
| H | 1st Previous Page Version & Date |
| I | 1st Major Changes Highlights |
| J | Developed By |
| K | 2nd Previous Page Version & Date |
| L | 2nd Major Changes Highlights |
| M | Developed By |
| N | 3rd Previous Page Version & Date |
| O | 3rd Major Changes Highlights |
| P | Developed By |
Functions in Page&Program| Col | Header |
|---|---|
| A | Ref. No. |
| B | Page Ref. No. |
| C | Name of Subsystem / Module / Menu Selection |
| D | System Page / Program Name |
| E | Latest Page Version & Date |
| F | Page Purpose Highlights |
| G | Name of Function within Program |
| H | Functions Highlight |
| I | Latest Function Version & Date |
| J | Major Changes Highlights |
| K | Developed By |
| L | 1st Previous Page Version & Date |
| M | 1st Major Changes Highlights |
| N | Developed By |
| O | 2nd Previous Page Version & Date |
| P | 2nd Major Changes Highlights |
| Q | Developed By |
| R | 3rd Previous Page Version & Date |
| S | 3rd Major Changes Highlights |
| T | Developed By |
(Main workbook may also show helper note columns such as U Archive; do
not require filling them unless the user asks. Page Ref. No. is the
required parent link.)
Must point at the parent Page&Program Name row’s Ref. No. (A). Required
on every Functions data row (main and archive).
Name of Function within Program (G) must use the real English identifier from code (component / class / function / endpoint name), and state which file(s) it comes from. Do not put only a localized UI label in G.
Format:
<EnglishSymbol> — <repo-relative path>
Examples:
ItemTracingScanBar — src/components/ItemTracing/ItemTracingScanBar.tsxGoodPickExecutionWorkbenchRecord — src/components/DoWorkbench/GoodPickExecutionWorkbenchRecord.tsxIf one checklist function spans multiple primary files, put each
symbol + path on its own new line (do not join with ; on one line):
ItemTracingSummary — src/components/ItemTracing/ItemTracingSummary.tsx
ItemTracingLocations — src/components/ItemTracing/ItemTracingLocations.tsx
When the primary symbol is a service, controller, or other class (not a React page component), G must also name the member function(s) that were added or changed — not only the class name.
Put each class + its methods + its path on its own line (Excel \n,
wrap text). Do not squeeze multiple files onto one line with ; .
Format (one file per line):
<ClassName>.<fun1> / .<fun2> — <path-to-that-file>
Multi-file example:
ItemLotTraceService.trace / .traceLocation — src/main/java/com/ffii/fpsms/modules/stock/service/ItemLotTraceService.kt
InventoryLotLineController.traceLot / .traceLocation — src/main/java/com/ffii/fpsms/modules/stock/web/InventoryLotLineController.kt
PickOrderLifecycleController.getLifecycle / .getLifecycleByCode — src/main/java/.../PickOrderLifecycleController.kt
PickOrderLifecycleService.getLifecycle / .getLifecycleByCode — src/main/java/.../PickOrderLifecycleService.kt
For multi-file component rows, also one path per line:
ItemTracingSummary — src/components/ItemTracing/ItemTracingSummary.tsx
ItemTracingLocations — src/components/ItemTracing/ItemTracingLocations.tsx
Fact-check each listed member function exists in that file (same casing).
If only one method changed, list that one method. Do not cite a class
without its relevant fun / method names when the change is in a
*Service / *Controller (or similar) file.
Functions Highlight (H) and Major Changes (J) must be 中英對照
(Chinese then English on the next line). Prefer i18n terms. Page /
subsystem names (C/D) use 中文 / English.
On Functions in Page&Program, Page Purpose Highlights (F) must include:
Owning page (C) = where the code/feature primarily lives. Usage location = which page(s) invoke, deep-link into, or depend on it.
Examples:
Function lives on 工單提料 but is opened from Item Tracing doc links:
工單提料執行頁面(/jodetail)。
Job Order Pick Execution page (/jodetail).
使用/呼叫來源:批號追溯(單據深連結開啟已完成提料紀錄)。
Used / called from: Item Tracing (doc deep-link to open completed pick record).
Function lives on 提料單 (lifecycle API) but is consumed for tracing:
提料單管理。
Pick Order management.
使用/呼叫來源:批號追溯(追溯流程/單據生命週期查詢)。
Used / called from: Item Tracing (trace flow / document lifecycle query).
Function lives on 成品出倉 but is deep-linked from tracing:
成品出倉(DO Workbench)揀貨與紀錄作業。
DO Workbench pick execution and records.
使用/呼叫來源:批號追溯(單據深連結開啟成品出倉紀錄)。
Used / called from: Item Tracing (doc deep-link to open DO Workbench record).
Function lives on and is only used by the same page (e.g. 批號追溯):
…頁面目的(中文)…
…page purpose (English)…
使用/呼叫來源:本頁(批號追溯 / Item Tracing)。
Used / called from: this page (批號追溯 / Item Tracing).
Put 使用/呼叫來源 (and its English line) on new lines after the page-purpose ZH/EN pair. Do not run usage on the same line as purpose.
When inferring usage, fact-check callers (imports, links, API consumers)
from the change/diff. Do not invent a caller. If usage is only the owning
page, say 本頁(<page>). If multiple callers, list them (i18n names).
Do not leave F as only the generic page blurb when the function was added/changed for another page’s flow (e.g. refs that support 批號追溯 but sit under 工單提料/提料單/成品出倉).
Never invent a symbol or path. For every Functions-sheet row in the preview (new or updated), verify against the real repos:
FPSMS-frontend or FPSMS-backend). Prefer Glob / Read
/ Grep; do not guess.const ItemTracingScanBar,
export default ItemTracingScanBar, open class ItemLotTraceService,
fun traceLot, class PickOrderLifecycleController). Match casing
exactly as in code (CompleteJobOrderRecord, not completeJobOrderRecord).
For service/controller rows, also verify each listed member function
(e.g. trace, traceLocation, getLifecycle) exists in that file.Every line’s symbol must be defined in that line’s file.
Example OK:
ItemTracingSummary — …/ItemTracingSummary.tsx
ItemTracingLocations — …/ItemTracingLocations.tsx
Do not join multiple files with ; on one line.
In the preview, mark verified rows (optional short note), e.g.
G verified: symbol+path OK. If any G failed fact-check, fix before asking
for confirmation.
Show a clear preview, for example:
Excel: <resolved main path>
Archive: <resolved archive path>
Sheet: Functions in Page&Program
Row 12 (UPDATE existing | Ref 7 | Page Ref 3 → 批號追溯 / Item Tracing | Function: ItemTracingFlowGraphSearch — src/components/ItemTracing/ItemTracingFlowGraphSearch.tsx)
History shift:
old Latest (I/J/K) → 1st
old 1st → 2nd
old 2nd → 3rd
old 3rd → ARCHIVE (append)
Archive append (Functions in Page&Program):
A: 7
B: 3
C: 倉庫管理 / Store Management
D: 批號追溯 / Item Tracing
E: ItemTracingFlowGraphSearch — src/components/ItemTracing/ItemTracingFlowGraphSearch.tsx
F: <old 3rd version & date>
G: <old 3rd major changes>
H: <old 3rd developed by>
I: 2026-07-16
J: overflow from 3rd previous
New Latest:
I: v1.2.0 2026-07-14
J: 新增流程圖節點搜尋。
Add flow-graph node search.
ItemTracingFlowGraphSearch.tsx
L42–88: 搜尋框與節點高亮。
L42–88: search box and node highlight.
K: <developer>
Row NEW (append | next Ref 15 | Page Ref 3 → 批號追溯 / Item Tracing | Function: ItemTracingScanBar — src/components/ItemTracing/ItemTracingScanBar.tsx)
A: 15
B: 3
C: 倉庫管理 / Store Management
D: 批號追溯 / Item Tracing
F: …頁面目的(中文)…
…page purpose (English)…
使用/呼叫來源:本頁(批號追溯 / Item Tracing)。
Used / called from: this page (批號追溯 / Item Tracing).
G: ItemTracingScanBar — src/components/ItemTracing/ItemTracingScanBar.tsx
H: 相機掃碼/手動查詢
Camera scan / manual search
...
I/J/K: <new latest>
history slots: empty
Row NEW (… | Page Ref <n> → 工單提料 / Job Order Pick Execution | Function: CompleteJobOrderRecord — …)
B: <page Ref. No.>
D: 工單提料 / Job Order Pick Execution
F: 工單提料執行頁面(/jodetail)。
Job Order Pick Execution page (/jodetail).
使用/呼叫來源:批號追溯(單據深連結)。
Used / called from: Item Tracing (doc deep-link).
G: CompleteJobOrderRecord — src/components/Jodetail/completeJobOrderRecord.tsx
JodetailSearch — src/components/Jodetail/JodetailSearch.tsx
…
Confirm: Is this preview correct? [Yes / No — tell me what to change]
For page-sheet rows, use the same style with D/F/G and H–P history.
openpyxl, append archive rows first (if any), then
apply main shifts + writes; save both workbooks; report sheet names, row
numbers, Ref. Nos., Page Ref. Nos., archive rows appended, and key Latest fields.After the user approves the checklist preview (or as part of the same approved batch), add or update a source comment on every function / component listed in column G for each affected Functions-sheet row.
Must include:
v1.0.02026-07-14Parse column I vX.Y.Z YYYY-MM-DD into version + date.
TypeScript / TSX (JSDoc immediately above the component / export / function):
/** FP-MTMS Version Checklist | Functions Ref. No. 1 | v1.0.0 | 2026-07-14 */
const ItemTracingScanBar: React.FC<ScanBarProps> = (...) => {
Kotlin (KDoc immediately above the fun / class member):
/** FP-MTMS Version Checklist | Functions Ref. No. 7 | v1.0.0 | 2026-07-14 */
open fun trace(...): ItemLotTraceResponse = ...
If a KDoc/JSDoc already exists, prepend or merge this checklist line into it (do not delete useful existing documentation). Prefer keeping the checklist line as the first line of the block:
/**
* FP-MTMS Version Checklist | Functions Ref. No. 7 | v1.0.0 | 2026-07-14
* Lazy-load: returns the full location-scoped trace block...
*/
const ComponentName / export default that matches column G.trace and traceLocation).The Excel preview must also list planned comment updates, e.g.:
Code comments to add/update:
Ref 7 → ItemLotTraceService.trace / .traceLocation (v1.0.0 | 2026-07-14)
Ref 1 → ItemTracingScanBar (v1.0.0 | 2026-07-14)
Only edit comments after preview approval (same gate as Excel write), unless the user explicitly asks to sync comments only.
vX.Y.Z YYYY-MM-DD with today’s date.git config user.name or chat context.中文 / English from i18n EN+ZH.*Service / *Controller class in G without its relevant member
function names (e.g. write ItemLotTraceService.trace / .traceLocation,
not only ItemLotTraceService).url files as if they were workbooks