"""M0 診断の見積り雛形（Excel）。単価と係数を入れると金額が計算される。"""
import pathlib
from openpyxl import Workbook
from openpyxl.styles import Font, PatternFill, Alignment

wbs = [("0-1", "キックオフ", 1.5), ("0-2", "事前資料の読み込み", 2), ("0-3", "ヒアリング（4部門×90分）", 3),
       ("0-4", "接続候補の棚卸しとリスク分類", 2), ("0-5", "7統制の成熟度評価", 2.5), ("0-6", "ギャップ分析とロードマップ", 3),
       ("0-7", "報告書の作成とレビュー", 3), ("0-8", "報告会", 1)]
wb = Workbook(); ws = wb.active; ws.title = "M0 見積り"
ws["A1"] = "M0 エージェント接続レディネス診断 見積り（雛形）"; ws["A1"].font = Font(bold=True, size=14)
ws["A3"] = "人日単価（円）"; ws["B3"] = None; ws["B3"].fill = PatternFill("solid", fgColor="FFF4E0")
ws["C3"] = "← 単価は未決（定義書 第8章）。黄色のセルに入力"
ws["A4"] = "旅費・環境費（円、実費）"; ws["B4"] = 0; ws["B4"].fill = PatternFill("solid", fgColor="FFF4E0")
head = ["#", "作業", "標準人日", "係数", "見積人日", "金額（円）", "増減の理由"]
ws.append([]); ws.append(head)
for c in ws[6]: c.font = Font(bold=True, color="FFFFFF"); c.fill = PatternFill("solid", fgColor="14213D")
for no, name, d in wbs:
    r = ws.max_row + 1
    ws.append([no, name, d, 1.0, f"=C{r}*D{r}", f'=IF($B$3="","",E{r}*$B$3)', ""])
    ws[f"D{r}"].fill = PatternFill("solid", fgColor="FFF4E0")
last = ws.max_row
t = last + 1
ws.append(["", "合計", f"=SUM(C7:C{last})", "", f"=SUM(E7:E{last})", f'=IF($B$3="","",SUM(F7:F{last})+$B$4)', "旅費・環境費を含む"])
for c in ws[t]: c.font = Font(bold=True)
notes = ["増える要因：関係部門が5つ以上（+1〜2人日）、接続候補が20件以上（+2人日）、英語での報告（+1人日）",
         "減る要因：対象業務が1つに決まっている（−2人日）、既存の PoC 設計書が揃っている（−1人日）"]
for n in notes: ws.append([]); ws.append(["", n])
for col, w in zip("ABCDEFG", [8, 34, 10, 8, 10, 14, 30]): ws.column_dimensions[col].width = w
for row in ws.iter_rows(min_row=7, max_row=t):
    row[5].number_format = "#,##0"
out = pathlib.Path(__file__).parent / "proposal" / "m0_estimate.xlsx"
wb.save(out); print(out)
