Files
cobol-java-v3/detailed-design-docs/design_ZAN03CHK.md
T
hangshuo652 b94757d9df feat: V3系统评审问题修复
1. 场景价值与技术合理性修复:
   - 补充docs/SCENE_VALUE.md(业务背景、痛点分析、用户场景、竞品对比、价值量化)
   - 添加用户操作流程图(Mermaid)
   - 添加3个真实业务案例量化数据

2. 演示与文档修复:
   - 创建docs/API.md(完整API文档)
   - 创建docs/QUICKSTART.md(5分钟快速入门指南)

3. AI使用日志修复:
   - 更新AGENTS.md,添加强制自动执行的AI使用日志记录指令
   - 在_AI_USAGE_LOG.md末尾添加范式执行统计

4. 安全性修复:
   - 在agents/llm.py中添加输入过滤(防Prompt注入)
   - 添加输出验证、速率限制、详细日志

5. 架构设计修复:
   - 创建tools/registry.py工具注册表
   - 修改orchestrator.py和orchestrator_db.py使用注册表动态获取运行器

6. 开发范式修复:
   - 在_AI_USAGE_LOG.md末尾添加范式执行统计
2026-08-29 13:23:28 +08:00

5.0 KiB
Raw Blame History

詳細設計書

基本情報

# 項目 内容
1 システム名 残業統計管理システム
2 プログラムID ZAN03CHK
3 プログラム名 打刻時間照合処理
4 PGMタイプ メイン
5 PGMパターン マッチング(N:1)
6 機能概要 OVT-NODUPとPUNCH-SORTEDを突合し申請時間帯の照合を行う。
7 申請時間帯が出勤〜退勤の範囲内かを確認する。
8 申請日が休日かを判定しOVT-TYPEを付加する。

※PGMタイプ:メイン、サブ ※PGMパターン:マッチング(1:1、1:N、N:1、M:N)、レイアウト編集のみ(GETPUT)、振り分け(IF文、EVALUATE文)、キーブレイク(集計、集約、集計・集約の以外)、DB更新

前提条件

NO 対象ファイル 条件
1 OVT-NODUP 社員番号>日付で昇順ソート済み
2 PUNCH-SORTED 社員番号>日付で昇順ソート済み

使用ファイル一覧

NO 使用ファイル/DB名 識別子 DD名 I/O COPY群 形式 ブロック レコード長 媒体 備考
1 OVT-NODUP R01 ZAN03R01 I ZAN01REC FB 80 PS
2 PUNCH-SORTED R02 ZAN03R02 I 自前(80B) FB 80 PS
3 HOLIDAY-FILE R03 ZAN03R03 I 自前(80B) FB 80 PS 休日カレンダー
4 OVT-CHECKED W01 ZAN03W01 O ZAN01REC FB 80 PS
5 ERROR-LOG W02 ZAN03W02 O ZAN05REC VB 200 PS

キー項目一覧

NO ファイル名 ソート条件(キー項目) キー条件(マッチング/キーブレイク)
1 OVT-NODUP EMP-ID>APPL-DATE(昇順) EMP-ID>APPL-DATE
2 PUNCH-SORTED EMP-ID>DATE(昇順) EMP-ID>DATE

使用モジュール一覧

NO 機能 プログラムID 使用COPY名
1 メッセージ編集出力SUB SUB02MSG ZANMSGAC
2 ABEND処理SUB SUB03END ZANENDAC

※ ZAN03CHKはSUB01DATを使用しない。日付取得は不要のためFUNCTION CURRENT-DATEも使用しない。


処理詳細

1.初期処理(1000ITTSOR
  1-1.開始メッセージ出力
    【メッセージ編集】
    メッセージ番号:1(開始メッセージ)
  1-2.コンパイル日時出力
    【メッセージ編集】
    メッセージ番号:33(コンパイル日時)
    PARM1:コンパイル日時
    PARM2'COMPILED'
  1-3.ワークエリアの初期化
   1-4.使用ファイルのオープン
  1-6.HOLIDAY-FILEを全件読込しHOLIDAY-TABLEに設定する。(1300HOLIDAYSOR)
  1-7.R01を読み込む。(1100R01INNSOR)(1回目)
  1-8.R02を読み込む。(1200R02INNSOR)(1回目)

2.主処理(2000MAJSOR)(R01を全て読み終えるまで下記を繰り返す)
  2-1.R01キーとR02キーを比較
    2-1-1.R01キー < R02キー(打刻データなし)
      ERROR-LOGにエラー出力する(エラーカテゴリ03)。(2010NOMATCHSOR)
     2-1-2.R01キー = R02キー(マッチ)
       時間範囲チェックを実施する。(2020MATCHSOR)
      2-1-2-1.開始時刻>=出勤時刻 かつ 終了時刻<=退勤時刻 → 通過
        OVT-TYPEを設定しW01に出力する。(2200SETOVTSOR)
      2-1-2-2.範囲外 → ERROR-LOGに出力(エラーカテゴリ03
    2-1-3.R01キー > R02キー(R02スキップ)
      R02を1件読み進める。(1200R02INNSOR)

3.終了処理(3000STPSOR
  3-1.入出力ファイルのクローズ
  3-2.入出力件数出力メッセージ出力
    【入力メッセージ編集】
    メッセージ番号:6(入力件数メッセージ)
    PARM1:当該入力ファイルのDD名
    PARM2:当該入力ファイルの件数
    【出力メッセージ編集】
    メッセージ番号:7(出力件数メッセージ)
    PARM1:当該出力ファイルのDD名
    PARM2:当該出力ファイルの件数
  3-3.終了メッセージ出力
    【メッセージ編集】
    メッセージ番号:2(終了メッセージ)

出力レコード定義

出力ファイル1W01/OVT-CHECKED

No 項目名 設定元 備考
1 APPL-ID R01.同項目を設定
2 EMP-ID R01.同項目を設定
3 APPL-DATE R01.同項目を設定
4 START-TIME R01.同項目を設定
5 END-TIME R01.同項目を設定
6 STATUS R01.同項目を設定
7 OVT-TYPE 2200SETOVTSORで設定 W:平日/H:休日
8 FILLER R01.同項目を設定

出力ファイル2W02/ERROR-LOG

No 項目名 設定元 備考
1 ERR-CATEGORY 03で固定 打刻不突合
2 ERR-DETAIL STRINGで編集 社員番号と日付を編集