Prechádzať zdrojové kódy

API 清单按模块拆分为四个 sheet

- 原单 sheet 按 module 拆为 admin/store/api/timer 四个 sheet(24 + 151 + 74 + 4 = 253 行)
- 表头统一深蓝底白字、冻结首行、自动筛选、按内容调整列宽
- 原始文件备份到 backup/API清单-原始.xlsx
- 新增 tools/split_api_list.py,清单更新后可重跑
tanlie 5 hodín pred
rodič
commit
cb14ba17cd
3 zmenil súbory, kde vykonal 79 pridanie a 0 odobranie
  1. BIN
      API清单.xlsx
  2. BIN
      backup/API清单-原始.xlsx
  3. 79 0
      tools/split_api_list.py

BIN
API清单.xlsx


BIN
backup/API清单-原始.xlsx


+ 79 - 0
tools/split_api_list.py

@@ -0,0 +1,79 @@
+# -*- coding: utf-8 -*-
+"""把 API清单.xlsx 按 module 拆成四个 sheet(admin / store / api / timer)。
+
+- 保留原 9 列与行序;
+- 表头加粗、冻结首行、自动筛选、列宽与自动换行;
+- 原文件先备份到 backup/API清单-原始.xlsx。
+"""
+import shutil
+from pathlib import Path
+
+import openpyxl
+from openpyxl.styles import Alignment, Border, Font, PatternFill, Side
+from openpyxl.utils import get_column_letter
+
+ROOT = Path(__file__).resolve().parents[1]
+SRC = ROOT / "API清单.xlsx"
+BACKUP = ROOT / "backup" / "API清单-原始.xlsx"
+
+SHEETS = [("admin", "管理端"), ("store", "商家端"), ("api", "客户端"), ("timer", "定时任务")]
+WIDTHS = [10, 18, 18, 16, 24, 44, 18, 26, 8]
+
+HEAD_FILL = PatternFill("solid", fgColor="1F3864")
+HEAD_FONT = Font(name="微软雅黑", size=10, bold=True, color="FFFFFF")
+BODY_FONT = Font(name="微软雅黑", size=10)
+THIN = Side(style="thin", color="D9D9D9")
+BORDER = Border(left=THIN, right=THIN, top=THIN, bottom=THIN)
+
+
+def main():
+    src_wb = openpyxl.load_workbook(SRC)
+    src_ws = src_wb["API清单"]
+    rows = list(src_ws.iter_rows(values_only=True))
+    header, data = rows[0], [r for r in rows[1:] if any(v is not None for v in r)]
+
+    BACKUP.parent.mkdir(parents=True, exist_ok=True)
+    shutil.copy2(SRC, BACKUP)
+
+    wb = openpyxl.Workbook()
+    wb.remove(wb.active)
+
+    for module, label in SHEETS:
+        subset = [r for r in data if r[0] == module]
+        ws = wb.create_sheet("%s-%s" % (module, label))
+        ws.append(header)
+        for r in subset:
+            ws.append(list(r))
+
+        for c in range(1, len(header) + 1):
+            cell = ws.cell(row=1, column=c)
+            cell.fill = HEAD_FILL
+            cell.font = HEAD_FONT
+            cell.alignment = Alignment(horizontal="center", vertical="center")
+            cell.border = BORDER
+            ws.column_dimensions[get_column_letter(c)].width = WIDTHS[c - 1]
+        ws.row_dimensions[1].height = 24
+
+        for row in ws.iter_rows(min_row=2, max_row=ws.max_row, max_col=len(header)):
+            for cell in row:
+                cell.font = BODY_FONT
+                cell.border = BORDER
+                col = cell.column
+                if col in (7, 8):
+                    cell.alignment = Alignment(vertical="top", wrap_text=True)
+                elif col == 9:
+                    cell.alignment = Alignment(horizontal="center", vertical="top")
+                else:
+                    cell.alignment = Alignment(vertical="center")
+
+        ws.freeze_panes = "A2"
+        ws.auto_filter.ref = "A1:%s%d" % (get_column_letter(len(header)), max(ws.max_row, 1))
+        print("%-14s %d 条" % (ws.title, len(subset)))
+
+    wb.save(SRC)
+    print("已保存:", SRC)
+    print("原文件备份:", BACKUP)
+
+
+if __name__ == "__main__":
+    main()